I am testing a controller with the function listed below. My problem is that the if else statment is based on the result of a promise. How can I capture the result of this promise in order to test the if else statements? At the moment I keep getting Can't find variable data
$scope.get = function (accountId, campaignId, requestId) {
campaignBuyRequestService.getCampaignBuyRequest(global.activeOrganizationId, accountId, campaignId, requestId).then(function (data) {
if (data) {
$.each(data.requestActions, function (index) {
if (data.requestActions[index].statusCode === 10001000) {
data.requestActions[index].statusCodeDisplayText = "Sent";
data.requestActions[index].iconClass = "fa fa-arrow-left";
} else if (data.requestActions[index].statusCode === 10002000) {
data.requestActions[index].statusCodeDisplayText = "Opted In";
data.requestActions[index].iconClass = "fa fa-arrow-right";
} else if (data.requestActions[index].statusCode === 10003000) {
data.requestActions[index].statusCodeDisplayText = "Rejected";
data.requestActions[index].iconClass = "fa fa-exclamation-circle";
} else if (data.requestActions[index].statusCode === 10004000) {
data.requestActions[index].statusCodeDisplayText = "Withdrawn";
data.requestActions[index].iconClass = "fa fa-exclamation-circle";
} else if (data.requestActions[index].statusCode === 10005000) {
data.requestActions[index].statusCodeDisplayText = "Activated";
data.requestActions[index].iconClass = "fa fa-play";
} else if (data.requestActions[index].statusCode === 10006000) {
data.requestActions[index].statusCodeDisplayText = "Canceled";
data.requestActions[index].iconClass = "fa fa-exclamation-circle";
} else if (data.requestActions[index].statusCode === 10007000) {
data.requestActions[index].statusCodeDisplayText = "Paused";
data.requestActions[index].iconClass = "fa fa-pause";
} else {
data.requestActions[index].statusCodeDisplayText = "Unknown";
data.requestActions[index].iconClass = "fa fa-question";
}
});
}
$scope.buyRequest = data;
});
};
My test looks like this:
it('should assign statusCodeDisplayText and Icon class based on status code', function () {
spyOn(scope, "get");
scope.get(buyRequest.requestId, mockStateParams.accountId, mockStateParams.campaignId);
scope.data = spyOn(mockBuyRequestService, 'getCampaignBuyRequest').and.callThrough;
scope.$digest();
expect(data.requestActions[0].statusCodeDisplayText).toEqual('Sent');
expect(data.requestActions[0].iconClass).toEqual('fa fa-arrow-left');
expect(data.requestActions[1].statusCodeDisplayText).toEqual('Withdrawn');
expect(data.requestActions[1].iconClass).toEqual('fa fa-exclamation-circle');
});
Aucun commentaire:
Enregistrer un commentaire