From 5bdceaaa210de7186c5207378275988133cf2d2a Mon Sep 17 00:00:00 2001 From: efernandez Date: Tue, 12 Feb 2019 12:50:08 -0300 Subject: [PATCH] archivos unit test --- spec/controllerSpec.js | 693 +++++++++++++++++++++++++++++++++++++++++++++++++ spec/routeSpec.js | 27 ++ spec/serviceSpec.js | 120 +++++++++ src/js/app.js | 2 +- test.html | 22 ++ 5 files changed, 863 insertions(+), 1 deletion(-) create mode 100644 spec/controllerSpec.js create mode 100644 spec/routeSpec.js create mode 100644 spec/serviceSpec.js create mode 100644 test.html diff --git a/spec/controllerSpec.js b/spec/controllerSpec.js new file mode 100644 index 0000000..9efd6da --- /dev/null +++ b/spec/controllerSpec.js @@ -0,0 +1,693 @@ +describe('Controladores abm vendedor cobrador', function() { + + var $controller; + + beforeEach(function() { + module('focaAbmVendedorCobrador'); + inject(function(_$controller_) { + $controller = _$controller_; + }); + }) + describe('controlador focaAbmVendedoresCobradoresController', function() { + + var focaBotoneraLateralService = { + showSalir: function() { }, + showPausar: function() { }, + showCancelar: function() { }, + showGuardar: function() { } + }; + + it('existe el controlador focaAbmVendedoresCobradoresController', function() { + //act + var controlador = $controller('focaAbmVendedoresCobradoresController', { + $scope: {}, + focaAbmVendedorCobradorService: {}, + $location: {}, + $filter: {}, + focaBotoneraLateralService: focaBotoneraLateralService, + focaModalService: {} + }); + + //arrange + expect(typeof controlador).toEqual('object'); + }); + + it('la función $scope.editar llama a la url correcta', function() { + inject(function($location) { + + //arrange + var scope = {}; + $controller('focaAbmVendedoresCobradoresController', { + $scope: scope, + focaAbmVendedorCobradorService: {}, + $location: $location, + $filter: {}, + focaBotoneraLateralService: focaBotoneraLateralService, + focaModalService: {} + }); + var paramFake = 1; + + //act + scope.editar(paramFake); + //arrange + expect($location.url()).toEqual('/vendedor-cobrador/' + paramFake); + }); + }); + + it('la función $scope.eliminar llama a modal confirmar', function() { + inject(function($location) { + + //arrange + var scope = {}; + var focaModalService = { + confirm: function() { } + } + $controller('focaAbmVendedoresCobradoresController', { + $scope: scope, + focaAbmVendedorCobradorService: {}, + $location: $location, + $filter: {}, + focaBotoneraLateralService: focaBotoneraLateralService, + focaModalService: focaModalService + }); + var paramFake = 1; + + //act + spyOn(focaModalService, 'confirm').and.returnValue({ then: function() { } }); + scope.eliminar(paramFake); + + //arrange + expect(focaModalService.confirm).toHaveBeenCalled(); + }); + }); + + it('función $scope.eliminar llama eliminarVendedorCobrador al confirm ok', function(done) { + inject(function($location) { + + //arrange + var scope = {}; + var focaModalService = { + confirm: function() { } + }; + var focaAbmVendedorCobradorService = { + eliminarVendedorCobrador: function() { } + }; + $controller('focaAbmVendedoresCobradoresController', { + $scope: scope, + focaAbmVendedorCobradorService: focaAbmVendedorCobradorService, + $location: $location, + $filter: {}, + focaBotoneraLateralService: focaBotoneraLateralService, + focaModalService: focaModalService + }); + var paramFake = 1; + var promesaConfirmar = Promise.resolve(true); + + //act + spyOn(focaModalService, 'confirm').and.returnValue(promesaConfirmar); + spyOn(focaAbmVendedorCobradorService, 'eliminarVendedorCobrador') + .and.returnValue({ then: function() { } }); + scope.eliminar(paramFake); + + //arrange + promesaConfirmar.then(function() { + expect(focaAbmVendedorCobradorService.eliminarVendedorCobrador).toHaveBeenCalled(); + done(); + }); + }); + }); + + it('función $scope.resetPage llama a $scope.selectPage', function() { + + //arrange + var scope = {}; + $controller('focaAbmVendedoresCobradoresController', { + $scope: scope, + focaAbmVendedorCobradorService: {}, + $location: {}, + $filter: {}, + focaBotoneraLateralService: focaBotoneraLateralService, + focaModalService: {} + }); + + //act + spyOn(scope, 'selectPage'); + scope.resetPage(); + + //arrange + expect(scope.selectPage).toHaveBeenCalled(); + }); + + it('función $scope.search llama a getVendedoresCobradores', function() { + + //arrange + var scope = {}; + var focaAbmVendedorCobradorService = { + getVendedoresCobradores: function() { } + }; + $controller('focaAbmVendedoresCobradoresController', { + $scope: scope, + focaAbmVendedorCobradorService: focaAbmVendedorCobradorService, + $location: {}, + $filter: {}, + focaBotoneraLateralService: focaBotoneraLateralService, + focaModalService: {} + }); + + //act + spyOn(focaAbmVendedorCobradorService, 'getVendedoresCobradores') + .and.returnValue({ then: function() { } }); + scope.search(13); + + //arrange + expect(focaAbmVendedorCobradorService.getVendedoresCobradores).toHaveBeenCalled(); + }); + + it('función scope.search llama getVendedoresCobradores y llama resetPage', function(done) { + + //arrange + var scope = {}; + var focaAbmVendedorCobradorService = { + getVendedoresCobradores: function() { } + }; + $controller('focaAbmVendedoresCobradoresController', { + $scope: scope, + focaAbmVendedorCobradorService: focaAbmVendedorCobradorService, + $location: {}, + $filter: {}, + focaBotoneraLateralService: focaBotoneraLateralService, + focaModalService: {} + }); + var promesaVendedores = Promise.resolve({ data: [] }); + + //act + spyOn(focaAbmVendedorCobradorService, 'getVendedoresCobradores') + .and.returnValue(promesaVendedores); + spyOn(scope, 'resetPage'); + scope.vendedoresCobradores = []; + scope.search(13); + + //arrange + promesaVendedores.then(function() { + expect(scope.resetPage).toHaveBeenCalled(); + done(); + }); + }); + }); + + describe('Controlador focaAbmVendedorCobradorController', function() { + + var timeout; + + beforeEach(function() { + inject(function($timeout) { + timeout = $timeout; + }); + }); + + it('existe el controlador focaAbmVendedorCobradorController', function() { + + //act + var controlador = $controller('focaAbmVendedorCobradorController', { + $scope: {}, + focaAbmVendedorCobradorService: { + getCodigoSiguiente: function() { + return { + then: function() { } + }; + }, + getVendedorCobradorById: function() { + return { + then: function() { } + }; + } + }, + $routeParams: {}, + focaBotoneraLateralService: {}, + $timeout: timeout, + $uibModal: {}, + $location: {}, + focaModalService: {} + }); + + //assert + expect(typeof controlador).toEqual('object'); + }); + + it('la función $scope.guardar llama a guardaVendedorCobrador del servicio', function() { + //arrange + var scope= {}; + var focaAbmVendedorCobradorService = { + getCodigoSiguiente: function() { + return { + then: function() { } + }; + }, + getVendedorCobradorById: function() { + return { + then: function() { } + }; + }, + guardarVendedorCobrador: function() { } + }; + $controller('focaAbmVendedorCobradorController', { + $scope: scope, + focaAbmVendedorCobradorService: focaAbmVendedorCobradorService, + $routeParams: {}, + focaBotoneraLateralService: {}, + $timeout: timeout, + $uibModal: {}, + $location: {}, + focaModalService: {} + }); + var responseFake = { + then: function() { + return { + catch: function() { } + }; + } + }; + + //act + spyOn(focaAbmVendedorCobradorService, 'guardarVendedorCobrador') + .and.returnValue(responseFake); + scope.guardar(); + + //assert + expect(focaAbmVendedorCobradorService.guardarVendedorCobrador).toHaveBeenCalled(); + }); + + it('la función $scope.guardar llama a guardaVendedorCobrador y edicion true' + + 'llama a $location.path', function(done) + { + inject(function($location) { + + //arrange + var scope= {}; + var focaAbmVendedorCobradorService = { + getCodigoSiguiente: function() { + return { + then: function() { } + }; + }, + getVendedorCobradorById: function() { + return { + then: function() { } + }; + }, + guardarVendedorCobrador: function() { } + }; + $controller('focaAbmVendedorCobradorController', { + $scope: scope, + focaAbmVendedorCobradorService: focaAbmVendedorCobradorService, + $routeParams: {}, + focaBotoneraLateralService: {}, + $timeout: timeout, + $uibModal: {}, + $location: $location, + focaModalService: {} + }); + var promiseFake = Promise.resolve(true, false); + + //act + spyOn(focaAbmVendedorCobradorService, 'guardarVendedorCobrador') + .and.returnValue(promiseFake); + scope.edicion = true; + scope.guardar(); + + //assert + promiseFake.then(function() { + expect($location.url()).toEqual('/vendedor-cobrador'); + done(); + }); + }); + }); + + it('la función $scope.guardar llama a guardaVendedorCobrador y scope.edicion false' + + 'llama a scope.cambiarContraseña', function(done) + { + //arrange + var scope= {}; + var focaAbmVendedorCobradorService = { + getCodigoSiguiente: function() { + return { + then: function() { } + }; + }, + getVendedorCobradorById: function() { + return { + then: function() { } + }; + }, + guardarVendedorCobrador: function() { } + }; + $controller('focaAbmVendedorCobradorController', { + $scope: scope, + focaAbmVendedorCobradorService: focaAbmVendedorCobradorService, + $routeParams: {}, + focaBotoneraLateralService: {}, + $timeout: timeout, + $uibModal: {}, + $location: {}, + focaModalService: {} + }); + var promiseFake = Promise.resolve(true, false); + + //act + spyOn(focaAbmVendedorCobradorService, 'guardarVendedorCobrador') + .and.returnValue(promiseFake); + spyOn(scope, 'cambiarPassword'); + scope.edicion = false; + scope.guardar(); + + //assert + promiseFake.then(function() { + expect(scope.cambiarPassword).toHaveBeenCalled(); + done(); + }); + }); + + it('la función $scope.guardar llama a guardaVendedorCobrador y llama foca modal alert' + + 'cuando la promsa es rechazada y el error es 409', function(done) + { + //arrange + var scope= {}; + var focaAbmVendedorCobradorService = { + getCodigoSiguiente: function() { + return { + then: function() { } + }; + }, + getVendedorCobradorById: function() { + return { + then: function() { } + }; + }, + guardarVendedorCobrador: function() { } + }; + var focaModalService = { + alert: function() { } + }; + $controller('focaAbmVendedorCobradorController', { + $scope: scope, + focaAbmVendedorCobradorService: focaAbmVendedorCobradorService, + $routeParams: {}, + focaBotoneraLateralService: {}, + $timeout: timeout, + $uibModal: {}, + $location: {}, + focaModalService: focaModalService + }); + var promiseFake = Promise.reject({ status: 409 }); + + //act + spyOn(focaAbmVendedorCobradorService, 'guardarVendedorCobrador') + .and.returnValue(promiseFake); + spyOn(focaModalService, 'alert'); + scope.guardar(); + + //assert + promiseFake.catch(function() { + setTimeout(function() { + expect(focaModalService.alert).toHaveBeenCalled(); + done(); + }, 100) + }); + }); + + it('la función $scope.seleccionarProvincia llama a foca Modal', function() { + //arrange + var scope= {}; + var focaAbmVendedorCobradorService = { + getCodigoSiguiente: function() { + return { + then: function() { } + }; + }, + getVendedorCobradorById: function() { + return { + then: function() { } + }; + }, + }; + var focaModalService = { + modal: function() { } + }; + $controller('focaAbmVendedorCobradorController', { + $scope: scope, + focaAbmVendedorCobradorService: focaAbmVendedorCobradorService, + $routeParams: {}, + focaBotoneraLateralService: {}, + $timeout: timeout, + $uibModal: {}, + $location: {}, + focaModalService: focaModalService + }); + + //act + spyOn(focaModalService, 'modal').and.returnValue({ then: function() { } }); + scope.seleccionarProvincia(13); + + //assert + expect(focaModalService.modal).toHaveBeenCalled(); + }); + + it('función $scope.seleccionarLocalidad llama foca alert si no hay provincia', function() { + //arrange + var scope= {}; + var focaAbmVendedorCobradorService = { + getCodigoSiguiente: function() { + return { + then: function() { } + }; + }, + getVendedorCobradorById: function() { + return { + then: function() { } + }; + }, + }; + var focaModalService = { + alert: function() { } + }; + $controller('focaAbmVendedorCobradorController', { + $scope: scope, + focaAbmVendedorCobradorService: focaAbmVendedorCobradorService, + $routeParams: {}, + focaBotoneraLateralService: {}, + $timeout: timeout, + $uibModal: {}, + $location: {}, + focaModalService: focaModalService + }); + + //act + spyOn(focaModalService, 'alert'); + scope.vendedorCobrador.provincia.ID = false; + scope.seleccionarLocalidad(); + + //assert + expect(focaModalService.alert).toHaveBeenCalled(); + }); + + it('función $scope.seleccionarLocalidad llama foca modal', function() { + //arrange + var scope= {}; + var focaAbmVendedorCobradorService = { + getCodigoSiguiente: function() { + return { + then: function() { } + }; + }, + getVendedorCobradorById: function() { + return { + then: function() { } + }; + }, + }; + var focaModalService = { + modal: function() { } + }; + $controller('focaAbmVendedorCobradorController', { + $scope: scope, + focaAbmVendedorCobradorService: focaAbmVendedorCobradorService, + $routeParams: {}, + focaBotoneraLateralService: {}, + $timeout: timeout, + $uibModal: {}, + $location: {}, + focaModalService: focaModalService + }); + + //act + spyOn(focaModalService, 'modal').and.returnValue({ then: function() { } }); + scope.vendedorCobrador.provincia.ID = true; + scope.seleccionarLocalidad(13); + + //assert + expect(focaModalService.modal).toHaveBeenCalled(); + }); + + it('la función scope.cancelar lleva a location correcte', function() { + + inject(function($location) { + //arrange + var scope = {} + $controller('focaAbmVendedorCobradorController', { + $scope: scope, + focaAbmVendedorCobradorService: { + getCodigoSiguiente: function() { + return { + then: function() { } + }; + }, + getVendedorCobradorById: function() { + return { + then: function() { } + }; + } + }, + $routeParams: {}, + focaBotoneraLateralService: {}, + $timeout: timeout, + $uibModal: {}, + $location: $location, + focaModalService: {} + }); + + //act + scope.formVendedorCobrador = { + $pristine: true + }; + scope.cancelar() + + //assert + expect($location.url()).toEqual('/vendedor-cobrador'); + }); + }); + + it('la funcion scope.next suma uno a scope.focused', function() { + + //arrange + var scope = {}; + $controller('focaAbmVendedorCobradorController', { + $scope: scope, + focaAbmVendedorCobradorService: { + getCodigoSiguiente: function() { + return { + then: function() { } + }; + }, + getVendedorCobradorById: function() { + return { + then: function() { } + }; + } + }, + $routeParams: {}, + focaBotoneraLateralService: {}, + $timeout: timeout, + $uibModal: {}, + $location: {}, + focaModalService: {} + }); + + //act + var esperado = scope.focused + 1; + scope.next(13); + + //assert + expect(scope.focused).toEqual(esperado); + }); + + it('la funcion scope.cambiarPassword abre modal', function() { + + //arrange + var scope = {}; + var uibModal = { + open: function() { } + } + $controller('focaAbmVendedorCobradorController', { + $scope: scope, + focaAbmVendedorCobradorService: { + getCodigoSiguiente: function() { + return { + then: function() { } + }; + }, + getVendedorCobradorById: function() { + return { + then: function() { } + }; + } + }, + $routeParams: {}, + focaBotoneraLateralService: {}, + $timeout: timeout, + $uibModal: uibModal, + $location: {}, + focaModalService: {} + }); + var responseFake = { + result: { + then: function() { } + } + }; + + //act + spyOn(uibModal, 'open').and.returnValue(responseFake); + scope.cambiarPassword(); + + //assert + expect(uibModal.open).toHaveBeenCalled(); + }); + + it('la funcion scope.cambiarPassword abre modal y llama a location cuando edicion es ' + + 'falso', function(done) + { + inject(function($location) { + + //arrange + var scope = {}; + var uibModal = { + open: function() { } + }; + $controller('focaAbmVendedorCobradorController', { + $scope: scope, + focaAbmVendedorCobradorService: { + getCodigoSiguiente: function() { + return { + then: function() { } + }; + }, + getVendedorCobradorById: function() { + return { + then: function() { } + }; + } + }, + $routeParams: {}, + focaBotoneraLateralService: {}, + $timeout: timeout, + $uibModal: uibModal, + $location: $location, + focaModalService: {} + }); + var responseFake = { + result: Promise.resolve(true) + }; + + //act + spyOn(uibModal, 'open').and.returnValue(responseFake); + scope.edicion = false; + scope.cambiarPassword(); + + //assert + responseFake.result.then(function() { + expect($location.url()).toEqual('/vendedor-cobrador'); + done(); + }); + }); + }); + }); +}); diff --git a/spec/routeSpec.js b/spec/routeSpec.js new file mode 100644 index 0000000..3f6c679 --- /dev/null +++ b/spec/routeSpec.js @@ -0,0 +1,27 @@ +describe('Rutas de abm vendedor cobrador', function() { + + var route; + + beforeEach(function() { + module('focaAbmVendedorCobrador'); + inject(function($route) { + route = $route; + }); + }); + + it('ruta /vendedor-cobrador lleva a ruta correcta', function() { + //assert + expect(route.routes['/vendedor-cobrador'].controller) + .toBe('focaAbmVendedoresCobradoresController') + expect(route.routes['/vendedor-cobrador'].templateUrl) + .toBe('src/views/foca-abm-vendedor-cobrador-listado.html') + }); + + it('ruta /vendedor-cobrador/:id lleva a ruta correcta', function() { + //assert + expect(route.routes['/vendedor-cobrador/:id'].controller) + .toBe('focaAbmVendedorCobradorController') + expect(route.routes['/vendedor-cobrador/:id'].templateUrl) + .toBe('src/views/foca-abm-vendedor-cobrador-item.html') + }); +}); diff --git a/spec/serviceSpec.js b/spec/serviceSpec.js new file mode 100644 index 0000000..b4abcb1 --- /dev/null +++ b/spec/serviceSpec.js @@ -0,0 +1,120 @@ +describe('Servicios abm vendedor cobrador', function() { + + var httpBackend; + + beforeEach(function() { + module('focaAbmVendedorCobrador'); + + inject(module(function($provide) { + $provide.value('API_ENDPOINT', { + URL: 'local' + }); + })); + + inject(function($httpBackend) { + httpBackend = $httpBackend; + }); + }); + + describe('Servicio focaAbmVendedorCobradorService', function() { + + var servicio; + + beforeEach(inject(function(focaAbmVendedorCobradorService) { + servicio = focaAbmVendedorCobradorService; + })); + + it('Existe el servicio focaAbmVendedorCobradorService', function() { + //assert + expect(typeof servicio).toEqual('object'); + }); + + it('la función getVendedoresCobradores llama a la ruta correcta', function() { + //arrange + var result; + var fakeResponse = { data: 'test' }; + var fakeBody = 2; + httpBackend.expectPOST('local/vendedor-cobrador/list', { nombre: fakeBody }) + .respond(fakeResponse); + + //act + servicio.getVendedoresCobradores(fakeBody).then(function(data) { + result = data.data; + }); + httpBackend.flush(); + + //assert + expect(result).toEqual(fakeResponse); + }); + + it('la función getVendedorCobradorById llama a la ruta correcta', function() { + //arrange + var result; + var fakeResponse = { data: 'test' }; + var fakeParam = 1; + httpBackend.expectGET('local/vendedor-cobrador/' + fakeParam).respond(fakeResponse); + + //act + servicio.getVendedorCobradorById(fakeParam).then(function(data) { + result = data.data; + }); + httpBackend.flush(); + + //assert + expect(result).toEqual(fakeResponse); + }); + + it('la función guardarVendedorCobrador llama a la ruta correcta', function() { + //arrange + var result; + var fakeResponse = { data: 'test' }; + var fakeBody = 1; + httpBackend.expectPOST('local/vendedor-cobrador', { vendedorCobrador: fakeBody }) + .respond(fakeResponse); + + //act + servicio.guardarVendedorCobrador(fakeBody).then(function(data) { + result = data.data; + }); + httpBackend.flush(); + + //assert + expect(result).toEqual(fakeResponse); + }); + + it('la función eliminarVendedorCobrador llama a la ruta correcta', function() { + //arrange + var result; + var fakeResponse = { data: 'test' }; + var fakeParam = 1; + httpBackend.expectDELETE('local/vendedor-cobrador/' + fakeParam) + .respond(fakeResponse); + + //act + servicio.eliminarVendedorCobrador(fakeParam).then(function(data) { + result = data.data; + }); + httpBackend.flush(); + + //assert + expect(result).toEqual(fakeResponse); + }); + + it('la función getCodigoSiguiente llama a la ruta correcta', function() { + //arrange + var result; + var fakeResponse = { data: 'test' }; + httpBackend.expectGET('local/vendedor-cobrador/obtener/siguiente-codigo') + .respond(fakeResponse); + + //act + servicio.getCodigoSiguiente().then(function(data) { + result = data.data; + }); + httpBackend.flush(); + + //assert + expect(result).toEqual(fakeResponse); + }); + }); +}); diff --git a/src/js/app.js b/src/js/app.js index 76b45ac..7ec9932 100644 --- a/src/js/app.js +++ b/src/js/app.js @@ -1 +1 @@ -angular.module('focaAbmVendedorCobrador', []); +angular.module('focaAbmVendedorCobrador', ['ngRoute']); diff --git a/test.html b/test.html new file mode 100644 index 0000000..30793b9 --- /dev/null +++ b/test.html @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + -- 1.9.1