Skip to content
This repository was archived by the owner on Mar 4, 2025. It is now read-only.

Sup 2996 controller tests #670

Merged
merged 2 commits into from
Jan 18, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions app/specs.html
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,8 @@ <h1><a href="specs.html">Spec Runner</a></h1>
<script src="../bower_components/react/react.js"></script>
<script src="../bower_components/react/react-dom.js"></script>
<script src="../bower_components/classnames/index.js"></script>
<script src="../bower_components/classnames/bind.js"></script>
<script src="../bower_components/classnames/dedupe.js"></script>
<script src="../bower_components/react-input-autosize/dist/react-input-autosize.min.js"></script>
<script src="../bower_components/react-select/dist/react-select.min.js"></script>
<script src="../bower_components/ngReact/ngReact.js"></script>
Expand Down Expand Up @@ -270,7 +272,6 @@ <h1><a href="specs.html">Spec Runner</a></h1>
<script src="/app/my-dashboard/my-dashboard.spec.js"></script>
<script src="/app/my-srms/my-srms.spec.js"></script>
<script src="/app/profile/profile.controller.spec.js"></script>
<script src="/app/settings/settings.spec.js"></script>
<script src="/app/services/authToken.service.spec.js"></script>
<script src="/app/services/challenge.service.spec.js"></script>
<script src="/app/services/externalAccounts.service.spec.js"></script>
Expand All @@ -281,13 +282,14 @@ <h1><a href="specs.html">Spec Runner</a></h1>
<script src="/app/services/tcAuth.service.spec.js"></script>
<script src="/app/services/user.service.spec.js"></script>
<script src="/app/services/userStats.service.spec.js"></script>
<script src="/app/settings/settings.spec.js"></script>
<script src="/app/skill-picker/skill-picker.spec.js"></script>
<script src="/app/submissions/submissions.spec.js"></script>
<script src="/app/account/login/login.spec.js"></script>
<script src="/app/account/logout/logout.controller.spec.js"></script>
<script src="/app/account/register/register.spec.js"></script>
<script src="/app/account/reset-password/reset-password.spec.js"></script>
<script src="/app/blocks/exception/exception-handler.provider.spec.js"></script>
<script src="/app/account/register/register.spec.js"></script>
<script src="/app/directives/badges/badge-tooltip.spec.js"></script>
<script src="/app/directives/busy-button/busy-button.directive.spec.js"></script>
<script src="/app/directives/challenge-tile/challenge-tile.spec.js"></script>
Expand All @@ -296,9 +298,9 @@ <h1><a href="specs.html">Spec Runner</a></h1>
<script src="/app/directives/external-account/external-link-deletion.controller.spec.js"></script>
<script src="/app/directives/external-account/external-links-data.directive.spec.js"></script>
<script src="/app/directives/external-account/external-web-links.directive.spec.js"></script>
<script src="/app/directives/tc-endless-paginator/tc-endless-paginator.spec.js"></script>
<script src="/app/directives/tc-file-input/tc-file-input.spec.js"></script>
<script src="/app/directives/tc-form-fonts/tc-form-fonts.spec.js"></script>
<script src="/app/directives/tc-endless-paginator/tc-endless-paginator.spec.js"></script>
<script src="/app/directives/tc-form-stockart/tc-form-stockart.spec.js"></script>
<script src="/app/directives/tc-input/tc-input.spec.js"></script>
<script src="/app/directives/tc-paginator/tc-paginator.spec.js"></script>
Expand All @@ -312,8 +314,8 @@ <h1><a href="specs.html">Spec Runner</a></h1>
<script src="/app/peer-review/completed-review/completed-review.spec.js"></script>
<script src="/app/peer-review/edit-review/edit-review.spec.js"></script>
<script src="/app/peer-review/readOnlyScorecard/readOnlyScorecard.spec.js"></script>
<script src="/app/peer-review/review-status/review-status.spec.js"></script>
<script src="/app/profile/about/about.controller.spec.js"></script>
<script src="/app/peer-review/review-status/review-status.spec.js"></script>
<script src="/app/profile/badges/badges.spec.js"></script>
<script src="/app/profile/subtrack/subtrack.spec.js"></script>
<script src="/app/settings/account-info/account-info.spec.js"></script>
Expand Down
9 changes: 7 additions & 2 deletions app/submissions/submissions.spec.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
/* jshint -W117, -W030 */
describe('Submissions Controller', function() {
var controller;
var vm;
var controller, vm;

var mockChallenge = {
challenge: {
Expand All @@ -28,4 +27,10 @@ describe('Submissions Controller', function() {
it('should exist', function() {
expect(vm).to.exist;
});

it('should have properties on vm from the routes resolve', function() {
expect(vm.challengeTitle).to.equal(mockChallenge.challenge.name);
expect(vm.challengeId).to.equal(30049240);
expect(vm.track).to.equal(mockChallenge.challenge.track.toLowerCase());
});
});
25 changes: 14 additions & 11 deletions app/submissions/submit-file/submit-file.controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -99,17 +99,20 @@
fileObject.mediaType = file.type;
}

// If user picks a new file, replace the that file's fileObject with a new one
// Or add it the list if it's not there
if (vm.submissionsBody.data.files.length) {
vm.submissionsBody.data.files.some(function(file, i, filesArray) {
if (file.type === fileObject.type) {
file = fileObject;
} else if (filesArray.length === i + 1) {
filesArray.push(fileObject);
}
});
} else {
// If user changes a file input's file, update the file details
var isFound = vm.submissionsBody.data.files.reduce(function(isFound, file, i, filesArray) {
if (isFound) { return true; }

if (file.type === fileObject.type) {
filesArray[i] = fileObject;
return true;
}

return false;
}, false);

// Add new files to the list
if (!isFound) {
vm.submissionsBody.data.files.push(fileObject);
}
}
Expand Down
245 changes: 237 additions & 8 deletions app/submissions/submit-file/submit-file.spec.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
/* jshint -W117, -W030 */
describe('Submit File Controller', function() {
var controller;
var vm;
var scope;
var controller, vm, scope;

var mockChallenge = {
challenge: {
Expand All @@ -12,14 +10,18 @@ describe('Submit File Controller', function() {
}
};

userService = {
var userService = {
getUserIdentity: function() {
return {
userId: 123456
};
}
};

var submissionsService = {
getPresignedURL: function() {}
};

beforeEach(function() {
bard.appModule('tc.submissions');
bard.inject(this, '$controller', '$rootScope');
Expand All @@ -33,7 +35,8 @@ describe('Submit File Controller', function() {
controller = $controller('SubmitFileController', {
$scope: scope,
UserService: userService,
challengeToSubmitTo: mockChallenge
challengeToSubmitTo: mockChallenge,
SubmissionsService: submissionsService
});
vm = controller;
});
Expand All @@ -42,9 +45,235 @@ describe('Submit File Controller', function() {
expect(vm).to.exist;
});

describe('updateProgress ', function() {
it('should update PREPARE phase end ', function() {

describe('setRankTo1', function() {
it('returns 1 if the input is blank', function() {
expect(vm.setRankTo1('')).to.equal(1);
});

it('returns the input value if not blank', function() {
var inputText = 'sample input text';
var result = vm.setRankTo1(inputText);

expect(result).to.equal(inputText);
});
});


describe('setFileReference', function() {
var file, fieldId;

beforeEach(function() {
file = {
name: 'Dashboard 2.png',
size: 575548,
type: 'image/png'
};
fieldId = 'DESIGN_COVER';

vm.setFileReference(file, fieldId);
scope.$digest();
});

afterEach(function() {
file = undefined;
fieldId = undefined;
});

it('adds a file object to the submissions body', function() {
expect(vm.submissionsBody.data.files).to.have.length(1);
});

it('replaces a file object with a new one if it has the same fieldId', function() {
expect(vm.submissionsBody.data.files).to.have.length(1);

var newFile = {
name: 'different_image.png',
size: 4321,
type: 'image/png'
};

vm.setFileReference(newFile, fieldId);
scope.$digest();

expect(vm.submissionsBody.data.files).to.have.length(1);
expect(vm.submissionsBody.data.files[0].name).to.equal('different_image.png');
});

it('sets the correct mediaTypes on the fileObject', function() {
expect(vm.submissionsBody.data.files[0].mediaType).to.equal('image/png');

var newFile = {
name: 'submission.zip',
size: 43121,
type: 'application/zip'
};
var newFieldId = 'SUBMISSION_ZIP';

vm.setFileReference(newFile, newFieldId);
scope.$digest();

expect(vm.submissionsBody.data.files[1].mediaType).to.equal('application/octet-stream');

var newFile2 = {
name: 'source.zip',
size: 2314,
type: 'application/zip'
};
var newFieldId2 = 'SOURCE_ZIP';

vm.setFileReference(newFile2, newFieldId2);
scope.$digest();

expect(vm.submissionsBody.data.files[2].mediaType).to.equal('application/octet-stream');
});
});

describe('uploadSubmission', function() {
it('adds comments to the submissions body', function() {
vm.comments = 'test comments';
scope.$digest();

vm.uploadSubmission();
scope.$digest();

expect(vm.submissionsBody.data.submitterComments).to.equal('test comments');
});

it('adds the rank to the submissions body', function() {
vm.submissionForm.submitterRank = 3;
scope.$digest();

vm.uploadSubmission();
scope.$digest();

expect(vm.submissionsBody.data.submitterRank).to.equal(3);
});

it('calls the submission service', function() {
var mockAPICall = sinon.spy(submissionsService, 'getPresignedURL');

vm.uploadSubmission();
scope.$digest();

expect(mockAPICall).calledOnce;
});

describe('processes the stockart and', function() {
it('returns an empty array if no stockart given', function() {
vm.formStockarts = [];
scope.$digest();

vm.uploadSubmission();
scope.$digest();

expect(vm.submissionsBody.data.stockArts).to.deep.equal([]);
});

it('removes the required properties and id from each stockart', function() {
vm.formStockarts = [
{
id: 0,
description: 'first stockart',
sourceUrl: 'url.com',
fileNumber: '123',
isPhotoDescriptionRequired: false,
isPhotoURLRequired: false,
isFileNumberRequired: false
},
{
id: 1,
description: 'second stockart',
sourceUrl: 'url2.com',
fileNumber: '234',
isPhotoDescriptionRequired: false,
isPhotoURLRequired: false,
isFileNumberRequired: false
}
];
var processedStockart = [
{
description: 'first stockart',
sourceUrl: 'url.com',
fileNumber: '123',
},
{
description: 'second stockart',
sourceUrl: 'url2.com',
fileNumber: '234',
}
];
scope.$digest();

vm.uploadSubmission();
scope.$digest();
expect(vm.submissionsBody.data.stockArts).to.deep.equal(processedStockart);

});
});
describe('processes the fonts and', function() {
it('returns an empty array if no fonts given', function() {
vm.formFonts = [];
scope.$digest();

vm.uploadSubmission();
scope.$digest();

expect(vm.submissionsBody.data.fonts).to.deep.equal([]);
});

it('removes the required properties and id from each font', function() {
vm.formFonts = [
{
id: 0,
source: 'STUDIO_STANDARD_FONTS_LIST',
name: 'my font',
isFontUrlRequired: false,
isFontUrlDisabled: true,
isFontNameRequired: false,
isFontNameDisabled: true,
isFontSourceRequired: false
},
{
id: 1,
source: 'FONTS_DOT_COM',
name: 'my other font',
sourceUrl: 'fontsource.com',
isFontUrlRequired: false,
isFontUrlDisabled: true,
isFontNameRequired: false,
isFontNameDisabled: true,
isFontSourceRequired: false
}
];
var processedFonts = [
{
source: 'STUDIO_STANDARD_FONTS_LIST',
name: 'my font',
},
{
source: 'FONTS_DOT_COM',
name: 'my other font',
sourceUrl: 'fontsource.com',
}
];
scope.$digest();

vm.uploadSubmission();
scope.$digest();
expect(vm.submissionsBody.data.fonts).to.deep.equal(processedFonts);
});
});
});

describe('cancelRetry', function() {
it('sets showProgress to false', function() {
vm.showProgress = true;
scope.$digest();
expect(vm.showProgress).to.be.true;

vm.cancelRetry();
scope.$digest();
expect(vm.showProgress).to.be.false;
});
});
});