mirror of
https://github.com/discourse/discourse.git
synced 2025-05-22 04:11:12 +08:00
DEV: Modernize chat's component tests (#19577)
1. `test()` and `render()` instead of `componentTest()` 2. Angle brackets 3. `strictEqual()`/`true()`/`false()` assertions This removes all remaining uses of `componentTest` from core
This commit is contained in:
@ -1,6 +1,4 @@
|
||||
import componentTest, {
|
||||
setupRenderingTest,
|
||||
} from "discourse/tests/helpers/component-test";
|
||||
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
|
||||
import pretender from "discourse/tests/helpers/create-pretender";
|
||||
import {
|
||||
count,
|
||||
@ -8,8 +6,8 @@ import {
|
||||
exists,
|
||||
} from "discourse/tests/helpers/qunit-helpers";
|
||||
import hbs from "htmlbars-inline-precompile";
|
||||
import { click, settled, waitFor } from "@ember/test-helpers";
|
||||
import { module } from "qunit";
|
||||
import { click, render, settled, waitFor } from "@ember/test-helpers";
|
||||
import { module, test } from "qunit";
|
||||
import { run } from "@ember/runloop";
|
||||
|
||||
const fakeUpload = {
|
||||
@ -48,116 +46,107 @@ function setupUploadPretender() {
|
||||
module("Discourse Chat | Component | chat-composer-uploads", function (hooks) {
|
||||
setupRenderingTest(hooks);
|
||||
|
||||
componentTest(
|
||||
"loading uploads from an outside source (e.g. draft or editing message)",
|
||||
{
|
||||
template: hbs`{{chat-composer-uploads fileUploadElementId="chat-widget-uploader"}}`,
|
||||
test("loading uploads from an outside source (e.g. draft or editing message)", async function (assert) {
|
||||
await render(hbs`
|
||||
<ChatComposerUploads @fileUploadElementId="chat-widget-uploader" />
|
||||
`);
|
||||
|
||||
async test(assert) {
|
||||
this.appEvents = this.container.lookup("service:appEvents");
|
||||
this.appEvents.trigger("chat-composer:load-uploads", [fakeUpload]);
|
||||
await settled();
|
||||
this.appEvents = this.container.lookup("service:appEvents");
|
||||
this.appEvents.trigger("chat-composer:load-uploads", [fakeUpload]);
|
||||
await settled();
|
||||
|
||||
assert.strictEqual(count(".chat-composer-upload"), 1);
|
||||
assert.strictEqual(exists(".chat-composer-upload"), true);
|
||||
},
|
||||
}
|
||||
);
|
||||
|
||||
componentTest("upload starts and completes", {
|
||||
template: hbs`{{chat-composer-uploads fileUploadElementId="chat-widget-uploader" onUploadChanged=onUploadChanged}}`,
|
||||
|
||||
beforeEach() {
|
||||
setupUploadPretender();
|
||||
this.set("changedUploads", null);
|
||||
this.set("onUploadChanged", (uploads) => {
|
||||
this.set("changedUploads", uploads);
|
||||
});
|
||||
},
|
||||
|
||||
async test(assert) {
|
||||
const done = assert.async();
|
||||
this.appEvents = this.container.lookup("service:appEvents");
|
||||
this.appEvents.on(
|
||||
"upload-mixin:chat-composer-uploader:upload-success",
|
||||
(fileName, upload) => {
|
||||
assert.strictEqual(fileName, "avatar.png");
|
||||
assert.deepEqual(upload, mockUploadResponse);
|
||||
done();
|
||||
}
|
||||
);
|
||||
|
||||
this.appEvents.trigger(
|
||||
"upload-mixin:chat-composer-uploader:add-files",
|
||||
createFile("avatar.png")
|
||||
);
|
||||
|
||||
await waitFor(".chat-composer-upload");
|
||||
assert.strictEqual(count(".chat-composer-upload"), 1);
|
||||
},
|
||||
assert.strictEqual(count(".chat-composer-upload"), 1);
|
||||
assert.strictEqual(exists(".chat-composer-upload"), true);
|
||||
});
|
||||
|
||||
componentTest("removing a completed upload", {
|
||||
template: hbs`{{chat-composer-uploads fileUploadElementId="chat-widget-uploader" onUploadChanged=onUploadChanged}}`,
|
||||
test("upload starts and completes", async function (assert) {
|
||||
setupUploadPretender();
|
||||
this.set("changedUploads", null);
|
||||
this.set("onUploadChanged", (uploads) => {
|
||||
this.set("changedUploads", uploads);
|
||||
});
|
||||
|
||||
beforeEach() {
|
||||
this.set("changedUploads", null);
|
||||
this.set("onUploadChanged", (uploads) => {
|
||||
this.set("changedUploads", uploads);
|
||||
});
|
||||
},
|
||||
await render(hbs`
|
||||
<ChatComposerUploads @fileUploadElementId="chat-widget-uploader" @onUploadChanged={{this.onUploadChanged}} />
|
||||
`);
|
||||
|
||||
async test(assert) {
|
||||
this.appEvents = this.container.lookup("service:appEvents");
|
||||
run(() =>
|
||||
this.appEvents.trigger("chat-composer:load-uploads", [fakeUpload])
|
||||
);
|
||||
assert.strictEqual(count(".chat-composer-upload"), 1);
|
||||
const done = assert.async();
|
||||
this.appEvents = this.container.lookup("service:appEvents");
|
||||
this.appEvents.on(
|
||||
"upload-mixin:chat-composer-uploader:upload-success",
|
||||
(fileName, upload) => {
|
||||
assert.strictEqual(fileName, "avatar.png");
|
||||
assert.deepEqual(upload, mockUploadResponse);
|
||||
done();
|
||||
}
|
||||
);
|
||||
|
||||
await click(".remove-upload");
|
||||
assert.strictEqual(count(".chat-composer-upload"), 0);
|
||||
},
|
||||
this.appEvents.trigger(
|
||||
"upload-mixin:chat-composer-uploader:add-files",
|
||||
createFile("avatar.png")
|
||||
);
|
||||
|
||||
await waitFor(".chat-composer-upload");
|
||||
assert.strictEqual(count(".chat-composer-upload"), 1);
|
||||
});
|
||||
|
||||
componentTest("cancelling in progress upload", {
|
||||
template: hbs`{{chat-composer-uploads fileUploadElementId="chat-widget-uploader" onUploadChanged=onUploadChanged}}`,
|
||||
test("removing a completed upload", async function (assert) {
|
||||
this.set("changedUploads", null);
|
||||
this.set("onUploadChanged", (uploads) => {
|
||||
this.set("changedUploads", uploads);
|
||||
});
|
||||
|
||||
beforeEach() {
|
||||
setupUploadPretender();
|
||||
await render(hbs`
|
||||
<ChatComposerUploads @fileUploadElementId="chat-widget-uploader" @onUploadChanged={{this.onUploadChanged}} />
|
||||
`);
|
||||
|
||||
this.set("changedUploads", null);
|
||||
this.set("onUploadChanged", (uploads) => {
|
||||
this.set("changedUploads", uploads);
|
||||
});
|
||||
},
|
||||
this.appEvents = this.container.lookup("service:appEvents");
|
||||
run(() =>
|
||||
this.appEvents.trigger("chat-composer:load-uploads", [fakeUpload])
|
||||
);
|
||||
assert.strictEqual(count(".chat-composer-upload"), 1);
|
||||
|
||||
async test(assert) {
|
||||
const image = createFile("avatar.png");
|
||||
const done = assert.async();
|
||||
this.appEvents = this.container.lookup("service:appEvents");
|
||||
await click(".remove-upload");
|
||||
assert.strictEqual(count(".chat-composer-upload"), 0);
|
||||
});
|
||||
|
||||
this.appEvents.on(
|
||||
`upload-mixin:chat-composer-uploader:upload-cancelled`,
|
||||
(fileId) => {
|
||||
assert.strictEqual(
|
||||
fileId.includes("uppy-avatar/"),
|
||||
true,
|
||||
"upload was cancelled"
|
||||
);
|
||||
done();
|
||||
}
|
||||
);
|
||||
test("cancelling in progress upload", async function (assert) {
|
||||
setupUploadPretender();
|
||||
|
||||
this.appEvents.trigger(
|
||||
"upload-mixin:chat-composer-uploader:add-files",
|
||||
image
|
||||
);
|
||||
this.set("changedUploads", null);
|
||||
this.set("onUploadChanged", (uploads) => {
|
||||
this.set("changedUploads", uploads);
|
||||
});
|
||||
|
||||
await waitFor(".chat-composer-upload");
|
||||
assert.strictEqual(count(".chat-composer-upload"), 1);
|
||||
await render(hbs`
|
||||
<ChatComposerUploads @fileUploadElementId="chat-widget-uploader" @onUploadChanged={{this.onUploadChanged}} />
|
||||
`);
|
||||
|
||||
await click(".remove-upload");
|
||||
assert.strictEqual(count(".chat-composer-upload"), 0);
|
||||
},
|
||||
const image = createFile("avatar.png");
|
||||
const done = assert.async();
|
||||
this.appEvents = this.container.lookup("service:appEvents");
|
||||
|
||||
this.appEvents.on(
|
||||
`upload-mixin:chat-composer-uploader:upload-cancelled`,
|
||||
(fileId) => {
|
||||
assert.strictEqual(
|
||||
fileId.includes("uppy-avatar/"),
|
||||
true,
|
||||
"upload was cancelled"
|
||||
);
|
||||
done();
|
||||
}
|
||||
);
|
||||
|
||||
this.appEvents.trigger(
|
||||
"upload-mixin:chat-composer-uploader:add-files",
|
||||
image
|
||||
);
|
||||
|
||||
await waitFor(".chat-composer-upload");
|
||||
assert.strictEqual(count(".chat-composer-upload"), 1);
|
||||
|
||||
await click(".remove-upload");
|
||||
assert.strictEqual(count(".chat-composer-upload"), 0);
|
||||
});
|
||||
});
|
||||
|
Reference in New Issue
Block a user