This basically commits the transpiled CoffeeScript JS (with minor cleanup) and removes coffee build support. A tiny amount of support for xblocks exists, because external users may have xblocks with coffee. But no coffee in our tree anyway.
89 lines
3.4 KiB
JavaScript
89 lines
3.4 KiB
JavaScript
define(["js/models/uploads"], FileUpload =>
|
|
|
|
describe("FileUpload", function() {
|
|
beforeEach(function() {
|
|
this.model = new FileUpload();
|
|
});
|
|
|
|
it("is unfinished by default", function() {
|
|
expect(this.model.get("finished")).toBeFalsy();
|
|
});
|
|
|
|
it("is not uploading by default", function() {
|
|
expect(this.model.get("uploading")).toBeFalsy();
|
|
});
|
|
|
|
it("is valid by default", function() {
|
|
expect(this.model.isValid()).toBeTruthy();
|
|
});
|
|
|
|
it("is valid for text files by default", function() {
|
|
const file = {"type": "text/plain", "name": "filename.txt"};
|
|
this.model.set("selectedFile", file);
|
|
expect(this.model.isValid()).toBeTruthy();
|
|
});
|
|
|
|
it("is valid for PNG files by default", function() {
|
|
const file = {"type": "image/png", "name": "filename.png"};
|
|
this.model.set("selectedFile", file);
|
|
expect(this.model.isValid()).toBeTruthy();
|
|
});
|
|
|
|
it("can accept a file type when explicitly set", function() {
|
|
const file = {"type": "image/png", "name": "filename.png"};
|
|
this.model.set({"mimeTypes": ["image/png"]});
|
|
this.model.set("selectedFile", file);
|
|
expect(this.model.isValid()).toBeTruthy();
|
|
});
|
|
|
|
it("can accept a file format when explicitly set", function() {
|
|
const file = {"type": "", "name": "filename.png"};
|
|
this.model.set({"fileFormats": ["png"]});
|
|
this.model.set("selectedFile", file);
|
|
expect(this.model.isValid()).toBeTruthy();
|
|
});
|
|
|
|
it("can accept multiple file types", function() {
|
|
const file = {"type": "image/gif", "name": "filename.gif"};
|
|
this.model.set({"mimeTypes": ["image/png", "image/jpeg", "image/gif"]});
|
|
this.model.set("selectedFile", file);
|
|
expect(this.model.isValid()).toBeTruthy();
|
|
});
|
|
|
|
it("can accept multiple file formats", function() {
|
|
const file = {"type": "image/gif", "name": "filename.gif"};
|
|
this.model.set({"fileFormats": ["png", "jpeg", "gif"]});
|
|
this.model.set("selectedFile", file);
|
|
expect(this.model.isValid()).toBeTruthy();
|
|
});
|
|
|
|
describe("fileTypes", () =>
|
|
it("returns a list of the uploader's file types", function() {
|
|
this.model.set('mimeTypes', ['image/png', 'application/json']);
|
|
this.model.set('fileFormats', ['gif', 'srt']);
|
|
expect(this.model.fileTypes()).toEqual(['PNG', 'JSON', 'GIF', 'SRT']);
|
|
})
|
|
);
|
|
|
|
describe("formatValidTypes", function() {
|
|
it("returns a map of formatted file types and extensions", function() {
|
|
this.model.set('mimeTypes', ['image/png', 'image/jpeg', 'application/json']);
|
|
const formatted = this.model.formatValidTypes();
|
|
expect(formatted).toEqual({
|
|
fileTypes: 'PNG, JPEG or JSON',
|
|
fileExtensions: '.png, .jpeg or .json'
|
|
});
|
|
});
|
|
|
|
it("does not format with only one mime type", function() {
|
|
this.model.set('mimeTypes', ['application/pdf']);
|
|
const formatted = this.model.formatValidTypes();
|
|
expect(formatted).toEqual({
|
|
fileTypes: 'PDF',
|
|
fileExtensions: '.pdf'
|
|
});
|
|
});
|
|
});
|
|
})
|
|
);
|