Commit 94a2abf6 by Usman Khalid

Fixed js tests.

TNL-708
parent f6db73e2
......@@ -86,7 +86,12 @@
{
"template": "openassessmentblock/response/oa_response.html",
"context": {
"saved_response": "",
"saved_response": {"answer":
{"parts": [
{ "text": "", "prompt": { "description": "Prompt 1" }},
{ "text": "", "prompt": { "description": "Prompt 2" }}
]}
},
"save_status": "This response has not been saved.",
"submit_enabled": false,
"submission_due": ""
......
......@@ -127,23 +127,29 @@ describe("OpenAssessment.ResponseView", function() {
view.setAutoSaveEnabled(false);
});
it("updates and retrieves response text correctly", function() {
view.response(['Test response 1', 'Test response 2']);
expect(view.response()[0]).toBe('Test response 1');
expect(view.response()[1]).toBe('Test response 2');
});
it("updates submit/save buttons and save status when response text changes", function() {
// Response is blank --> save/submit buttons disabled
view.response('');
view.response(['', '']);
view.handleResponseChanged();
expect(view.submitEnabled()).toBe(false);
expect(view.saveEnabled()).toBe(false);
expect(view.saveStatus()).toContain('This response has not been saved.');
// Response is whitespace --> save/submit buttons disabled
view.response(' \n \n ');
view.response([' \n \n ', ' ']);
view.handleResponseChanged();
expect(view.submitEnabled()).toBe(false);
expect(view.saveEnabled()).toBe(false);
expect(view.saveStatus()).toContain('This response has not been saved.');
// Response is not blank --> submit button enabled
view.response('Test response');
view.response(['Test response 1', ' ']);
view.handleResponseChanged();
expect(view.submitEnabled()).toBe(true);
expect(view.saveEnabled()).toBe(true);
......@@ -159,7 +165,7 @@ describe("OpenAssessment.ResponseView", function() {
expect(view.saveStatus()).toContain('saved but not submitted');
// Response is not blank --> submit button enabled
view.response('Test response');
view.response(['Test response 1', 'Test response 2']);
view.save();
expect(view.submitEnabled()).toBe(true);
expect(view.saveEnabled()).toBe(false);
......@@ -168,21 +174,21 @@ describe("OpenAssessment.ResponseView", function() {
it("shows unsaved draft only when response text has changed", function() {
// Save the initial response
view.response('Lorem ipsum');
view.response(['Test response 1', 'Test response 2']);
view.save();
expect(view.saveEnabled()).toBe(false);
expect(view.saveStatus()).toContain('saved but not submitted');
// Keep the text the same, but trigger an update
// Should still be saved
view.response('Lorem ipsum');
view.response(['Test response 1', 'Test response 2']);
view.handleResponseChanged();
expect(view.saveEnabled()).toBe(false);
expect(view.saveStatus()).toContain('saved but not submitted');
// Change the text
// This should cause it to change to unsaved draft
view.response('changed ');
view.response(['Test response 1', 'Test response 3']);
view.handleResponseChanged();
expect(view.saveEnabled()).toBe(true);
expect(view.saveStatus()).toContain('This response has not been saved.');
......@@ -190,16 +196,16 @@ describe("OpenAssessment.ResponseView", function() {
it("sends the saved submission to the server", function() {
spyOn(server, 'save').andCallThrough();
view.response('Test response');
view.response(['Test response 1', 'Test response 2']);
view.save();
expect(server.save).toHaveBeenCalledWith('Test response');
expect(server.save).toHaveBeenCalledWith(['Test response 1', 'Test response 2']);
});
it("submits a response to the server", function() {
spyOn(server, 'submit').andCallThrough();
view.response('Test response');
view.response(['Test response 1', 'Test response 2']);
view.submit();
expect(server.submit).toHaveBeenCalledWith('Test response');
expect(server.submit).toHaveBeenCalledWith(['Test response 1', 'Test response 2']);
});
it("allows the user to cancel before submitting", function() {
......@@ -208,7 +214,7 @@ describe("OpenAssessment.ResponseView", function() {
spyOn(server, 'submit').andCallThrough();
// Start a submission
view.response('Test response');
view.response(['Test response 1', 'Test response 2']);
view.submit();
// Expect that the submission was not sent to the server
......@@ -222,7 +228,7 @@ describe("OpenAssessment.ResponseView", function() {
return $.Deferred(function(defer) {}).promise();
});
view.response('Test response');
view.response(['Test response 1', 'Test response 2']);
view.submit();
expect(view.submitEnabled()).toBe(false);
});
......@@ -235,7 +241,7 @@ describe("OpenAssessment.ResponseView", function() {
}).promise();
});
view.response('Test response');
view.response(['Test response 1', 'Test response 2']);
view.submit();
// Expect the submit button to have been re-enabled
......@@ -248,7 +254,7 @@ describe("OpenAssessment.ResponseView", function() {
spyOn(server, 'submit').andCallThrough();
// Start a submission
view.response('Test response');
view.response(['Test response 1', 'Test response 2']);
view.submit();
// Expect the submit button to be re-enabled
......@@ -265,7 +271,7 @@ describe("OpenAssessment.ResponseView", function() {
spyOn(view, 'load');
spyOn(baseView, 'loadAssessmentModules');
view.response('Test response');
view.response(['Test response 1', 'Test response 2']);
view.submit();
// Expect the current and next step to have been reloaded
......@@ -278,7 +284,7 @@ describe("OpenAssessment.ResponseView", function() {
expect(view.unsavedWarningEnabled()).toBe(false);
// Change the text, then expect the unsaved warning to be enabled.
view.response('Lorem ipsum');
view.response(['Lorem ipsum 1', 'Lorem ipsum 2']);
view.handleResponseChanged();
// Expect the unsaved work warning to be enabled
......@@ -287,7 +293,7 @@ describe("OpenAssessment.ResponseView", function() {
it("disables the unsaved work warning when the user saves a response", function() {
// Change the text, then expect the unsaved warning to be enabled.
view.response('Lorem ipsum');
view.response(['Lorem ipsum 1', 'Lorem ipsum 2']);
view.handleResponseChanged();
expect(view.unsavedWarningEnabled()).toBe(true);
......@@ -298,7 +304,7 @@ describe("OpenAssessment.ResponseView", function() {
it("disables the unsaved work warning when the user submits a response", function() {
// Change the text, then expect the unsaved warning to be enabled.
view.response('Lorem ipsum');
view.response(['Lorem ipsum 1', 'Lorem ipsum 2']);
view.handleResponseChanged();
expect(view.unsavedWarningEnabled()).toBe(true);
......@@ -315,7 +321,7 @@ describe("OpenAssessment.ResponseView", function() {
expect(view.saveStatus()).toContain('not been saved');
// Change the response
view.response('Lorem ipsum');
view.response(['Lorem ipsum 1', 'Lorem ipsum 2']);
view.handleResponseChanged();
// Usually autosave would be called by a timer.
......@@ -357,7 +363,7 @@ describe("OpenAssessment.ResponseView", function() {
spyOn(server, 'save').andCallFake(function() { return errorPromise; });
// Change the response and save it
view.response('Lorem ipsum');
view.response(['Lorem ipsum 1', 'Lorem ipsum 2']);
view.handleResponseChanged();
view.save();
......@@ -378,7 +384,7 @@ describe("OpenAssessment.ResponseView", function() {
view.AUTO_SAVE_WAIT = 900000;
// Change the response
view.response('Lorem ipsum');
view.response(['Lorem ipsum 1', 'Lorem ipsum 2']);
view.handleResponseChanged();
// Autosave
......
......@@ -269,7 +269,7 @@ OpenAssessment.ResponseView.prototype = {
**/
response: function(texts) {
var sel = $('.submission__answer__part__text__value', this.element);
if (typeof text === 'undefined') {
if (typeof texts === 'undefined') {
return sel.map(function() {
return $.trim($(this).val());
}).get();
......@@ -320,14 +320,16 @@ OpenAssessment.ResponseView.prototype = {
**/
handleResponseChanged: function() {
// Enable the save/submit button only for non-blank responses
var isBlank = ($.trim(this.response()) !== '');
this.submitEnabled(isBlank);
var isNotBlank = !this.response().every(function(element, index, array) {
return $.trim(element) == '';
});
this.submitEnabled(isNotBlank);
// Update the save button, save status, and "unsaved changes" warning
// only if the response has changed
if (this.responseChanged()) {
this.saveEnabled(isBlank);
this.previewEnabled(isBlank);
this.saveEnabled(isNotBlank);
this.previewEnabled(isNotBlank);
this.saveStatus(gettext('This response has not been saved.'));
this.unsavedWarningEnabled(true);
}
......
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