Summary Table

Categories Total Count
PII 0
URL 0
DNS 0
EKL 0
IP 0
PORT 0
VsID 0
CF 0
AI 0
VPD 0
PL 0
Other 0

File Content

define(['VideoSubmitController'], function() {
'use strict';

describe("The Video Submit Controller", function () {
var controller,
scope,
videoServiceMock,
videoSubmitEvaluationServiceMock,
fhirPatientMock,
stateMock,
mediaRequest = {
status: ''
},
evaluation = {
status: ''
};

beforeEach(function () {
module('angularTemplateApp');

stateMock = jasmine.createSpyObj('$state', ['go']);
videoServiceMock = jasmine.createSpyObj('videoService', ['getMediaRequest', 'getEvaluation']);
videoSubmitEvaluationServiceMock = jasmine.createSpyObj('videoSubmitEvaluationService', ['reset', 'submit']);
fhirPatientMock = jasmine.createSpyObj('fhirPatient', ['fetch']);

videoServiceMock.getMediaRequest.and.callFake(function () {
return mediaRequest;
});

videoServiceMock.getEvaluation.and.callFake(function () {
return evaluation;
});

fhirPatientMock.fetch.and.returnValue({
then: function () {}
});

module(function ($provide) {
$provide.value('$state', stateMock);
$provide.value('videoService', videoServiceMock);
$provide.value('videoSubmitEvaluationService', videoSubmitEvaluationServiceMock);
$provide.value('fhirPatient', fhirPatientMock);
});

inject(function($controller, $rootScope) {
scope = $rootScope.$new();
controller = $controller;
});
});

describe("initial state", function () {
it("should correctly set initial values", function () {
controller = controller('VideoSubmitController', {$scope: scope});
scope.$apply();

expect(scope.showProgressBar).toBeFalsy();
expect(scope.infoText).toEqual('After reviewing the information you submitted, the provider may need to contact you with follow up questions');
});
});

describe("submitCallback", function () {
var result;

beforeEach(function () {
controller = controller('VideoSubmitController', {$scope: scope});
evaluation = {
status: 'STARTED'
};

mediaRequest = {
status: 'PENDING'
};

scope.submitCallback();
});

it("should update the evaluation status", function () {
expect(evaluation).toEqual({
status: 'COMPLETED'
});
});

it("should update the mediaRequest status", function () {
expect(mediaRequest).toEqual({
status: 'SUBMITTED'
});
});

it("should reset the submitEvaluation service", function () {
expect(videoSubmitEvaluationServiceMock.reset).toHaveBeenCalled();
});

it("should submit the evaluation", function () {
expect(videoSubmitEvaluationServiceMock.submit).toHaveBeenCalled();
});
});

describe("previousCallback function", function () {
it("should go to video instructions page", function () {
controller = controller('VideoSubmitController', {$scope: scope});
scope.previousCallback();

expect(stateMock.go).toHaveBeenCalledWith('main.myvideo.video-upload');
});
});

it("should extend the shared SubmitController", function () {
controller = controller('VideoSubmitController', {$scope: scope});

expect(scope.contactType).toEqual('email');
expect(scope.contactInfo).toEqual({
email: '',
phone: ''
});
});
});
});