From 84ab9cab11fdb149afa53f3ce37893a511724f0f Mon Sep 17 00:00:00 2001 From: muhammad-ammar Date: Fri, 27 Apr 2018 12:56:31 +0500 Subject: [PATCH] address review and add test EDUCATOR-2752 --- cms/static/js/spec/views/upload_spec.js | 18 ++++++++++++++---- .../js/views/video/translations_editor.js | 15 +++++++++------ 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/cms/static/js/spec/views/upload_spec.js b/cms/static/js/spec/views/upload_spec.js index e1bff80c78..cf8adec8de 100644 --- a/cms/static/js/spec/views/upload_spec.js +++ b/cms/static/js/spec/views/upload_spec.js @@ -1,9 +1,14 @@ -define(["sinon", "js/models/uploads", "js/views/uploads", "js/models/chapter", +define(["underscore", "sinon", "js/models/uploads", "js/views/uploads", "js/models/chapter", "edx-ui-toolkit/js/utils/spec-helpers/ajax-helpers", "js/spec_helpers/modal_helpers"], - (sinon, FileUpload, UploadDialog, Chapter, AjaxHelpers, modal_helpers) => + (_, sinon, FileUpload, UploadDialog, Chapter, AjaxHelpers, modal_helpers) => describe("UploadDialog", function() { - const tpl = readFixtures("upload-dialog.underscore"); + const tpl = readFixtures("upload-dialog.underscore"), + uploadData = { + edx_video_id: '123-456-789-0', + language_code: 'en', + new_language_code: 'ur' + }; beforeEach(function() { let dialogResponse; @@ -27,7 +32,8 @@ define(["sinon", "js/models/uploads", "js/views/uploads", "js/models/chapter", url: CMS.URL.UPLOAD_ASSET, onSuccess: response => { return test.dialogResponse.push(response.response); - } + }, + uploadData: uploadData }); spyOn(view, 'remove').and.callThrough(); @@ -37,6 +43,7 @@ define(["sinon", "js/models/uploads", "js/views/uploads", "js/models/chapter", const jqMockFileInput = jasmine.createSpyObj('jqMockFileInput', ['get', 'replaceWith']); jqMockFileInput.get.and.returnValue(mockFileInput); const originalView$ = view.$; + spyOn($.fn, 'ajaxSubmit').and.callThrough(); spyOn(view, "$").and.callFake(function(selector) { if (selector === "input[type=file]") { return jqMockFileInput; @@ -126,6 +133,9 @@ define(["sinon", "js/models/uploads", "js/views/uploads", "js/models/chapter", view.upload(); expect(this.model.get("uploading")).toBeTruthy(); AjaxHelpers.expectRequest(requests, "POST", "/upload"); + expect($.fn.ajaxSubmit.calls.mostRecent().args[0].data).toEqual( + _.extend({}, uploadData, {notifyOnError: false}) + ); AjaxHelpers.respondWithJson(requests, { response: "dummy_response"}); expect(this.model.get("uploading")).toBeFalsy(); expect(this.model.get("finished")).toBeTruthy(); diff --git a/cms/static/js/views/video/translations_editor.js b/cms/static/js/views/video/translations_editor.js index 23c67bebe9..9c82afa180 100644 --- a/cms/static/js/views/video/translations_editor.js +++ b/cms/static/js/views/video/translations_editor.js @@ -27,6 +27,8 @@ function($, _, HtmlUtils, TranscriptUtils, AbstractEditor, ViewUtils, FileUpload templateName: 'metadata-translations-entry', templateItemName: 'metadata-translations-item', + validFileFormats: ['srt'], + initialize: function() { var templateName = _.result(this, 'templateItemName'), tpl = document.getElementById(templateName).text, @@ -38,11 +40,12 @@ function($, _, HtmlUtils, TranscriptUtils, AbstractEditor, ViewUtils, FileUpload this.templateItem = _.template(tpl); - // Initialize language map. Keys in this map represent language codes present on - // server. Values will change if user changes the language from a dropdown. - // For example: Initially map will look like {'ar': 'ar', 'zh': 'zh'} and corresponding - // dropdowns will show language names `Arabic` and `Chinese`. If user changes `Chinese` - // to `Russian` then map will become {'ar': 'ar', 'zh': 'ru'} + // Initialize language map. This maps original language to the newly selected language. + // Keys in this map represent language codes present on server, they don't change when + // user selects a language while values represent currently selected language. + // Initially, the map will look like {'ar': 'ar', 'zh': 'zh'} i.e {'original_lang': 'original_lang'} + // and corresponding dropdowns will show language names Arabic and Chinese. If user changes + // Chinese to Russian then map will become {'ar': 'ar', 'zh': 'ru'} i.e {'original_lang': 'new_lang'} _.each(this.model.getDisplayValue(), function(value, lang) { languageMap[lang] = lang; }); @@ -216,7 +219,7 @@ function($, _, HtmlUtils, TranscriptUtils, AbstractEditor, ViewUtils, FileUpload fileUploadModel = new FileUpload({ title: gettext('Upload translation'), - fileFormats: ['srt'] + fileFormats: this.validFileFormats }); videoUploadDialog = new VideoUploadDialog({