From 58129031a5fcada8e2ff3f87bcc66fa5c48ce534 Mon Sep 17 00:00:00 2001 From: asadiqbal Date: Thu, 18 Jun 2015 14:26:47 +0500 Subject: [PATCH] SOL-939 Jasmine Tests --- cms/static/coffee/spec/main.coffee | 1 + .../spec/views/certificate_preview_spec.js | 128 ++++++++++++++++++ 2 files changed, 129 insertions(+) create mode 100644 cms/static/js/certificates/spec/views/certificate_preview_spec.js diff --git a/cms/static/coffee/spec/main.coffee b/cms/static/coffee/spec/main.coffee index 14907cbc86..7051007949 100644 --- a/cms/static/coffee/spec/main.coffee +++ b/cms/static/coffee/spec/main.coffee @@ -278,6 +278,7 @@ define([ "js/certificates/spec/views/certificate_details_spec", "js/certificates/spec/views/certificate_editor_spec", "js/certificates/spec/views/certificates_list_spec", + "js/certificates/spec/views/certificate_preview_spec", # these tests are run separately in the cms-squire suite, due to process # isolation issues with Squire.js diff --git a/cms/static/js/certificates/spec/views/certificate_preview_spec.js b/cms/static/js/certificates/spec/views/certificate_preview_spec.js new file mode 100644 index 0000000000..fac5ba0c60 --- /dev/null +++ b/cms/static/js/certificates/spec/views/certificate_preview_spec.js @@ -0,0 +1,128 @@ +// Jasmine Test Suite: Certificate Web Preview + +define([ // jshint ignore:line + 'underscore', + 'jquery', + 'js/models/course', + 'js/certificates/views/certificate_preview', + 'common/js/spec_helpers/template_helpers', + 'js/spec_helpers/view_helpers', + 'common/js/spec_helpers/ajax_helpers' +], +function(_, $, Course, CertificatePreview, TemplateHelpers, ViewHelpers, AjaxHelpers) { + 'use strict'; + + var SELECTORS = { + course_modes: '#course-modes', + activate_certificate: '.activate-cert', + preview_certificate: '.preview-certificate-link' + }; + + beforeEach(function() { + window.course = new Course({ + id: '5', + name: 'Course Name', + url_name: 'course_name', + org: 'course_org', + num: 'course_num', + revision: 'course_rev' + }); + }); + + afterEach(function() { + delete window.course; + }); + + describe('Certificate Web Preview Spec:', function() { + + var selectDropDownByText = function ( element, value ) { + if (value) { + element.val(value); + element.trigger('change'); + } + }; + + beforeEach(function() { + TemplateHelpers.installTemplate('certificate-web-preview', true); + appendSetFixtures(''); + this.view = new CertificatePreview({ + el: $('.preview-certificate'), + course_modes: ['test1', 'test2', 'test3'], + certificate_web_view_url: '/users/1/courses/orgX/009/2016?preview=test1', + certificate_activation_handler_url: '/certificates/activation/'+ window.course.id, + is_active: true + }); + appendSetFixtures(this.view.render().el); + }); + + describe('Certificate preview', function() { + + it('course mode event should call when user choose a new mode', function () { + spyOn(this.view, 'courseModeChanged'); + this.view.delegateEvents(); + selectDropDownByText(this.view.$(SELECTORS.course_modes), 'test3'); + expect(this.view.courseModeChanged).toHaveBeenCalled(); + }); + + it('course mode selection updating the link successfully', function () { + selectDropDownByText(this.view.$(SELECTORS.course_modes), 'test1'); + expect(this.view.$(SELECTORS.preview_certificate).attr('href')). + toEqual('/users/1/courses/orgX/009/2016?preview=test1'); + + selectDropDownByText(this.view.$(SELECTORS.course_modes), 'test2'); + expect(this.view.$(SELECTORS.preview_certificate).attr('href')). + toEqual('/users/1/courses/orgX/009/2016?preview=test2'); + + selectDropDownByText(this.view.$(SELECTORS.course_modes), 'test3'); + expect(this.view.$(SELECTORS.preview_certificate).attr('href')). + toEqual('/users/1/courses/orgX/009/2016?preview=test3'); + }); + + it('toggle certificate activation event works fine', function () { + spyOn(this.view, 'toggleCertificateActivation'); + this.view.delegateEvents(); + this.view.$(SELECTORS.activate_certificate).click(); + expect(this.view.toggleCertificateActivation).toHaveBeenCalled(); + }); + + it('certificate deactivation works fine', function () { + var requests = AjaxHelpers.requests(this), + notificationSpy = ViewHelpers.createNotificationSpy(); + this.view.$(SELECTORS.activate_certificate).click(); + AjaxHelpers.expectJsonRequest(requests, 'POST', '/certificates/activation/'+ window.course.id, { + is_active: false + }); + ViewHelpers.verifyNotificationShowing(notificationSpy, /Deactivating/); + + }); + + it('certificate activation works fine', function () { + var requests = AjaxHelpers.requests(this), + notificationSpy = ViewHelpers.createNotificationSpy(); + this.view.is_active = false; + this.view.$(SELECTORS.activate_certificate).click(); + AjaxHelpers.expectJsonRequest(requests, 'POST', '/certificates/activation/'+ window.course.id, { + is_active: true + }); + ViewHelpers.verifyNotificationShowing(notificationSpy, /Activating/); + + }); + + it('certificate should be deactivate when method "remove" called', function () { + this.view.remove(); + expect(this.view.is_active).toBe(false); + }); + + it('certificate web preview should be removed when method "remove" called', function () { + this.view.remove(); + expect(this.view.el.innerHTML).toContain(""); + }); + + it('method "show" should call the render function', function () { + spyOn(this.view, "render"); + this.view.show(); + expect(this.view.render).toHaveBeenCalled(); + }); + }); + }); +});