diff --git a/cms/djangoapps/contentstore/features/upload.feature b/cms/djangoapps/contentstore/features/upload.feature index 9c538bad1e..189ab287fe 100644 --- a/cms/djangoapps/contentstore/features/upload.feature +++ b/cms/djangoapps/contentstore/features/upload.feature @@ -6,9 +6,12 @@ Feature: CMS.Upload Files @skip_safari Scenario: Users can upload files Given I am at the files and upload page of a Studio course - When I upload the file "test" + When I upload the file "test" by clicking "Upload your first asset" Then I should see the file "test" was uploaded And The url for the file "test" is valid + When I upload the file "test2" + Then I should see the file "test2" was uploaded + And The url for the file "test2" is valid # Uploading isn't working on safari with sauce labs @skip_safari diff --git a/cms/djangoapps/contentstore/features/upload.py b/cms/djangoapps/contentstore/features/upload.py index 6330f571a2..4385210c94 100644 --- a/cms/djangoapps/contentstore/features/upload.py +++ b/cms/djangoapps/contentstore/features/upload.py @@ -25,8 +25,11 @@ def go_to_uploads(_step): @step(u'I upload the( test)? file "([^"]*)"$') -def upload_file(_step, is_test_file, file_name): - world.click_link('Upload New File') +def upload_file(_step, is_test_file, file_name, button_text=None): + if button_text: + world.click_link(button_text) + else: + world.click_link('Upload New File') if not is_test_file: _write_test_file(file_name, "test file") @@ -39,6 +42,11 @@ def upload_file(_step, is_test_file, file_name): world.css_click(close_css) +@step(u'I upload the file "([^"]*)" by clicking "([^"]*)"') +def upload_file_on_button_press(_step, file_name, button_text=None): + upload_file(_step, '', file_name, button_text) + + @step(u'I upload the files "([^"]*)"$') def upload_files(_step, files_string): # files_string should be comma separated with no spaces. diff --git a/cms/static/coffee/spec/main.coffee b/cms/static/coffee/spec/main.coffee index 0dd3e24ed9..fa269f71a0 100644 --- a/cms/static/coffee/spec/main.coffee +++ b/cms/static/coffee/spec/main.coffee @@ -220,6 +220,7 @@ define([ "js/spec/views/baseview_spec", "js/spec/views/paging_spec", + "js/spec/views/assets_spec", "js/spec/views/container_spec", "js/spec/views/unit_spec", diff --git a/cms/static/coffee/spec/views/assets_spec.coffee b/cms/static/coffee/spec/views/assets_spec.coffee index 40b8da5aa4..2a74b50c60 100644 --- a/cms/static/coffee/spec/views/assets_spec.coffee +++ b/cms/static/coffee/spec/views/assets_spec.coffee @@ -1,5 +1,5 @@ -define ["jasmine", "js/spec_helpers/create_sinon", "squire"], -(jasmine, create_sinon, Squire) -> +define ["jquery", "jasmine", "js/spec_helpers/create_sinon", "squire"], +($, jasmine, create_sinon, Squire) -> feedbackTpl = readFixtures('system-feedback.underscore') assetLibraryTpl = readFixtures('asset-library.underscore') @@ -236,6 +236,33 @@ define ["jasmine", "js/spec_helpers/create_sinon", "squire"], create_sinon.respondWithJson(requests, @mockAssetsResponse) return requests + $.fn.fileupload = -> + return '' + + clickEvent = (html_selector) -> + $(html_selector).click() + + it "should show upload modal on clicking upload asset button", -> + spyOn(@view, "showUploadModal") + setup.call(this) + expect(@view.showUploadModal).not.toHaveBeenCalled() + @view.showUploadModal(clickEvent(".upload-button")) + expect(@view.showUploadModal).toHaveBeenCalled() + + it "should show file selection menu on choose file button", -> + spyOn(@view, "showFileSelectionMenu") + setup.call(this) + expect(@view.showFileSelectionMenu).not.toHaveBeenCalled() + @view.showFileSelectionMenu(clickEvent(".choose-file-button")) + expect(@view.showFileSelectionMenu).toHaveBeenCalled() + + it "should hide upload modal on clicking close button", -> + spyOn(@view, "hideModal") + setup.call(this) + expect(@view.hideModal).not.toHaveBeenCalled() + @view.hideModal(clickEvent(".close-button")) + expect(@view.hideModal).toHaveBeenCalled() + it "should show a status indicator while loading", -> appendSetFixtures('
') expect($('.ui-loading').is(':visible')).toBe(true) diff --git a/cms/static/js/spec/views/assets_spec.js b/cms/static/js/spec/views/assets_spec.js new file mode 100644 index 0000000000..d376bde34e --- /dev/null +++ b/cms/static/js/spec/views/assets_spec.js @@ -0,0 +1,129 @@ +define([ "jquery", "js/spec_helpers/create_sinon", "js/views/asset", "js/views/assets", + "js/models/asset", "js/collections/asset" ], + function ($, create_sinon, AssetView, AssetsView, AssetModel, AssetCollection) { + + describe("Assets", function() { + var assetsView, mockEmptyAssetsResponse, mockAssetUploadResponse, + assetLibraryTpl, assetTpl, pagingFooterTpl, pagingHeaderTpl, uploadModalTpl; + + assetLibraryTpl = readFixtures('asset-library.underscore'); + assetTpl = readFixtures('asset.underscore'); + pagingHeaderTpl = readFixtures('paging-header.underscore'); + pagingFooterTpl = readFixtures('paging-footer.underscore'); + uploadModalTpl = readFixtures('asset-upload-modal.underscore'); + + beforeEach(function () { + setFixtures($(" + }); // end of require() + <%block name="content"> diff --git a/cms/templates/js/asset-upload-modal.underscore b/cms/templates/js/asset-upload-modal.underscore new file mode 100644 index 0000000000..6d352ca3cc --- /dev/null +++ b/cms/templates/js/asset-upload-modal.underscore @@ -0,0 +1,19 @@ +