This repository has been archived on 2023-03-18. You can view files and clone it, but cannot push or open issues or pull requests.
osr-discourse-src/app/assets/javascripts/discourse/tests/integration/components/pick-files-button-tests.js
Andrei Prigorshnev 27b97e4f64
DEV: add pick-files-button component (#13764)
* DEV: add pick-files-button component
* Scope querySelector to the component, add removeEventListener, fix formatting
2021-07-16 21:50:50 +04:00

79 lines
2.1 KiB
JavaScript

import componentTest, {
setupRenderingTest,
} from "discourse/tests/helpers/component-test";
import { discourseModule } from "discourse/tests/helpers/qunit-helpers";
import hbs from "htmlbars-inline-precompile";
import { triggerEvent } from "@ember/test-helpers";
import sinon from "sinon";
function createBlob(mimeType, extension) {
const blob = new Blob(["content"], {
type: mimeType,
});
blob.name = `filename${extension}`;
return blob;
}
discourseModule(
"Integration | Component | pick-files-button",
function (hooks) {
setupRenderingTest(hooks);
componentTest(
"it shows alert if a file with an unsupported extension was chosen",
{
skip: true,
template: hbs`
{{pick-files-button
acceptedFileTypes=this.acceptedFileTypes
onFilesChosen=this.onFilesChosen}}`,
beforeEach() {
const expectedExtension = ".json";
this.set("acceptedFileTypes", [expectedExtension]);
this.set("onFilesChosen", () => {});
},
async test(assert) {
sinon.stub(bootbox, "alert");
const wrongExtension = ".txt";
const file = createBlob("text/json", wrongExtension);
await triggerEvent("input#file-input", "change", { files: [file] });
assert.ok(bootbox.alert.calledOnce);
},
}
);
componentTest(
"it shows alert if a file with an unsupported MIME type was chosen",
{
skip: true,
template: hbs`
{{pick-files-button
acceptedFileTypes=this.acceptedFileTypes
onFilesChosen=this.onFilesChosen}}`,
beforeEach() {
const expectedMimeType = "text/json";
this.set("acceptedFileTypes", [expectedMimeType]);
this.set("onFilesChosen", () => {});
},
async test(assert) {
sinon.stub(bootbox, "alert");
const wrongMimeType = "text/plain";
const file = createBlob(wrongMimeType, ".json");
await triggerEvent("input#file-input", "change", { files: [file] });
assert.ok(bootbox.alert.calledOnce);
},
}
);
}
);