Follow up to 48f70dcd5f. The group
_appeared_ to be saved in the UI until a refresh when it became
clear that the group wasn't actually sent to the DB. This is because
of the way the per-file data was being set with a computed property.
This commit fixes the computed property by changing it to a regular
function and also makes sure the name resetting after the first upload
in multiple uploads works too.
144 lines
4.0 KiB
JavaScript
144 lines
4.0 KiB
JavaScript
import componentTest, {
|
|
setupRenderingTest,
|
|
} from "discourse/tests/helpers/component-test";
|
|
import selectKit from "discourse/tests/helpers/select-kit-helper";
|
|
import {
|
|
createFile,
|
|
discourseModule,
|
|
} from "discourse/tests/helpers/qunit-helpers";
|
|
import hbs from "htmlbars-inline-precompile";
|
|
import pretender from "discourse/tests/helpers/create-pretender";
|
|
import { fillIn } from "@ember/test-helpers";
|
|
|
|
let requestNumber = 1;
|
|
|
|
discourseModule("Integration | Component | emoji-uploader", function (hooks) {
|
|
setupRenderingTest(hooks);
|
|
|
|
const template = hbs` {{emoji-uploader
|
|
emojiGroups=emojiGroups
|
|
done=(action "emojiUploaded")
|
|
id="emoji-uploader"
|
|
}}`;
|
|
|
|
hooks.beforeEach(function () {
|
|
requestNumber = 1;
|
|
this.setProperties({
|
|
emojiGroups: ["default", "coolemojis"],
|
|
actions: {
|
|
emojiUploaded: (upload, group) => {
|
|
this.doneUpload(upload, group);
|
|
},
|
|
},
|
|
});
|
|
|
|
pretender.post("/admin/customize/emojis.json", () => {
|
|
if (requestNumber === 1) {
|
|
return [
|
|
200,
|
|
{ "Content-Type": "application/json" },
|
|
{
|
|
group: "coolemojis",
|
|
name: "okey",
|
|
url:
|
|
"//upload.s3.dualstack.us-east-2.amazonaws.com/original/1X/123.png",
|
|
},
|
|
];
|
|
requestNumber += 1;
|
|
} else if (requestNumber === 2) {
|
|
return [
|
|
200,
|
|
{ "Content-Type": "application/json" },
|
|
{
|
|
group: "coolemojis",
|
|
name: null,
|
|
url:
|
|
"//upload.s3.dualstack.us-east-2.amazonaws.com/original/1X/456.png",
|
|
},
|
|
];
|
|
}
|
|
});
|
|
});
|
|
|
|
componentTest("uses the selected group for the upload", {
|
|
template,
|
|
|
|
async test(assert) {
|
|
const done = assert.async();
|
|
await selectKit("#emoji-group-selector").expand();
|
|
await selectKit("#emoji-group-selector").selectRowByValue("coolemojis");
|
|
|
|
this.set("doneUpload", (upload, group) => {
|
|
assert.equal("coolemojis", group);
|
|
done();
|
|
});
|
|
const image = createFile("avatar.png");
|
|
await this.container
|
|
.lookup("service:app-events")
|
|
.trigger("upload-mixin:emoji-uploader:add-files", image);
|
|
},
|
|
});
|
|
|
|
componentTest("does not clear the selected group between multiple uploads", {
|
|
template,
|
|
|
|
async test(assert) {
|
|
const done = assert.async();
|
|
await selectKit("#emoji-group-selector").expand();
|
|
await selectKit("#emoji-group-selector").selectRowByValue("coolemojis");
|
|
|
|
let uploadDoneCount = 0;
|
|
this.set("doneUpload", (upload, group) => {
|
|
uploadDoneCount += 1;
|
|
assert.equal("coolemojis", group);
|
|
|
|
if (uploadDoneCount === 2) {
|
|
done();
|
|
}
|
|
});
|
|
|
|
const image = createFile("avatar.png");
|
|
const image2 = createFile("avatar2.png");
|
|
await this.container
|
|
.lookup("service:app-events")
|
|
.trigger("upload-mixin:emoji-uploader:add-files", [image, image2]);
|
|
},
|
|
});
|
|
|
|
componentTest(
|
|
"clears the name after the first upload to avoid duplicate names",
|
|
{
|
|
template,
|
|
|
|
async test(assert) {
|
|
const done = assert.async();
|
|
await selectKit("#emoji-group-selector").expand();
|
|
await selectKit("#emoji-group-selector").selectRowByValue("coolemojis");
|
|
await fillIn("#emoji-name", "okey");
|
|
|
|
let uploadDoneCount = 0;
|
|
this.set("doneUpload", (upload) => {
|
|
if (uploadDoneCount === 0) {
|
|
assert.equal(upload.name, "okey");
|
|
}
|
|
uploadDoneCount += 1;
|
|
|
|
if (uploadDoneCount === 1) {
|
|
assert.equal(this.name, null);
|
|
}
|
|
|
|
if (uploadDoneCount === 2) {
|
|
done();
|
|
}
|
|
});
|
|
|
|
const image = createFile("avatar.png");
|
|
const image2 = createFile("avatar2.png");
|
|
await this.container
|
|
.lookup("service:app-events")
|
|
.trigger("upload-mixin:emoji-uploader:add-files", [image, image2]);
|
|
},
|
|
}
|
|
);
|
|
});
|