/** * @ngdoc fbPersonnummerSpec * @name fasit.directiveTest.#fbPersonnummerSpec * @fbPersonnummerSpec * * @description * Directive som validerar input för att se om inputen innehåller ett giltigt personnummer eller inte * */ describe("fbPersonnummer", function () { 'use strict'; var element: any; var $scope: any; var link: any; var pincodeServiceMock: fb.IMockPincodeService; var innerScope: any; var timeout: ng.ITimeoutService; var httpBackend: ng.IHttpBackendService; beforeEach(function () { angular.mock.module('fasit', 'fbMocks','configModelMock'); inject(function ($injector, $compile, $rootScope, $timeout, $httpBackend) { $scope = $rootScope; $scope.value = { testValue: '' } var DOM = '
' + '' + '
'; element = angular.element(DOM); link = $compile(element)($scope); $scope.$digest(); timeout = $timeout; innerScope = $scope.$$childTail; }); }); it('borde sätta ngModel.$valid till true respektive false beroende på om personnumret är giltigt eller inte', function () { var giltigt: string = '198703057839'; // korrekt personnummer var ogiltigt: string = '198703057838'; // fel kontrollsiffra $scope.form.testInput.$setViewValue(giltigt); expect($scope.form.testInput.$valid).toBe(true); $scope.form.testInput.$setViewValue(ogiltigt); expect($scope.form.testInput.$valid).toBe(false); }); describe('funktionen valideraPersonnummer', function () { var valideraLista = function (lista: string[], foervaentatVaerde: boolean) { for (var i: number = 0; i < lista.length; i++) { expect($scope.valideraPersonnummer(lista[i])).toBe(foervaentatVaerde); } }; it('borde returnera true för giltiga personnummer', function () { var giltigaPersonnummer: string[] = [ '198703057839', '196712014569' ]; valideraLista(giltigaPersonnummer, true); }); it('borde returnera false för ogiltiga personnummer', function () { var ogiltigaPersonnummer: string[] = [ '', '900624-1319', '198703057838', 'testing numberz', 'he198703057839', '1987030578391' ]; valideraLista(ogiltigaPersonnummer, false); }); it('borde hantera skottår korrekt', function () { var giltigaPersonnummer: string[] = [ '200002291235', '199602291230' ]; var ogiltigaPersonnummer: string[] = [ '200102291234', '190002291235', ]; valideraLista(giltigaPersonnummer, true); valideraLista(ogiltigaPersonnummer, false); }); it('borde inte tillåta ogiltiga datum', function () { var naestaAar: number = new Date().getFullYear() + 1; var ogiltigaPersonnummer: string[] = [ naestaAar + '12311234', '189006241237', '200013011234', '200000011239', '200001001239', '200001321231', ]; valideraLista(ogiltigaPersonnummer, false); }); it('borde beräkna och validera kontrollsiffran korrekt', function () { var giltigaPersonnummer: string[] = [ '198703057839', ]; var ogiltigaPersonnummer: string[] = [ '198703057830', '198703057831', '198703057832', '198703057833', '198703057834', '198703057835', '198703057836', '198703057837', '198703057838', ]; valideraLista(giltigaPersonnummer, true); valideraLista(ogiltigaPersonnummer, false); }); }); });