describe('ObjektIProjektCtrl', function () { var $scope: fb.IObjektIProjektScope; beforeEach(function () { angular.mock.module('fasit', 'fbMocks'); inject(function ($rootScope, getMaeklarObjekt) { $scope = $rootScope.$new(); getMaeklarObjekt.ProjektInfo = { ObjektTypIdFoerObjektIProjekt: new fb.ChangeTrack(13), ValdaKolumnerFoerObjektIProjekt: new fb.ChangeTrack(null)}; $scope.$parent.maeklarObjekt = new fb.MaeklarObjektDO(getMaeklarObjekt); }); }); //it('borde hämta kolumner från state-servicen', inject(function ($injector, $controller, getObjektIProjekt) { // var objektIProjektService: fb.IMockObjektIProjektService = $injector.get('objektIProjektService'); // var stateService: fb.IStateService = $injector.get('stateService'); // spyOn(stateService, 'loadState').and.returnValue({ // ObjektNummer: { // show: true, // ShowName: 'ObjektNummer', // }, // AdressText: { // show: false, // ShowName: 'AdressText', // }, // LghRefNr: { // show: true, // ShowName: 'LghRefNr', // }, // UppdragStatusSpecifikation: { // show: false, // ShowName: 'UppdragStatusSpecifikation', // }, // BoYta: { // show: true, // ShowName: 'BoYta', // }, // AntalRum: { // show: false, // ShowName: 'AntalRum', // }, // Pris: { // show: false, // ShowName: 'Pris', // }, // Avgift: { // show: false, // ShowName: 'Avgift', // }, // Vaaningsplan: { // show: true, // ShowName: 'Vaaningsplan', // } // }); // var ctrl = $controller('ObjektIProjektCtrl', { // $scope: $scope, // objektIProjektService: objektIProjektService, // stateService: stateService // }); // $scope.$digest(); // expect($scope.Kolumner['ObjektNummer'].show).toBeTruthy(); // expect($scope.Kolumner['AdressText'].show).toBeFalsy(); // expect($scope.Kolumner['LghRefNr'].show).toBeTruthy(); // expect($scope.Kolumner['UppdragStatusSpecifikation'].show).toBeFalsy(); // expect($scope.Kolumner['BoYta'].show).toBeTruthy(); // expect($scope.Kolumner['AntalRum'].show).toBeFalsy(); // expect($scope.Kolumner['Pris'].show).toBeFalsy(); // expect($scope.Kolumner['Avgift'].show).toBeFalsy(); // expect($scope.Kolumner['Vaaningsplan'].show).toBeTruthy(); //})); it('borde sätta default-kolumner', inject(function ($injector, $controller, getObjektIProjekt) { var objektIProjektService: fb.IMockObjektIProjektService = $injector.get('objektIProjektService'); //var stateService: fb.IStateService = $injector.get('stateService'); //spyOn(stateService, 'loadState').and.returnValue({}); var ctrl = $controller('ObjektIProjektCtrl', { $scope: $scope, objektIProjektService: objektIProjektService//, //stateService: stateService }); $scope.$digest(); expect($scope.Kolumner['ObjektNummer'].show).toBeTruthy(); expect($scope.Kolumner['AdressText'].show).toBeTruthy(); expect($scope.Kolumner['LghRefNr'].show).toBeTruthy(); expect($scope.Kolumner['UppdragStatusSpecifikation'].show).toBeFalsy(); expect($scope.Kolumner['BoYta'].show).toBeTruthy(); expect($scope.Kolumner['AntalRum'].show).toBeTruthy(); expect($scope.Kolumner['Pris'].show).toBeTruthy(); expect($scope.Kolumner['Avgift'].show).toBeFalsy(); expect($scope.Kolumner['Vaaningsplan'].show).toBeFalsy(); })); //it('borde spara state vid $destroy', inject(function ($injector, $controller, getObjektIProjekt) { // var objektIProjektService: fb.IMockObjektIProjektService = $injector.get('objektIProjektService'); // var stateService: fb.IStateService = $injector.get('stateService'); // spyOn(stateService, 'loadState').and.returnValue({}); // spyOn(stateService, 'addState'); // var ctrl = $controller('ObjektIProjektCtrl', { // $scope: $scope, // objektIProjektService: objektIProjektService, // stateService: stateService // }); // $scope.$digest(); // expect(stateService.addState).not.toHaveBeenCalled(); // $scope.$destroy(); // expect(stateService.addState).toHaveBeenCalled(); //})); it('borde kunna lägga till nytt objekt i projekt', inject(function ($injector, $controller, getObjektIProjekt, $q: ng.IQService) { var objektIProjektService: fb.IMockObjektIProjektService = $injector.get('objektIProjektService'); //var stateService: fb.IStateService = $injector.get('stateService'); var globalTimerService: fb.IGlobalTimerService = $injector.get('globalTimerService'); var deferred = $q.defer(); //spyOn(stateService, 'loadState').and.returnValue({}); spyOn(objektIProjektService, 'skapaObjektIProjekt').and.returnValue(new fb.ResourceBase({})); spyOn(globalTimerService, 'globalSave').and.returnValue(deferred.promise); var ctrl = $controller('ObjektIProjektCtrl', { $scope: $scope, objektIProjektService: objektIProjektService, //stateService: stateService, globalTimerService: globalTimerService }); $scope.$digest(); objektIProjektService.resolve(fb.RequestType.GET, '10001', []); $scope.$digest(); spyOn($scope, 'uppdateraLista'); expect($scope.uppdateraLista).not.toHaveBeenCalled(); expect(objektIProjektService.skapaObjektIProjekt).not.toHaveBeenCalled(); $scope.LaeggTillObjektIProjekt(); deferred.resolve(); $scope.$digest(); expect(objektIProjektService.skapaObjektIProjekt).toHaveBeenCalled(); })); it('borde kunna ta bort markerade projekt', inject(function ($injector, $controller, getObjektIProjekt) { var objektIProjektService: fb.IMockObjektIProjektService = $injector.get('objektIProjektService'); var maeklarObjektService: fb.IMockMaeklarObjektService = $injector.get('maeklarObjektService'); //var stateService: fb.IStateService = $injector.get('stateService'); //spyOn(stateService, 'loadState').and.returnValue({}); var ctrl = $controller('ObjektIProjektCtrl', { $scope: $scope, objektIProjektService: objektIProjektService//, //stateService: stateService }); $scope.$digest(); objektIProjektService.resolve(fb.RequestType.GET, $scope.$parent.maeklarObjekt.MaeklarObjektId.value + '', getObjektIProjekt); $scope.$digest(); $scope.ObjektIProjekt[0].UppdragStatus.value = fb.FasITDomain.UppdragStatus.AATERTAGEN; $scope.ObjektIProjekt[2].UppdragStatus.value = fb.FasITDomain.UppdragStatus.PROJEKT_AVSLUTAT; $scope.ObjektIProjekt[4].UppdragStatus.value = fb.FasITDomain.UppdragStatus.SAALD; $scope.markeradeObjekt = [ $scope.ObjektIProjekt[0], $scope.ObjektIProjekt[2], $scope.ObjektIProjekt[4], ]; spyOn(maeklarObjektService, 'remove').and.returnValue(new fb.ResourceBase({})); $scope.taBort.TaBortMarkerade(); expect(maeklarObjektService.remove).toHaveBeenCalledWith([$scope.ObjektIProjekt[0].MaeklarObjektId.value, $scope.ObjektIProjekt[2].MaeklarObjektId.value, $scope.ObjektIProjekt[4].MaeklarObjektId.value]); })); it('borde ha variabel för visning av felaktigt antal markerade objekt för duplicering dialogen', inject(function ($injector, $controller, getObjektIProjekt) { var objektIProjektService: fb.IMockObjektIProjektService = $injector.get('objektIProjektService'); var maeklarObjektService: fb.IMockMaeklarObjektService = $injector.get('maeklarObjektService'); var ctrl = $controller('ObjektIProjektCtrl', { $scope: $scope, objektIProjektService: objektIProjektService }); $scope.$digest(); objektIProjektService.resolve(fb.RequestType.GET, '10001', []); $scope.$digest(); $scope.DupliceraObjekt.DupliceraMarkerad(); expect($scope.DupliceraObjekt.FelaktigtAntalMarkeradeDialog).toBeTruthy(); $scope.markeradeObjekt.push($scope.ObjektIProjekt[0]); $scope.$digest(); expect($scope.DupliceraObjekt.FelaktigtAntalMarkeradeDialog).toBeFalsy(); })); it('borde kunna duplicera markerat objekt', inject(function ($injector, $controller, getObjektIProjekt) { var objektIProjektService: fb.IMockObjektIProjektService = $injector.get('objektIProjektService'); var maeklarObjektService: fb.IMockMaeklarObjektService = $injector.get('maeklarObjektService'); spyOn(objektIProjektService, 'dupliceraObjektIProjekt').and.returnValue(new fb.DupliceraMaeklarobjektIProjektResultatWO({DetGickBra: true, AntalSkapadeKopior: 3})); var ctrl = $controller('ObjektIProjektCtrl', { $scope: $scope, objektIProjektService: objektIProjektService }); $scope.$digest(); objektIProjektService.resolve(fb.RequestType.GET, $scope.$parent.maeklarObjekt.MaeklarObjektId.value + '', getObjektIProjekt); $scope.$digest(); $scope.markeradeObjekt.push($scope.ObjektIProjekt[0]); $scope.DupliceraObjekt.DupliceraMarkerad(); expect(objektIProjektService.dupliceraObjektIProjekt).toHaveBeenCalled(); })); it('borde ha en funktion för att stoppa event propagation', inject(function ($injector, $controller, getObjektIProjekt) { var event = { stopPropagation: function () { } }; spyOn(event, 'stopPropagation'); var objektIProjektService: fb.IMockObjektIProjektService = $injector.get('objektIProjektService'); var maeklarObjektService: fb.IMockMaeklarObjektService = $injector.get('maeklarObjektService'); var ctrl = $controller('ObjektIProjektCtrl', { $scope: $scope, objektIProjektService: objektIProjektService }); $scope.$digest(); $scope.preventClose(event); expect(event.stopPropagation).toHaveBeenCalled(); })); });