import { acceptance } from "helpers/qunit-helpers"; acceptance("Review", { loggedIn: true }); const user = ".reviewable-item[data-reviewable-id=1234]"; QUnit.test("It returns a list of reviewable items", async assert => { await visit("/review"); assert.ok(find(".reviewable-item").length, "has a list of items"); assert.ok(find(user).length); assert.ok( find(`${user}.reviewable-user`).length, "applies a class for the type" ); assert.ok( find(`${user} .reviewable-action.approve`).length, "creates a button for approve" ); assert.ok( find(`${user} .reviewable-action.reject`).length, "creates a button for reject" ); }); QUnit.test("Grouped by topic", async assert => { await visit("/review/topics"); assert.ok( find(".reviewable-topic").length, "it has a list of reviewable topics" ); }); QUnit.test("Settings", async assert => { await visit("/review/settings"); assert.ok(find(".reviewable-score-type").length, "has a list of bonuses"); await fillIn(".reviewable-score-type:eq(0) .field input ", "0.5"); await click(".save-settings"); assert.ok(find(".reviewable-settings .saved").length, "it saved"); }); QUnit.test("Flag related", async assert => { await visit("/review"); assert.ok( find(".reviewable-flagged-post .post-contents .username a[href]").length, "it has a link to the user" ); assert.equal( find(".reviewable-flagged-post .post-body") .html() .trim(), "cooked content" ); assert.equal(find(".reviewable-flagged-post .reviewable-score").length, 2); }); QUnit.test("Flag related", async assert => { await visit("/review/1"); assert.ok( find(".reviewable-flagged-post").length, "it shows the flagged post" ); }); QUnit.test("Clicking the buttons triggers actions", async assert => { await visit("/review"); await click(`${user} .reviewable-action.approve`); assert.equal(find(user).length, 0, "it removes the reviewable on success"); }); QUnit.test("Editing a reviewable", async assert => { const topic = ".reviewable-item[data-reviewable-id=4321]"; await visit("/review"); assert.ok(find(`${topic} .reviewable-action.approve`).length); assert.ok(!find(`${topic} .category-name`).length); assert.equal(find(`${topic} .discourse-tag:eq(0)`).text(), "hello"); assert.equal(find(`${topic} .discourse-tag:eq(1)`).text(), "world"); assert.equal( find(`${topic} .post-body`) .text() .trim(), "existing body" ); await click(`${topic} .reviewable-action.edit`); await click(`${topic} .reviewable-action.save-edit`); assert.ok( find(`${topic} .reviewable-action.approve`).length, "saving without changes is a cancel" ); await click(`${topic} .reviewable-action.edit`); assert.equal( find(`${topic} .reviewable-action.approve`).length, 0, "when editing actions are disabled" ); await fillIn(".editable-field.payload-raw textarea", "new raw contents"); await click(`${topic} .reviewable-action.cancel-edit`); assert.equal( find(`${topic} .post-body`) .text() .trim(), "existing body", "cancelling does not update the value" ); await click(`${topic} .reviewable-action.edit`); let category = selectKit(`${topic} .category-id .select-kit`); await category.expand(); await category.selectRowByValue("6"); let tags = selectKit(`${topic} .payload-tags .mini-tag-chooser`); await tags.expand(); await tags.fillInFilter("monkey"); await tags.keyboard("enter"); await fillIn(".editable-field.payload-raw textarea", "new raw contents"); await click(`${topic} .reviewable-action.save-edit`); assert.equal(find(`${topic} .discourse-tag:eq(0)`).text(), "hello"); assert.equal(find(`${topic} .discourse-tag:eq(1)`).text(), "world"); assert.equal(find(`${topic} .discourse-tag:eq(2)`).text(), "monkey"); assert.equal( find(`${topic} .post-body`) .text() .trim(), "new raw contents" ); assert.equal( find(`${topic} .category-name`) .text() .trim(), "support" ); });