From ef3acaa7734dc53743325875913ce597226a98a1 Mon Sep 17 00:00:00 2001 From: polesye Date: Fri, 18 Oct 2013 14:04:38 +0300 Subject: [PATCH] Add js unit tests. --- cms/static/coffee/spec/main.coffee | 5 +++ .../spec/views/metadata_edit_spec.coffee | 44 ++++++++++++++++--- cms/static/js_test.yml | 1 + 3 files changed, 45 insertions(+), 5 deletions(-) diff --git a/cms/static/coffee/spec/main.coffee b/cms/static/coffee/spec/main.coffee index de8a901e9d..bd349a97e3 100644 --- a/cms/static/coffee/spec/main.coffee +++ b/cms/static/coffee/spec/main.coffee @@ -18,6 +18,7 @@ requirejs.config({ "jquery.iframe-transport": "xmodule_js/common_static/js/vendor/jQuery-File-Upload/js/jquery.iframe-transport", "jquery.inputnumber": "xmodule_js/common_static/js/vendor/html5-input-polyfills/number-polyfill", "jquery.immediateDescendents": "xmodule_js/common_static/coffee/src/jquery.immediateDescendents", + "jquery.maskedinput": "xmodule_js/common_static/js/vendor/jquery.maskedinput.min", "datepair": "xmodule_js/common_static/js/vendor/timepicker/datepair", "date": "xmodule_js/common_static/js/vendor/date", "underscore": "xmodule_js/common_static/js/vendor/underscore-min", @@ -94,6 +95,10 @@ requirejs.config({ deps: ["jquery"], exports: "jQuery.fn.inputNumber" }, + "jquery.maskedinput": { + deps: ["jquery"], + exports: "jQuery.fn.mask" + }, "jquery.tinymce": { deps: ["jquery", "tinymce"], exports: "jQuery.fn.tinymce" diff --git a/cms/static/coffee/spec/views/metadata_edit_spec.coffee b/cms/static/coffee/spec/views/metadata_edit_spec.coffee index 293cf0fadb..9ebf0dbf73 100644 --- a/cms/static/coffee/spec/views/metadata_edit_spec.coffee +++ b/cms/static/coffee/spec/views/metadata_edit_spec.coffee @@ -81,6 +81,18 @@ define ["js/models/metadata", "js/collections/metadata", "js/views/metadata", "c value: ["the first display value", "the second"] } + timeEntry = { + default_value: "00:00:00", + display_name: "Time", + explicitly_set: true, + field_name: "iso_time", + help: "Specifies the name for this component.", + options: [], + type: MetadataModel.ISO_TIME_TYPE, + value: "12:12:12" + } + + # Test for the editor that creates the individual views. describe "MetadataView.Editor creates editors for each field", -> beforeEach -> @@ -103,17 +115,18 @@ define ["js/models/metadata", "js/collections/metadata", "js/views/metadata", "c type: "unknown type", value: null }, - listEntry + listEntry, + timeEntry ] ) it "creates child views on initialize, and sorts them alphabetically", -> view = new MetadataView.Editor({collection: @model}) childModels = view.collection.models - expect(childModels.length).toBe(6) + expect(childModels.length).toBe(7) # Be sure to check list view as well as other input types childViews = view.$el.find('.setting-input, .list-settings') - expect(childViews.length).toBe(6) + expect(childViews.length).toBe(7) verifyEntry = (index, display_name, type) -> expect(childModels[index].get('display_name')).toBe(display_name) @@ -123,8 +136,9 @@ define ["js/models/metadata", "js/collections/metadata", "js/views/metadata", "c verifyEntry(1, 'Inputs', 'number') verifyEntry(2, 'List', '') verifyEntry(3, 'Show Answer', 'select-one') - verifyEntry(4, 'Unknown', 'text') - verifyEntry(5, 'Weight', 'number') + verifyEntry(4, 'Time', 'text') + verifyEntry(5, 'Unknown', 'text') + verifyEntry(6, 'Weight', 'number') it "returns its display name", -> view = new MetadataView.Editor({collection: @model}) @@ -361,3 +375,23 @@ define ["js/models/metadata", "js/collections/metadata", "js/views/metadata", "c @el.find('input').last().val('third setting') @el.find('input').last().trigger('input') expect(@el.find('.create-setting')).not.toHaveClass('is-disabled') + + describe "MetadataView.IsoTime allows the user to enter time string in HH:mm:ss format", -> + beforeEach -> + model = new MetadataModel(timeEntry) + @view = new MetadataView.IsoTime({model: model}) + + it "uses a text input type", -> + assertInputType(@view, 'text') + + it "returns the intial value upon initialization", -> + assertValueInView(@view, '12:12:12') + + it "can update its value in the view", -> + assertCanUpdateView(@view, "23:59:59") + + it "has a clear method to revert to the model default", -> + assertClear(@view, '00:00:00') + + it "has an update model method", -> + assertUpdateModel(@view, '12:12:12', '23:59:59') diff --git a/cms/static/js_test.yml b/cms/static/js_test.yml index 81c53e0f91..34c6966968 100644 --- a/cms/static/js_test.yml +++ b/cms/static/js_test.yml @@ -48,6 +48,7 @@ lib_paths: - xmodule_js/common_static/js/vendor/jasmine-jquery.js - xmodule_js/common_static/js/vendor/jasmine-stealth.js - xmodule_js/common_static/js/vendor/jasmine.async.js + - xmodule_js/common_static/js/vendor/jquery.maskedinput.min.js - xmodule_js/common_static/js/vendor/CodeMirror/codemirror.js - xmodule_js/src/xmodule.js - xmodule_js/common_static/js/test/i18n.js