Commit 14a9796c by Andy Armstrong

Re-enable the video translation Jasmine tests

TNL-2689
parent 9e5290c1
...@@ -28,7 +28,7 @@ require ["jquery", "backbone", "coffee/src/main", "common/js/spec_helpers/ajax_h ...@@ -28,7 +28,7 @@ require ["jquery", "backbone", "coffee/src/main", "common/js/spec_helpers/ajax_h
appendSetFixtures(sandbox({id: "page-notification"})) appendSetFixtures(sandbox({id: "page-notification"}))
it "successful AJAX request does not pop an error notification", -> it "successful AJAX request does not pop an error notification", ->
server = AjaxHelpers['server'](200, this) server = AjaxHelpers.server(this, [200, {}, ''])
expect($("#page-notification")).toBeEmpty() expect($("#page-notification")).toBeEmpty()
$.ajax("/test") $.ajax("/test")
...@@ -37,7 +37,7 @@ require ["jquery", "backbone", "coffee/src/main", "common/js/spec_helpers/ajax_h ...@@ -37,7 +37,7 @@ require ["jquery", "backbone", "coffee/src/main", "common/js/spec_helpers/ajax_h
expect($("#page-notification")).toBeEmpty() expect($("#page-notification")).toBeEmpty()
it "AJAX request with error should pop an error notification", -> it "AJAX request with error should pop an error notification", ->
server = AjaxHelpers['server'](500, this) server = AjaxHelpers.server(this, [500, {}, ''])
$.ajax("/test") $.ajax("/test")
server.respond() server.respond()
...@@ -45,7 +45,7 @@ require ["jquery", "backbone", "coffee/src/main", "common/js/spec_helpers/ajax_h ...@@ -45,7 +45,7 @@ require ["jquery", "backbone", "coffee/src/main", "common/js/spec_helpers/ajax_h
expect($("#page-notification")).toContain('div.wrapper-notification-error') expect($("#page-notification")).toContain('div.wrapper-notification-error')
it "can override AJAX request with error so it does not pop an error notification", -> it "can override AJAX request with error so it does not pop an error notification", ->
server = AjaxHelpers['server'](500, this) server = AjaxHelpers.server(this, [500, {}, ''])
$.ajax $.ajax
url: "/test" url: "/test"
......
...@@ -34,7 +34,7 @@ define ["js/models/section", "common/js/spec_helpers/ajax_helpers", "js/utils/mo ...@@ -34,7 +34,7 @@ define ["js/models/section", "common/js/spec_helpers/ajax_helpers", "js/utils/mo
}) })
it "show/hide a notification when it saves to the server", -> it "show/hide a notification when it saves to the server", ->
server = AjaxHelpers['server'](200, this) server = AjaxHelpers.server(this, [200, {}, ''])
@model.save() @model.save()
expect(Section.prototype.showNotification).toHaveBeenCalled() expect(Section.prototype.showNotification).toHaveBeenCalled()
...@@ -43,7 +43,7 @@ define ["js/models/section", "common/js/spec_helpers/ajax_helpers", "js/utils/mo ...@@ -43,7 +43,7 @@ define ["js/models/section", "common/js/spec_helpers/ajax_helpers", "js/utils/mo
it "don't hide notification when saving fails", -> it "don't hide notification when saving fails", ->
# this is handled by the global AJAX error handler # this is handled by the global AJAX error handler
server = AjaxHelpers['server'](500, this) server = AjaxHelpers.server(this, [500, {}, ''])
@model.save() @model.save()
server.respond() server.respond()
......
...@@ -4,13 +4,12 @@ define( ...@@ -4,13 +4,12 @@ define(
'js/views/video/transcripts/utils', 'js/views/video/transcripts/utils',
'js/views/video/transcripts/metadata_videolist', 'js/models/metadata', 'js/views/video/transcripts/metadata_videolist', 'js/models/metadata',
'js/views/abstract_editor', 'js/views/abstract_editor',
'sinon', 'xmodule', 'jasmine-jquery' 'common/js/spec_helpers/ajax_helpers',
'xmodule', 'jasmine-jquery'
], ],
function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) { function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, AjaxHelpers) {
'use strict'; 'use strict';
// TODO: reenable these specs, using AjaxHelpers and the correct pattern describe('CMS.Views.Metadata.VideoList', function () {
// to avoid flakiness. See TNL-2689.
xdescribe('CMS.Views.Metadata.VideoList', function () {
var videoListEntryTemplate = readFixtures( var videoListEntryTemplate = readFixtures(
'video/transcripts/metadata-videolist-entry.underscore' 'video/transcripts/metadata-videolist-entry.underscore'
), ),
...@@ -52,24 +51,13 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) { ...@@ -52,24 +51,13 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) {
status: 'Success', status: 'Success',
subs: 'video_id' subs: 'video_id'
}), }),
view, sinonXhr, MessageManager, messenger; MessageManager, messenger;
beforeEach(function () { beforeEach(function () {
sinonXhr = sinon.fakeServer.create();
sinonXhr.respondWith([
200,
{ 'Content-Type': 'application/json'},
response
]);
sinonXhr.autoRespond = true;
var tpl = sandbox({ var tpl = sandbox({
'class': 'component', 'class': 'component',
'data-locator': component_locator 'data-locator': component_locator
}), });
model = new MetadataModel(modelStub),
$el;
setFixtures(tpl); setFixtures(tpl);
...@@ -101,14 +89,6 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) { ...@@ -101,14 +89,6 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) {
return messenger; return messenger;
}; };
$el = $('.component');
view = new VideoList({
el: $el,
model: model,
MessageManager: MessageManager
});
this.addMatchers({ this.addMatchers({
assertValueInView: function(expected) { assertValueInView: function(expected) {
var actualValue = this.actual.getValueFromEditor(); var actualValue = this.actual.getValueFromEditor();
...@@ -131,11 +111,29 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) { ...@@ -131,11 +111,29 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) {
}); });
}); });
afterEach(function () { var createMockAjaxServer = function (test) {
sinonXhr.restore(); var mockServer = AjaxHelpers.server(
test,
[
200,
{ 'Content-Type': 'application/json'},
response
]
);
mockServer.autoRespond = true;
return mockServer;
};
var createVideoListView = function () {
var model = new MetadataModel(modelStub);
return new VideoList({
el: $('.component'),
model: model,
MessageManager: MessageManager
}); });
};
var waitsForResponse = function (expectFunc, prep) { var waitsForResponse = function (mockServer, expectFunc, prep) {
var flag = false; var flag = false;
if (prep) { if (prep) {
...@@ -143,10 +141,10 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) { ...@@ -143,10 +141,10 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) {
} }
waitsFor(function() { waitsFor(function() {
var req = sinonXhr.requests, var requests = mockServer.requests,
len = req.length; len = requests.length;
if (len && req[0].readyState === 4) { if (len && requests[0].readyState === 4) {
flag = true; flag = true;
} }
...@@ -158,7 +156,9 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) { ...@@ -158,7 +156,9 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) {
it('Initialize', function () { it('Initialize', function () {
waitsForResponse(function () { var mockServer = createMockAjaxServer(this),
view = createVideoListView();
waitsForResponse(mockServer, function () {
expect(abstractEditor.initialize).toHaveBeenCalled(); expect(abstractEditor.initialize).toHaveBeenCalled();
expect(messenger.initialize).toHaveBeenCalled(); expect(messenger.initialize).toHaveBeenCalled();
expect(view.component_locator).toBe(component_locator); expect(view.component_locator).toBe(component_locator);
...@@ -177,20 +177,24 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) { ...@@ -177,20 +177,24 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) {
expect(messenger.render).toHaveBeenCalled(); expect(messenger.render).toHaveBeenCalled();
}, },
resetSpies = function() { resetSpies = function(mockServer) {
abstractEditor.render.reset(); abstractEditor.render.reset();
Utils.command.reset(); Utils.command.reset();
messenger.render.reset(); messenger.render.reset();
sinonXhr.requests.length = 0; mockServer.requests.length = 0;
}; };
it('is rendered in correct way', function () { it('is rendered in correct way', function () {
waitsForResponse(function () { var mockServer = createMockAjaxServer(this);
createVideoListView();
waitsForResponse(mockServer, function () {
assertToHaveBeenRendered(videoList); assertToHaveBeenRendered(videoList);
}); });
}); });
it('is rendered with opened extra videos bar', function () { it('is rendered with opened extra videos bar', function () {
var mockServer = createMockAjaxServer(this),
view = createVideoListView();
var videoListLength = [ var videoListLength = [
{ {
mode: 'youtube', mode: 'youtube',
...@@ -215,24 +219,26 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) { ...@@ -215,24 +219,26 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) {
spyOn(view, 'openExtraVideosBar'); spyOn(view, 'openExtraVideosBar');
waitsForResponse( waitsForResponse(
mockServer,
function () { function () {
assertToHaveBeenRendered(videoListLength); assertToHaveBeenRendered(videoListLength);
view.getVideoObjectsList.andReturn(videoListLength); view.getVideoObjectsList.andReturn(videoListLength);
expect(view.openExtraVideosBar).toHaveBeenCalled(); expect(view.openExtraVideosBar).toHaveBeenCalled();
}, },
function () { function () {
resetSpies(); resetSpies(mockServer);
view.render(); view.render();
} }
); );
waitsForResponse( waitsForResponse(
mockServer,
function () { function () {
assertToHaveBeenRendered(videoListHtml5mode); assertToHaveBeenRendered(videoListHtml5mode);
expect(view.openExtraVideosBar).toHaveBeenCalled(); expect(view.openExtraVideosBar).toHaveBeenCalled();
}, },
function () { function () {
resetSpies(); resetSpies(mockServer);
view.openExtraVideosBar.reset(); view.openExtraVideosBar.reset();
view.getVideoObjectsList.andReturn(videoListHtml5mode); view.getVideoObjectsList.andReturn(videoListHtml5mode);
view.render(); view.render();
...@@ -242,7 +248,9 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) { ...@@ -242,7 +248,9 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) {
}); });
it('is rendered without opened extra videos bar', function () { it('is rendered without opened extra videos bar', function () {
var videoList = [ var mockServer = createMockAjaxServer(this),
view = createVideoListView(),
videoList = [
{ {
mode: 'youtube', mode: 'youtube',
type: 'youtube', type: 'youtube',
...@@ -254,12 +262,13 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) { ...@@ -254,12 +262,13 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) {
spyOn(view, 'closeExtraVideosBar'); spyOn(view, 'closeExtraVideosBar');
waitsForResponse( waitsForResponse(
mockServer,
function () { function () {
assertToHaveBeenRendered(videoList); assertToHaveBeenRendered(videoList);
expect(view.closeExtraVideosBar).toHaveBeenCalled(); expect(view.closeExtraVideosBar).toHaveBeenCalled();
}, },
function () { function () {
resetSpies(); resetSpies(mockServer);
view.render(); view.render();
} }
); );
...@@ -269,13 +278,14 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) { ...@@ -269,13 +278,14 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) {
describe('isUniqOtherVideos', function () { describe('isUniqOtherVideos', function () {
it('Unique data - return true', function () { it('Unique data - return true', function () {
var data = videoList.concat([{ var mockServer = createMockAjaxServer(this),
view = createVideoListView(),
data = videoList.concat([{
mode: 'html5', mode: 'html5',
type: 'other', type: 'other',
video: 'pxxZrg' video: 'pxxZrg'
}]); }]);
waitsForResponse(mockServer, function () {
waitsForResponse(function () {
var result = view.isUniqOtherVideos(data); var result = view.isUniqOtherVideos(data);
expect(result).toBe(true); expect(result).toBe(true);
...@@ -284,7 +294,9 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) { ...@@ -284,7 +294,9 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) {
}); });
it('Not Unique data - return false', function () { it('Not Unique data - return false', function () {
var data = [ var mockServer = createMockAjaxServer(this),
view = createVideoListView(),
data = [
{ {
mode: 'html5', mode: 'html5',
type: 'mp4', type: 'mp4',
...@@ -311,8 +323,7 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) { ...@@ -311,8 +323,7 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) {
video: '12345678901' video: '12345678901'
} }
]; ];
waitsForResponse(mockServer, function () {
waitsForResponse(function () {
var result = view.isUniqOtherVideos(data); var result = view.isUniqOtherVideos(data);
expect(result).toBe(false); expect(result).toBe(false);
...@@ -323,18 +334,20 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) { ...@@ -323,18 +334,20 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) {
describe('isUniqVideoTypes', function () { describe('isUniqVideoTypes', function () {
it('Unique data - return true', function () { it('Unique data - return true', function () {
var data = videoList; var mockServer = createMockAjaxServer(this),
view = createVideoListView(),
waitsForResponse(function () { data = videoList;
waitsForResponse(mockServer, function () {
var result = view.isUniqVideoTypes(data); var result = view.isUniqVideoTypes(data);
expect(result).toBe(true); expect(result).toBe(true);
}); });
}); });
it('Not Unique data - return false', function () { it('Not Unique data - return false', function () {
var data = [ var mockServer = createMockAjaxServer(this),
view = createVideoListView(),
data = [
{ {
mode: 'html5', mode: 'html5',
type: 'mp4', type: 'mp4',
...@@ -356,8 +369,7 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) { ...@@ -356,8 +369,7 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) {
video: '12345678901' video: '12345678901'
} }
]; ];
waitsForResponse(mockServer, function () {
waitsForResponse(function () {
var result = view.isUniqVideoTypes(data); var result = view.isUniqVideoTypes(data);
expect(result).toBe(false); expect(result).toBe(false);
...@@ -367,7 +379,9 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) { ...@@ -367,7 +379,9 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) {
describe('checkIsUniqVideoTypes', function () { describe('checkIsUniqVideoTypes', function () {
it('Error is shown', function () { it('Error is shown', function () {
var data = [ var mockServer = createMockAjaxServer(this),
view = createVideoListView(),
data = [
{ {
mode: 'html5', mode: 'html5',
type: 'mp4', type: 'mp4',
...@@ -390,7 +404,7 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) { ...@@ -390,7 +404,7 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) {
} }
]; ];
waitsForResponse(function () { waitsForResponse(mockServer, function () {
var result = view.checkIsUniqVideoTypes(data); var result = view.checkIsUniqVideoTypes(data);
expect(messenger.showError).toHaveBeenCalled(); expect(messenger.showError).toHaveBeenCalled();
...@@ -399,9 +413,10 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) { ...@@ -399,9 +413,10 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) {
}); });
it('All works okay if arguments are not passed', function () { it('All works okay if arguments are not passed', function () {
var mockServer = createMockAjaxServer(this),
view = createVideoListView();
spyOn(view, 'getVideoObjectsList').andReturn(videoList); spyOn(view, 'getVideoObjectsList').andReturn(videoList);
waitsForResponse(mockServer, function () {
waitsForResponse(function () {
var result = view.checkIsUniqVideoTypes(); var result = view.checkIsUniqVideoTypes();
expect(view.getVideoObjectsList).toHaveBeenCalled(); expect(view.getVideoObjectsList).toHaveBeenCalled();
...@@ -412,12 +427,11 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) { ...@@ -412,12 +427,11 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) {
}); });
describe('checkValidity', function () { describe('checkValidity', function () {
beforeEach(function () {
spyOn(view, 'checkIsUniqVideoTypes').andReturn(true);
});
it('Error message is shown', function () { it('Error message is shown', function () {
waitsForResponse(function () { var mockServer = createMockAjaxServer(this),
view = createVideoListView();
spyOn(view, 'checkIsUniqVideoTypes').andReturn(true);
waitsForResponse(mockServer, function () {
var data = { mode: 'incorrect' }, var data = { mode: 'incorrect' },
result = view.checkValidity(data, true); result = view.checkValidity(data, true);
...@@ -428,7 +442,10 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) { ...@@ -428,7 +442,10 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) {
}); });
it('Error message is shown when flag is not passed', function () { it('Error message is shown when flag is not passed', function () {
waitsForResponse(function () { var mockServer = createMockAjaxServer(this),
view = createVideoListView();
spyOn(view, 'checkIsUniqVideoTypes').andReturn(true);
waitsForResponse(mockServer, function () {
var data = { mode: 'incorrect' }, var data = { mode: 'incorrect' },
result = view.checkValidity(data); result = view.checkValidity(data);
...@@ -439,7 +456,10 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) { ...@@ -439,7 +456,10 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) {
}); });
it('All works okay if correct data is passed', function () { it('All works okay if correct data is passed', function () {
waitsForResponse(function () { var mockServer = createMockAjaxServer(this),
view = createVideoListView();
spyOn(view, 'checkIsUniqVideoTypes').andReturn(true);
waitsForResponse(mockServer, function () {
var data = videoList, var data = videoList,
result = view.checkValidity(data); result = view.checkValidity(data);
...@@ -451,7 +471,9 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) { ...@@ -451,7 +471,9 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) {
}); });
it('openExtraVideosBar', function () { it('openExtraVideosBar', function () {
waitsForResponse(function () { var mockServer = createMockAjaxServer(this),
view = createVideoListView();
waitsForResponse(mockServer, function () {
view.$extraVideosBar.removeClass('is-visible'); view.$extraVideosBar.removeClass('is-visible');
view.openExtraVideosBar(); view.openExtraVideosBar();
...@@ -460,7 +482,9 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) { ...@@ -460,7 +482,9 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) {
}); });
it('closeExtraVideosBar', function () { it('closeExtraVideosBar', function () {
waitsForResponse(function () { var mockServer = createMockAjaxServer(this),
view = createVideoListView();
waitsForResponse(mockServer, function () {
view.$extraVideosBar.addClass('is-visible'); view.$extraVideosBar.addClass('is-visible');
view.closeExtraVideosBar(); view.closeExtraVideosBar();
...@@ -469,7 +493,9 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) { ...@@ -469,7 +493,9 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) {
}); });
it('toggleExtraVideosBar', function () { it('toggleExtraVideosBar', function () {
waitsForResponse(function () { var mockServer = createMockAjaxServer(this),
view = createVideoListView();
waitsForResponse(mockServer, function () {
view.$extraVideosBar.addClass('is-visible'); view.$extraVideosBar.addClass('is-visible');
view.toggleExtraVideosBar(); view.toggleExtraVideosBar();
expect(view.$extraVideosBar).not.toHaveClass('is-visible'); expect(view.$extraVideosBar).not.toHaveClass('is-visible');
...@@ -479,18 +505,24 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) { ...@@ -479,18 +505,24 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) {
}); });
it('getValueFromEditor', function () { it('getValueFromEditor', function () {
waitsForResponse(function () { var mockServer = createMockAjaxServer(this),
view = createVideoListView();
waitsForResponse(mockServer, function () {
expect(view).assertValueInView(modelStub.value); expect(view).assertValueInView(modelStub.value);
}); });
}); });
it('setValueInEditor', function () { it('setValueInEditor', function () {
waitsForResponse(function () { var mockServer = createMockAjaxServer(this),
view = createVideoListView();
waitsForResponse(mockServer, function () {
expect(view).assertCanUpdateView(['abc.mp4']); expect(view).assertCanUpdateView(['abc.mp4']);
}); });
}); });
it('getVideoObjectsList', function () { it('getVideoObjectsList', function () {
var mockServer = createMockAjaxServer(this),
view = createVideoListView();
var value = [ var value = [
{ {
mode: 'youtube', mode: 'youtube',
...@@ -509,7 +541,7 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) { ...@@ -509,7 +541,7 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) {
} }
]; ];
waitsForResponse(function () { waitsForResponse(mockServer, function () {
view.setValueInEditor([ view.setValueInEditor([
'http://youtu.be/12345678901', 'http://youtu.be/12345678901',
'video.mp4', 'video.mp4',
...@@ -521,14 +553,12 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) { ...@@ -521,14 +553,12 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) {
}); });
describe('getPlaceholders', function () { describe('getPlaceholders', function () {
var defaultPlaceholders;
beforeEach(function () {
defaultPlaceholders = view.placeholders;
});
it('All works okay if empty values are passed', function () { it('All works okay if empty values are passed', function () {
waitsForResponse(function () { var mockServer = createMockAjaxServer(this),
view = createVideoListView(),
defaultPlaceholders = view.placeholders;
waitsForResponse(mockServer, function () {
var result = view.getPlaceholders([]), var result = view.getPlaceholders([]),
expectedResult = _.values(defaultPlaceholders).reverse(); expectedResult = _.values(defaultPlaceholders).reverse();
...@@ -536,10 +566,12 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) { ...@@ -536,10 +566,12 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) {
}); });
}); });
it('On filling less than 3 fields, remaining fields should have ' + it('On filling less than 3 fields, remaining fields should have ' +
'placeholders for video types that were not filled yet', 'placeholders for video types that were not filled yet',
function () { function () {
var mockServer = createMockAjaxServer(this),
view = createVideoListView(),
defaultPlaceholders = view.placeholders;
var dataDict = { var dataDict = {
youtube: { youtube: {
value: [modelStub.value[0]], value: [modelStub.value[0]],
...@@ -566,8 +598,8 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) { ...@@ -566,8 +598,8 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) {
] ]
} }
}; };
defaultPlaceholders = view.placeholders;
waitsForResponse(function () { waitsForResponse(mockServer, function () {
$.each(dataDict, function(index, val) { $.each(dataDict, function(index, val) {
var result = view.getPlaceholders(val.value); var result = view.getPlaceholders(val.value);
...@@ -581,13 +613,13 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) { ...@@ -581,13 +613,13 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) {
describe('inputHandler', function () { describe('inputHandler', function () {
var eventObject; var eventObject;
var resetSpies = function () { var resetSpies = function (view) {
messenger.hideError.reset(); messenger.hideError.reset();
view.updateModel.reset(); view.updateModel.reset();
view.closeExtraVideosBar.reset(); view.closeExtraVideosBar.reset();
}; };
beforeEach(function () { var setUp = function (view) {
eventObject = jQuery.Event('input'); eventObject = jQuery.Event('input');
spyOn(view, 'updateModel'); spyOn(view, 'updateModel');
...@@ -599,15 +631,18 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) { ...@@ -599,15 +631,18 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) {
spyOn($.fn, 'prop').andCallThrough(); spyOn($.fn, 'prop').andCallThrough();
spyOn(_, 'isEqual'); spyOn(_, 'isEqual');
resetSpies(); resetSpies(view);
}); };
it('Field has invalid value - nothing should happen', it('Field has invalid value - nothing should happen',
function () { function () {
var mockServer = createMockAjaxServer(this),
view = createVideoListView();
setUp(view);
$.fn.hasClass.andReturn(false); $.fn.hasClass.andReturn(false);
view.checkValidity.andReturn(false); view.checkValidity.andReturn(false);
waitsForResponse(function () { waitsForResponse(mockServer, function () {
view.inputHandler(eventObject); view.inputHandler(eventObject);
expect(messenger.hideError).not.toHaveBeenCalled(); expect(messenger.hideError).not.toHaveBeenCalled();
expect(view.updateModel).not.toHaveBeenCalled(); expect(view.updateModel).not.toHaveBeenCalled();
...@@ -624,10 +659,13 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) { ...@@ -624,10 +659,13 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) {
it('Main field has invalid value - extra Videos Bar is closed', it('Main field has invalid value - extra Videos Bar is closed',
function () { function () {
var mockServer = createMockAjaxServer(this),
view = createVideoListView();
setUp(view);
$.fn.hasClass.andReturn(true); $.fn.hasClass.andReturn(true);
view.checkValidity.andReturn(false); view.checkValidity.andReturn(false);
waitsForResponse(function () { waitsForResponse(mockServer, function () {
view.inputHandler(eventObject); view.inputHandler(eventObject);
expect(messenger.hideError).not.toHaveBeenCalled(); expect(messenger.hideError).not.toHaveBeenCalled();
expect(view.updateModel).not.toHaveBeenCalled(); expect(view.updateModel).not.toHaveBeenCalled();
...@@ -644,10 +682,13 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) { ...@@ -644,10 +682,13 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) {
it('Model is updated if value is valid', it('Model is updated if value is valid',
function () { function () {
var mockServer = createMockAjaxServer(this),
view = createVideoListView();
setUp(view);
view.checkValidity.andReturn(true); view.checkValidity.andReturn(true);
_.isEqual.andReturn(false); _.isEqual.andReturn(false);
waitsForResponse(function () { waitsForResponse(mockServer, function () {
view.inputHandler(eventObject); view.inputHandler(eventObject);
expect(messenger.hideError).not.toHaveBeenCalled(); expect(messenger.hideError).not.toHaveBeenCalled();
expect(view.updateModel).toHaveBeenCalled(); expect(view.updateModel).toHaveBeenCalled();
...@@ -664,10 +705,12 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) { ...@@ -664,10 +705,12 @@ function ($, _, Utils, VideoList, MetadataModel, AbstractEditor, sinon) {
it('Corner case: Error is hided', it('Corner case: Error is hided',
function () { function () {
var mockServer = createMockAjaxServer(this),
view = createVideoListView();
setUp(view);
view.checkValidity.andReturn(true); view.checkValidity.andReturn(true);
_.isEqual.andReturn(true); _.isEqual.andReturn(true);
waitsForResponse(mockServer, function () {
waitsForResponse(function () {
view.inputHandler(eventObject); view.inputHandler(eventObject);
expect(messenger.hideError).toHaveBeenCalled(); expect(messenger.hideError).toHaveBeenCalled();
expect(view.updateModel).not.toHaveBeenCalled(); expect(view.updateModel).not.toHaveBeenCalled();
......
...@@ -18,12 +18,12 @@ define(['sinon', 'underscore'], function(sinon, _) { ...@@ -18,12 +18,12 @@ define(['sinon', 'underscore'], function(sinon, _) {
* Get a reference to the mocked server, and respond * Get a reference to the mocked server, and respond
* to all requests with the specified statusCode. * to all requests with the specified statusCode.
*/ */
fakeServer = function (statusCode, that) { fakeServer = function (that, response) {
var server = sinon.fakeServer.create(); var server = sinon.fakeServer.create();
that.after(function() { that.after(function() {
server.restore(); server.restore();
}); });
server.respondWith([statusCode, {}, '']); server.respondWith(response);
return server; return server;
}; };
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment