From 4abfac3b147a454f91b48762b5133254ddd61e1d Mon Sep 17 00:00:00 2001 From: efernandez Date: Wed, 20 Feb 2019 14:15:58 -0300 Subject: [PATCH] unit test servicios y rutas --- gulpfile.js | 3 +- package.json | 3 +- spec/routeSpec.js | 19 +++ spec/serviceSpec.js | 377 +++++++++++++++++++++++++++++++++++++++++++++++++++ src/js/app.js | 2 +- src/js/controller.js | 22 +-- test.html | 21 +++ 7 files changed, 433 insertions(+), 14 deletions(-) create mode 100644 spec/routeSpec.js create mode 100644 spec/serviceSpec.js create mode 100644 test.html diff --git a/gulpfile.js b/gulpfile.js index 0c4021b..8016f71 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -13,6 +13,7 @@ const connect = require('gulp-connect'); var paths = { srcJS: 'src/js/*.js', srcViews: 'src/views/*.html', + specs: 'spec/*.js', tmp: 'tmp', dist: 'dist/' }; @@ -56,7 +57,7 @@ gulp.task('clean', function() { gulp.task('pre-commit', function() { return pump( [ - gulp.src(paths.srcJS), + gulp.src([paths.srcJS, paths.specs]), jshint('.jshintrc'), jshint.reporter('default'), jshint.reporter('fail') diff --git a/package.json b/package.json index 979f503..025b3e1 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "description": "Listado y ABM nota de pedidos", "main": "index.js", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1", + "test": "test.html", "compile": "gulp uglify", "gulp-pre-commit": "gulp pre-commit", "postinstall": "npm run compile && gulp clean-post-install", @@ -37,6 +37,7 @@ "devDependencies": { "angular": "^1.7.5", "angular-ladda": "^0.4.3", + "angular-mocks": "^1.7.7", "angular-route": "^1.7.5", "bootstrap": "^4.1.3", "foca-busqueda-cliente": "git+http://git.focasoftware.com/npm/foca-busqueda-cliente.git", diff --git a/spec/routeSpec.js b/spec/routeSpec.js new file mode 100644 index 0000000..0c40201 --- /dev/null +++ b/spec/routeSpec.js @@ -0,0 +1,19 @@ +describe('Rutas del módulo crear nota de pedido', function() { + + var route; + + beforeEach(function() { + module('focaCrearNotaPedido'); + inject(function($route) { + route = $route; + }); + }); + + it('la ruta /venta-nota-pedido/crear dirige correctamente', function() { + //expect + expect(route.routes['/venta-nota-pedido/crear'].controller) + .toBe('notaPedidoCtrl'); + expect(route.routes['/venta-nota-pedido/crear'].templateUrl) + .toBe('src/views/nota-pedido.html'); + }); +}); diff --git a/spec/serviceSpec.js b/spec/serviceSpec.js new file mode 100644 index 0000000..da87e0d --- /dev/null +++ b/spec/serviceSpec.js @@ -0,0 +1,377 @@ +describe('Servicios módulo crear nota de pedido', function() { + + beforeEach(function() { + module('focaCrearNotaPedido'); + }); + + describe('servicios crearNotaPedidoService', function() { + + var servicio, httpBackend; + + beforeEach(function() { + + inject(module(function($provide) { + $provide.value('API_ENDPOINT', { + URL: 'localhost' + }); + })); + + inject(function(_crearNotaPedidoService_, $httpBackend) { + servicio = _crearNotaPedidoService_; + httpBackend = $httpBackend; + }); + }); + + it('Existe el servicio crearNotaPedidoService', function() { + //assert + expect(typeof servicio).toEqual('object'); + }); + + it('la función crearNotaPedido lleva la ruta correcta', function() { + //arrange + var responseFake = { data: 'test'}; + var result; + var bodyFake = 1; + httpBackend.expectPOST('localhost/nota-pedido', { notaPedido: bodyFake }) + .respond(responseFake); + + //act + servicio.crearNotaPedido(bodyFake).then(function(data) { + result = data.data; + }); + httpBackend.flush(); + + //assert + expect(result).toEqual(responseFake); + }); + + it('la función obtenerNotaPedido lleva la ruta correcta', function() { + //arrange + var responseFake = { data: 'test'}; + var result; + httpBackend.expectGET('localhost/nota-pedido').respond(responseFake); + + //act + servicio.obtenerNotaPedido().then(function(data) { + result = data.data; + }); + httpBackend.flush(); + + //assert + expect(result).toEqual(responseFake); + }); + + it('la función setNotaPedido setea nota pedido', function() { + //arrange + var paramFake = 1; + + //act + servicio.setNotaPedido(paramFake); + + //assert + expect(servicio.notaPedido).toEqual(paramFake); + }); + + it('la función clearNotaPedido setea nota pedido undefined', function() { + + //act + servicio.clearNotaPedido(); + + //assert + expect(servicio.notaPedido).toEqual(undefined); + }); + + it('la función clearNotaPedido setea nota pedido undefined', function() { + //arrange + var paramFake = 1; + + //act + servicio.setNotaPedido(paramFake); + var result = servicio.getNotaPedido(); + + //assert + expect(result).toEqual(paramFake); + }); + + it('la funcion getArticulosByIdNotaPedido llama a la ruta correcta', function() { + + //arrange + var responseFake = { data: 'test'}; + var result; + var paramFake = 1; + httpBackend.expectGET('localhost/articulos/nota-pedido/' + paramFake) + .respond(responseFake); + + //act + servicio.getArticulosByIdNotaPedido(paramFake).then(function(data) { + result = data.data; + }); + httpBackend.flush(); + + //assert + expect(result).toEqual(responseFake); + }); + + it('la funcion crearArticulosParaNotaPedido llama a la ruta correcta', function() { + + //arrange + var responseFake = { data: 'test'}; + var result; + var paramFake = 1; + httpBackend.expectPOST('localhost/articulos/nota-pedido', + {articuloNotaPedido: paramFake}).respond(responseFake); + + //act + servicio.crearArticulosParaNotaPedido(paramFake).then(function(data) { + result = data.data; + }); + httpBackend.flush(); + + //assert + expect(result).toEqual(responseFake); + }); + + it('la funcion getDomiciliosByIdNotaPedido llama a la ruta correcta', function() { + + //arrange + var responseFake = { data: 'test'}; + var result; + var paramFake = 1; + httpBackend.expectGET('localhost/nota-pedido/' + paramFake + '/domicilios') + .respond(responseFake); + + //act + servicio.getDomiciliosByIdNotaPedido(paramFake).then(function(data) { + result = data.data; + }); + httpBackend.flush(); + + //assert + expect(result).toEqual(responseFake); + }); + + it('la funcion getDomiciliosByIdCliente llama a la ruta correcta', function() { + + //arrange + var responseFake = { data: 'test'}; + var result; + var paramFake = 1; + httpBackend.expectGET('localhost/domicilio/tipo/2/cliente/' + paramFake ) + .respond(responseFake); + + //act + servicio.getDomiciliosByIdCliente(paramFake).then(function(data) { + result = data.data; + }); + httpBackend.flush(); + + //assert + expect(result).toEqual(responseFake); + }); + + it('la funcion getPrecioCondicion llama a la ruta correcta', function() { + + //arrange + var responseFake = { data: 'test'}; + var result; + httpBackend.expectGET('localhost/precio-condicion').respond(responseFake); + + //act + servicio.getPrecioCondicion().then(function(data) { + result = data.data; + }); + httpBackend.flush(); + + //assert + expect(result).toEqual(responseFake); + }); + + it('la funcion getPrecioCondicionById llama a la ruta correcta', function() { + + //arrange + var responseFake = { data: 'test'}; + var result; + var paramFake = 1; + httpBackend.expectGET('localhost/precio-condicion/' + paramFake).respond(responseFake); + + //act + servicio.getPrecioCondicionById(paramFake).then(function(data) { + result = data.data; + }); + httpBackend.flush(); + + //assert + expect(result).toEqual(responseFake); + }); + + it('la funcion getPlazoPagoByPrecioCondicion llama a la ruta correcta', function() { + + //arrange + var responseFake = { data: 'test'}; + var result; + var paramFake = 1; + httpBackend.expectGET('localhost/plazo-pago/precio-condicion/' + paramFake) + .respond(responseFake); + + //act + servicio.getPlazoPagoByPrecioCondicion(paramFake).then(function(data) { + result = data.data; + }); + httpBackend.flush(); + + //assert + expect(result).toEqual(responseFake); + }); + + it('la funcion crearFlete llama a la ruta correcta', function() { + + //arrange + var responseFake = { data: 'test'}; + var result; + var paramFake = 1; + httpBackend.expectPOST('localhost/flete', { flete: paramFake }) + .respond(responseFake); + + //act + servicio.crearFlete(paramFake).then(function(data) { + result = data.data; + }); + httpBackend.flush(); + + //assert + expect(result).toEqual(responseFake); + }); + + it('la funcion crearPlazosParaNotaPedido llama a la ruta correcta', function() { + + //arrange + var responseFake = { data: 'test'}; + var result; + var paramFake = 1; + httpBackend.expectPOST('localhost/plazo-pago/nota-pedido', { plazos: paramFake }) + .respond(responseFake); + + //act + servicio.crearPlazosParaNotaPedido(paramFake).then(function(data) { + result = data.data; + }); + httpBackend.flush(); + + //assert + expect(result).toEqual(responseFake); + }); + + it('la funcion getCotizacionByIdMoneda llama a la ruta correcta', function() { + + //arrange + var responseFake = { data: 'test'}; + var result; + var paramFake = 1; + httpBackend.expectGET('localhost/moneda/' + paramFake).respond(responseFake); + + //act + servicio.getCotizacionByIdMoneda(paramFake).then(function(data) { + result = data.data; + }); + httpBackend.flush(); + + //assert + expect(result).toEqual(responseFake); + }); + + it('la funcion crearEstadoParaNotaPedido llama a la ruta correcta', function() { + + //arrange + var responseFake = { data: 'test'}; + var result; + var paramFake = 1; + httpBackend.expectPOST('localhost/estado', { estado: paramFake }) + .respond(responseFake); + + //act + servicio.crearEstadoParaNotaPedido(paramFake).then(function(data) { + result = data.data; + }); + httpBackend.flush(); + + //assert + expect(result).toEqual(responseFake); + }); + + it('la funcion getNumeroNotaPedido llama a la ruta correcta', function() { + + //arrange + var responseFake = { data: 'test'}; + var result; + httpBackend.expectGET('localhost/nota-pedido/numero-siguiente').respond(responseFake); + + //act + servicio.getNumeroNotaPedido().then(function(data) { + result = data.data; + }); + httpBackend.flush(); + + //assert + expect(result).toEqual(responseFake); + }); + + it('la funcion crearPuntosDescarga llama a la ruta correcta', function() { + + //arrange + var responseFake = { data: 'test'}; + var result; + var paramFake = 1; + httpBackend.expectPOST('localhost/puntos-descarga/nota-pedido', + { puntosDescarga: paramFake }).respond(responseFake); + + //act + servicio.crearPuntosDescarga(paramFake).then(function(data) { + result = data.data; + }); + httpBackend.flush(); + + //assert + expect(result).toEqual(responseFake); + }); + + it('la funcion getPuntosDescargaByClienDom llama a la ruta correcta', function() { + + //arrange + var responseFake = { data: 'test'}; + var result; + var paramFake = 1; + var paramFake2 = 1; + httpBackend.expectGET('localhost/punto-descarga/' + paramFake + '/' + paramFake2) + .respond(responseFake); + + //act + servicio.getPuntosDescargaByClienDom(paramFake, paramFake2).then(function(data) { + result = data.data; + }); + httpBackend.flush(); + + //assert + expect(result).toEqual(responseFake); + }); + + it('la funcion getVendedorById llama a la ruta correcta', function() { + + //arrange + var responseFake = { data: 'test'}; + var result; + var paramFake = 1; + httpBackend.expectGET('localhost/vendedor-cobrador/' + paramFake) + .respond(responseFake); + + //act + servicio.getVendedorById(paramFake).then(function(data) { + result = data.data; + }); + httpBackend.flush(); + + //assert + expect(result).toEqual(responseFake); + }); + + }); +}); diff --git a/src/js/app.js b/src/js/app.js index 0b40e3d..f5f2f70 100644 --- a/src/js/app.js +++ b/src/js/app.js @@ -1 +1 @@ -angular.module('focaCrearNotaPedido', []); +angular.module('focaCrearNotaPedido', ['ngRoute']); diff --git a/src/js/controller.js b/src/js/controller.js index 3819905..e2def0d 100644 --- a/src/js/controller.js +++ b/src/js/controller.js @@ -49,12 +49,12 @@ angular.module('focaCrearNotaPedido') .controller('notaPedidoCtrl', } else { $scope.botonera = crearNotaPedidoService.getBotonera(); } - + //Trabajo con la cotización más reciente, por eso uso siempre la primera '[0]' crearNotaPedidoService.getCotizacionByIdMoneda(1).then(function(res) { $scope.monedaDefecto = res.data[0]; $scope.cotizacionDefecto = $scope.monedaDefecto.cotizaciones[0]; - + init(); }); } @@ -71,7 +71,7 @@ angular.module('focaCrearNotaPedido') .controller('notaPedidoCtrl', moneda: $scope.monedaDefecto, cotizacion: $scope.cotizacionDefecto }; - + $scope.articulosTabla = []; $scope.idLista = undefined; @@ -194,7 +194,7 @@ angular.module('focaCrearNotaPedido') .controller('notaPedidoCtrl', dias: plazo.dias }); }); - + if (plazosACrear.length) { crearNotaPedidoService.crearPlazosParaNotaPedido(plazosACrear); } @@ -204,7 +204,7 @@ angular.module('focaCrearNotaPedido') .controller('notaPedidoCtrl', focaBotoneraLateralService.endGuardar(true); $scope.saveLoading = false; - + init(); }, function(error) { focaModalService.alert('Hubo un error al crear la nota de pedido'); @@ -308,7 +308,7 @@ angular.module('focaCrearNotaPedido') .controller('notaPedidoCtrl', } cabeceras.push(cabeceraBomba); } - + $scope.articulosTabla = notaPedido.articulosNotaPedido; notaPedidoBusinessService.calcularArticulos($scope.articulosTabla, notaPedido.cotizacion.VENDEDOR); @@ -318,15 +318,15 @@ angular.module('focaCrearNotaPedido') .controller('notaPedidoCtrl', } else { $scope.idLista = -1; } - + $scope.puntoVenta = $filter('rellenarDigitos')( notaPedido.sucursal, 4 ); - + $scope.comprobante = $filter('rellenarDigitos')( notaPedido.numeroNotaPedido, 8 ); - + $scope.notaPedido = notaPedido; $scope.notaPedido.moneda = notaPedido.cotizacion.moneda; $scope.plazosPagos = notaPedido.notaPedidoPlazo; @@ -767,14 +767,14 @@ angular.module('focaCrearNotaPedido') .controller('notaPedidoCtrl', modalInstance.result.then( function(cotizacion) { var articulosTablaTemp = $scope.articulosTabla; - + for(var i = 0; i < articulosTablaTemp.length; i++) { articulosTablaTemp[i].precio = articulosTablaTemp[i].precio * $scope.notaPedido.cotizacion.VENDEDOR; articulosTablaTemp[i].precio = articulosTablaTemp[i].precio / cotizacion.VENDEDOR; } - + $scope.articulosTabla = articulosTablaTemp; $scope.notaPedido.moneda = moneda; $scope.monedaDefecto = moneda; diff --git a/test.html b/test.html new file mode 100644 index 0000000..6c50ce2 --- /dev/null +++ b/test.html @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + -- 1.9.1