import { module, test } from "qunit"; import { setupTest } from "ember-qunit"; import MessageCollection from "client-app/models/message-collection"; import sinon from "sinon"; import * as utilities from "client-app/lib/utilities"; module("Unit | Controller | index", function (hooks) { setupTest(hooks); const ajaxStub = sinon.stub(utilities, "ajax"); test("uses search param to filter results", function (assert) { const controller = this.owner.lookup("controller:index"); const messages = MessageCollection.create(); const row1 = { message: "error tomtom", severity: 2, key: "ce1f53b0cc" }; const row2 = { message: "error steaky", severity: 3, key: "b083352825" }; messages.rows.addObjects([row1, row2]); controller.set("model", messages); assert.strictEqual(controller.searchTerm, null, "initial value is null"); assert.deepEqual(controller.model.rows, [row1, row2], "all rows"); ajaxStub.callsFake(async () => ({ search: "tomtom", filter: [5], messages: [], })); controller.set("search", "tomtom"); assert.strictEqual( controller.searchTerm, "tomtom", "search sets search term" ); assert.strictEqual( ajaxStub.firstCall.args[0], "/messages.json", "get messages" ); assert.deepEqual( ajaxStub.firstCall.args[1], { data: { filter: "5", search: "tomtom" }, method: "POST" }, "with correct terms" ); }); test("Creating inline grouping patterns finds the longest matching prefix between selected messages", function (assert) { const controller = this.owner.lookup("controller:index"); const messages = ["error foo tomtom", "error foo steaky", "error foo bar"]; assert.deepEqual( controller.findLongestMatchingPrefix(messages), "error foo " ); }); test("Creating inline grouping patterns can handle special characters", function (assert) { const controller = this.owner.lookup("controller:index"); let messages = [ "error foo!/@ tomtom", "error foo!/@ steaky", "error foo!/@ bar", ]; assert.deepEqual( controller.findLongestMatchingPrefix(messages), "error foo!/@ " ); messages = ["/$home/sam/.r\benv/", "/$home/sam/.r\benv/"]; assert.deepEqual( controller.findLongestMatchingPrefix(messages), "/$home/sam/.r\benv/" ); }); });