Karma tests function call inside scope.function

I have UploadDocumentCtrl.js where I access a service call to a function inside another function. This external function is associated with a region. My problem is that I cannot access the code statements inside this code (C code block). I want to access the 'flag' variable and check if this is true. Can someone point me in the right direction or tell me what I'm doing wrong here? Thanks..

UploadDocumentsCtrl.js

(function () {
    'use strict';

    angular.module('myApp')
           .controller('UploadDocumentsCtrl', UploadDocumentsCtrl);

    UploadDocumentsCtrl.$inject = ['$rootScope', '$scope', '$modalInstance', '$window', 'companyService'];

    function UploadDocumentsCtrl($rootScope, $scope, $modalInstance, $window, companyService) {

        $scope.onFileSelect = onFileSelect;
        $scope.buttonDisabled = false;



        function onFileSelect(files) {
            //Can access the code here
            function upload(file) {
            //Can access the code here as well
                companyService.uploadDocuments(file)
                    .success(function (data, status, headers, config) {
                   // Code block C 
                  // Cannot access any code here or the error code block below
                        $scope.flag = true;
                    })
                    .error(function (data, status, headers, config) {                        
                    });
            }

            files.forEach(function (file) {
                file.progress = 0;
                file.percent = 0;

                $scope.filesToUpload.push(file);
                upload(file);
            });            
        }
    }
})();

Jasmine test

(function () {
"use strict";
    describe('UploadDocumentsCtrl', function () {
        var scope, companyService,companyControllerFactory;

        beforeEach(angular.mock.module('myApp'));

        beforeEach(inject(function($rootScope, $controller , _companyService_) {
                companyService = _companyService_;
                scope = $rootScope.$new();             
                companyControllerFactory = function(){$controller('UploadDocumentsCtrl',
                            {
                                $scope: scope,
                                companyService: _companyService_
                            });
            };
        }));

        describe("onFileSelect", function() {

            it(" Should make the flag to true ", function() {
                var files = [{}];
                companyControllerFactory();
                spyOn(companyService, 'uploadDocuments').and.returnValue({ success: function(){}});
                scope.onFileSelect(files);
                expect(scope.flag).toBe(true);
            });
        });
    });
})();

The error I get while trying to do the above.

1) true      UploadDocumentsCtrl onFileSelect      Error: companyService.uploadDocuments(...). Success (...) undefined http://localhost:9876/absoluteC:/Users     /Documents/fle/Fle/WebApiRole/app/company/UploadDocumentsCtrl.js?f11d5dcacbf2ca1d63778bfa04c582862e325523 ( 31) upload @http://localhost:9876/absoluteC:/Users/Documents/fle/Fle/WebApiRole/app/company/UploadDocumentsCtrl.js f11d5dcacbf2ca1d63778bfa04c582862e325523: 31:17 onFileSelect/< @http://localhost:9876/absoluteC:/Users/Documents/fle/Fle/WebApiRole/app/company/UploadDocum? EntsCtrl.js f11d5dcacbf2ca1d63778bfa04c582862e325523: 51:17 onFileSelect @http://localhost:9876/absoluteC:/Users/Documents/fle/Fle/WebApiRole/app/company/UploadDocumen? TsCtrl.js f11d5dcacbf2ca1d63778bfa04c582862e325523: 46: 13 @http://localhost:9876/base/test/company/UploadDocumentsCtrlSpec.js?c5db561e203bdfae1a6f7509347d3f7032e8f785:35:17

+4
2

. :

var deffered = q.defer();
                spyOn(companyService, 'uploadDocuments').and.returnValue(deffered.promise);
                deffered.resolve();

, $rootScope. $apply() assert (.. expect())

0

companyService http?

, $httpBackend, $httpBackend.flush().

0

Source: https://habr.com/ru/post/1618884/


All Articles