diff --git a/gulpfile.js b/gulpfile.js index 8016f71..52da8c0 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -9,6 +9,8 @@ const pump = require('pump'); const jshint = require('gulp-jshint'); const replace = require('gulp-replace'); const connect = require('gulp-connect'); +const header = require('gulp-header'); +const footer = require('gulp-footer'); var paths = { srcJS: 'src/js/*.js', @@ -32,7 +34,7 @@ gulp.task('templates', ['clean'], function() { ); }); -gulp.task('uglify', ['templates'], function() { +gulp.task('uglify', ['templates', 'uglify-spec'], function() { return pump( [ gulp.src([ @@ -49,6 +51,17 @@ gulp.task('uglify', ['templates'], function() { ); }); +gulp.task('uglify-spec', function() { + return pump([ + gulp.src(paths.specs), + concat('foca-crear-nota-pedido.spec.js'), + replace("src/views/", ''), + header("describe('Módulo foca-crear-nota-pedido', function() { \n"), + footer("});"), + gulp.dest(paths.dist) + ]); +}); + gulp.task('clean', function() { return gulp.src(['tmp', 'dist'], {read: false}) .pipe(clean()); @@ -75,7 +88,7 @@ gulp.task('webserver', function() { gulp.task('clean-post-install', function() { return gulp.src(['src', 'tmp', '.jshintrc','readme.md', '.gitignore', 'gulpfile.js', - 'index.html'], {read: false}) + 'index.html', 'test.html', 'spec'], {read: false}) .pipe(clean()); }); diff --git a/spec/controllerSpec.js b/spec/controllerSpec.js new file mode 100644 index 0000000..06fbc68 --- /dev/null +++ b/spec/controllerSpec.js @@ -0,0 +1,1491 @@ +describe('Controladores módulo crear nota de pedido', function() { + + var $controler; + + beforeEach(function() { + module('focaCrearNotaPedido'); + inject(function(_$controller_) { + $controler = _$controller_; + }); + }); + + describe('Controlador notaPedidoCtrl', function() { + + var filter = function() { + return function() { }; + }; + var timeout; + + beforeEach(function() { + + inject(function($timeout) { + timeout = $timeout; + }); + }); + + it('La función seleccionarNotaPedido levanta modal', function() { + //arrange + var scope = {}; + var uibModal = { + open: function() { } + }; + + $controler('notaPedidoCtrl', { + $scope: scope, + $uibModal: uibModal, + $location: {}, + $filter: filter, + $timeout: timeout, + crearNotaPedidoService: { + getBotonera: function() { }, + getCotizacionByIdMoneda: function() { + return { + then: function() { } + }; + } + }, + focaBotoneraLateralService: {}, + focaModalService: {}, + notaPedidoBusinessService: {}, + $rootScope: { + $on: function() { } + }, + focaSeguimientoService: {}, + APP: {}, + focaLoginService: {} + }); + var respuesta = { result: { then: function() { } } }; + + //act + spyOn(uibModal, 'open').and.returnValue(respuesta); + scope.seleccionarNotaPedido(); + + //assert + expect(uibModal.open).toHaveBeenCalled(); + }); + + it('La función seleccionarNotaPedido llama a broadCast en promesa', function(done) { + //arrange + var scope = {}; + var uibModal = { + open: function() { } + }; + + $controler('notaPedidoCtrl', { + $scope: scope, + $uibModal: uibModal, + $location: {}, + $filter: filter, + $timeout: timeout, + crearNotaPedidoService: { + getBotonera: function() { }, + getCotizacionByIdMoneda: function() { + return { + then: function() { } + }; + } + }, + focaBotoneraLateralService: {}, + focaModalService: {}, + notaPedidoBusinessService: { + plazoToString: function() { }, + calcularArticulos: function() { } + }, + $rootScope: { + $on: function() { } + }, + focaSeguimientoService: {}, + APP: {}, + focaLoginService: {} + }); + var notaPedido = { + cotizacion: { + moneda: {} + }, + cliente: {}, + vendedor: {}, + proveedor: {}, + notaPedidoPlazo: {}, + notaPedidoPuntoDescarga: [] + }; + var respuesta = { result: Promise.resolve(notaPedido) }; + + //act + scope.notaPedido = {}; + scope.$broadcast = function() { }; + spyOn(uibModal, 'open').and.returnValue(respuesta); + spyOn(scope, '$broadcast'); + scope.seleccionarNotaPedido(); + + //assert + respuesta.result.then(function() { + expect(scope.$broadcast).toHaveBeenCalledWith('removeCabecera', 'Bomba:'); + expect(scope.$broadcast).toHaveBeenCalledWith('removeCabecera', 'Kilometros:'); + done(); + }); + }); + + it('función seleccionarProductos muestra alerta cuando idLista undefined', function() { + //arrange + var scope = {}; + var focaModalService = { + alert: function() { } + }; + + $controler('notaPedidoCtrl', { + $scope: scope, + $uibModal: {}, + $location: {}, + $filter: filter, + $timeout: timeout, + crearNotaPedidoService: { + getBotonera: function() { }, + getCotizacionByIdMoneda: function() { + return { + then: function() { } + }; + } + }, + focaBotoneraLateralService: {}, + focaModalService: focaModalService, + notaPedidoBusinessService: {}, + $rootScope: { + $on: function() { } + }, + focaSeguimientoService: {}, + APP: {}, + focaLoginService: {} + }); + + //act + spyOn(focaModalService, 'alert'); + scope.idLista = undefined; + scope.seleccionarProductos(); + + //assert + expect(focaModalService.alert) + .toHaveBeenCalledWith('Primero seleccione una lista de precio y condicion'); + }); + + it('función seleccionarProductos abre modal', function() { + //arrange + var scope = {}; + var uibModal = { + open: function() { } + }; + + $controler('notaPedidoCtrl', { + $scope: scope, + $uibModal: uibModal, + $location: {}, + $filter: filter, + $timeout: timeout, + crearNotaPedidoService: { + getBotonera: function() { }, + getCotizacionByIdMoneda: function() { + return { + then: function() { } + }; + } + }, + focaBotoneraLateralService: {}, + focaModalService: {}, + notaPedidoBusinessService: {}, + $rootScope: { + $on: function() { } + }, + focaSeguimientoService: {}, + APP: {}, + focaLoginService: {} + }); + scope.idLista = true; + scope.notaPedido = { + cotizacion: {}, + moneda: {} + }; + var respuesta = { result: {then: function() { } } }; + + //act + spyOn(uibModal, 'open').and.returnValue(respuesta); + scope.seleccionarProductos(); + + //assert + expect(uibModal.open).toHaveBeenCalled(); + }); + + it('función seleccionarPuntosDeDescarga muestra alerta cuando cliente y domicilio son' + + 'undefined', function() + { + //arrange + var scope = {}; + var focaModalService = { + alert: function() { } + }; + + $controler('notaPedidoCtrl', { + $scope: scope, + $uibModal: {}, + $location: {}, + $filter: filter, + $timeout: timeout, + crearNotaPedidoService: { + getBotonera: function() { }, + getCotizacionByIdMoneda: function() { + return { + then: function() { } + }; + } + }, + focaBotoneraLateralService: {}, + focaModalService: focaModalService, + notaPedidoBusinessService: {}, + $rootScope: { + $on: function() { } + }, + focaSeguimientoService: {}, + APP: {}, + focaLoginService: {} + }); + scope.idLista = true; + scope.notaPedido = { + cliente: { COD: false }, + domicilio: { id: false} + }; + + //act + spyOn(focaModalService, 'alert'); + scope.seleccionarPuntosDeDescarga(); + + //assert + expect(focaModalService.alert).toHaveBeenCalled(); + }); + + it('función seleccionarPuntosDeDescarga abre modal', function() { + //arrange + var scope = {}; + var uibModal = { + open: function() { } + }; + + $controler('notaPedidoCtrl', { + $scope: scope, + $uibModal: uibModal, + $location: {}, + $filter: filter, + $timeout: timeout, + crearNotaPedidoService: { + getBotonera: function() { }, + getCotizacionByIdMoneda: function() { + return { + then: function() { } + }; + } + }, + focaBotoneraLateralService: {}, + focaModalService: {}, + notaPedidoBusinessService: {}, + $rootScope: { + $on: function() { } + }, + focaSeguimientoService: {}, + APP: {}, + focaLoginService: {} + }); + scope.idLista = true; + scope.notaPedido = { + cliente: { COD: true }, + domicilio: { id: true } + }; + var respuesta = { result: { then: function() { } } }; + + //act + spyOn(uibModal, 'open').and.returnValue(respuesta); + scope.seleccionarPuntosDeDescarga(); + + //assert + expect(uibModal.open).toHaveBeenCalled(); + }); + + it('función seleccionarPuntosDeDescarga setea punto elegido', function(done) { + //arrange + var scope = {}; + var uibModal = { + open: function() { } + }; + + $controler('notaPedidoCtrl', { + $scope: scope, + $uibModal: uibModal, + $location: {}, + $filter: filter, + $timeout: timeout, + crearNotaPedidoService: { + getBotonera: function() { }, + getCotizacionByIdMoneda: function() { + return { + then: function() { } + }; + } + }, + focaBotoneraLateralService: {}, + focaModalService: {}, + notaPedidoBusinessService: {}, + $rootScope: { + $on: function() { } + }, + focaSeguimientoService: {}, + APP: {}, + focaLoginService: {} + }); + scope.idLista = true; + scope.notaPedido = { + cliente: { COD: true }, + domicilio: { id: true } + }; + var respuesta = []; + var promiseRespuesta = { result: Promise.resolve(respuesta) }; + scope.$broadcast = function() { }; + + //act + spyOn(uibModal, 'open').and.returnValue(promiseRespuesta); + scope.seleccionarPuntosDeDescarga(); + + //assert + promiseRespuesta.result.then(function() { + expect(scope.notaPedido.puntosDescarga).toEqual(respuesta); + done(); + }); + }); + + it('función seleccionarVendedor abre modal', function() { + //arrange + var scope = {}; + var focaModalService = { + modal: function() { } + }; + + $controler('notaPedidoCtrl', { + $scope: scope, + $uibModal: {}, + $location: {}, + $filter: filter, + $timeout: timeout, + crearNotaPedidoService: { + getBotonera: function() { }, + getCotizacionByIdMoneda: function() { + return { + then: function() { } + }; + } + }, + focaBotoneraLateralService: {}, + focaModalService: focaModalService, + notaPedidoBusinessService: {}, + $rootScope: { + $on: function() { } + }, + focaSeguimientoService: {}, + APP: {}, + focaLoginService: {} + }); + scope.idLista = true; + scope.notaPedido = { + cliente: { COD: true }, + domicilio: { id: true } + }; + + var respuesta = { then: function() { } }; + + //act + spyOn(focaModalService, 'modal').and.returnValue(respuesta); + scope.seleccionarVendedor(); + + //assert + expect(focaModalService.modal).toHaveBeenCalled(); + }); + + it('función seleccionarVendedor setea vendedor y cabecera', function(done) { + //arrange + var scope = {}; + var focaModalService = { + modal: function() { } + }; + + $controler('notaPedidoCtrl', { + $scope: scope, + $uibModal: {}, + $location: {}, + $filter: filter, + $timeout: timeout, + crearNotaPedidoService: { + getBotonera: function() { }, + getCotizacionByIdMoneda: function() { + return { + then: function() { } + }; + } + }, + focaBotoneraLateralService: {}, + focaModalService: focaModalService, + notaPedidoBusinessService: {}, + $rootScope: { + $on: function() { } + }, + focaSeguimientoService: {}, + APP: {}, + focaLoginService: {} + }); + scope.idLista = true; + scope.notaPedido = { + cliente: { COD: true }, + domicilio: { id: true } + }; + var respuesta = {}; + var promesaRespuesta = Promise.resolve(respuesta); + scope.$broadcast = function() { }; + + //act + spyOn(focaModalService, 'modal').and.returnValue(promesaRespuesta); + spyOn(scope, '$broadcast'); + scope.seleccionarVendedor(); + + //assert + promesaRespuesta.then(function() { + expect(scope.notaPedido.vendedor).toEqual(respuesta); + expect(scope.$broadcast).toHaveBeenCalled(); + done(); + }); + }); + + it('función seleccionarProveedor abre modal', function() { + //arrange + var scope = {}; + var focaModalService = { + modal: function() { } + }; + + $controler('notaPedidoCtrl', { + $scope: scope, + $uibModal: {}, + $location: {}, + $filter: filter, + $timeout: timeout, + crearNotaPedidoService: { + getBotonera: function() { }, + getCotizacionByIdMoneda: function() { + return { + then: function() { } + }; + } + }, + focaBotoneraLateralService: {}, + focaModalService: focaModalService, + notaPedidoBusinessService: {}, + $rootScope: { + $on: function() { } + }, + focaSeguimientoService: {}, + APP: {}, + focaLoginService: {} + }); + scope.notaPedido = {}; + + var respuesta = { then: function() { } }; + + //act + spyOn(focaModalService, 'modal').and.returnValue(respuesta); + scope.seleccionarProveedor(); + + //assert + expect(focaModalService.modal).toHaveBeenCalled(); + }); + + it('función seleccionarProveedor setea vendedor y cabecera', function(done) { + //arrange + var scope = {}; + var focaModalService = { + modal: function() { } + }; + + $controler('notaPedidoCtrl', { + $scope: scope, + $uibModal: {}, + $location: {}, + $filter: filter, + $timeout: timeout, + crearNotaPedidoService: { + getBotonera: function() { }, + getCotizacionByIdMoneda: function() { + return { + then: function() { } + }; + } + }, + focaBotoneraLateralService: {}, + focaModalService: focaModalService, + notaPedidoBusinessService: {}, + $rootScope: { + $on: function() { } + }, + focaSeguimientoService: {}, + APP: {}, + focaLoginService: {} + }); + + scope.notaPedido = {}; + var respuesta = {}; + var promesaRespuesta = Promise.resolve(respuesta); + scope.$broadcast = function() { }; + + //act + spyOn(focaModalService, 'modal').and.returnValue(promesaRespuesta); + spyOn(scope, '$broadcast'); + scope.seleccionarProveedor(); + + //assert + promesaRespuesta.then(function() { + expect(scope.notaPedido.proveedor).toEqual(respuesta); + expect(scope.$broadcast).toHaveBeenCalled(); + done(); + }); + }); + + it('función seleccionarCliente abre alerta cuando no se elije vendedor', function() { + //arrange + var scope = {}; + var focaModalService = { + alert: function() { } + }; + + $controler('notaPedidoCtrl', { + $scope: scope, + $uibModal: {}, + $location: {}, + $filter: filter, + $timeout: timeout, + crearNotaPedidoService: { + getBotonera: function() { }, + getCotizacionByIdMoneda: function() { + return { + then: function() { } + }; + } + }, + focaBotoneraLateralService: {}, + focaModalService: focaModalService, + notaPedidoBusinessService: {}, + $rootScope: { + $on: function() { } + }, + focaSeguimientoService: {}, + APP: {}, + focaLoginService: {} + }); + scope.notaPedido = { + vendedor: { NUM: false } + }; + + //act + spyOn(focaModalService, 'alert'); + scope.seleccionarCliente(); + + //assert + expect(focaModalService.alert).toHaveBeenCalledWith('Primero seleccione un vendedor'); + }); + + it('función seleccionarCliente abre modal', function() { + //arrange + var scope = {}; + var uibModal = { + open: function() { } + }; + + $controler('notaPedidoCtrl', { + $scope: scope, + $uibModal: uibModal, + $location: {}, + $filter: filter, + $timeout: timeout, + crearNotaPedidoService: { + getBotonera: function() { }, + getCotizacionByIdMoneda: function() { + return { + then: function() { } + }; + } + }, + focaBotoneraLateralService: {}, + focaModalService: {}, + notaPedidoBusinessService: {}, + $rootScope: { + $on: function() { } + }, + focaSeguimientoService: {}, + APP: {}, + focaLoginService: {} + }); + scope.notaPedido = { + vendedor: { NUM: true } + }; + + var respuesta = { result: {then: function() { } } }; + + //act + spyOn(uibModal, 'open').and.returnValue(respuesta); + scope.seleccionarCliente(); + + //assert + expect(uibModal.open).toHaveBeenCalled(); + }); + + it('función seleccionarCliente setea vendedor y llama a domicilios', function(done) { + + //arrange + var scope = {}; + var uibModal = { + open: function() { } + }; + + $controler('notaPedidoCtrl', { + $scope: scope, + $uibModal: uibModal, + $location: {}, + $filter: filter, + $timeout: timeout, + crearNotaPedidoService: { + getBotonera: function() { }, + getCotizacionByIdMoneda: function() { + return { + then: function() { } + }; + } + }, + focaBotoneraLateralService: {}, + focaModalService: {}, + notaPedidoBusinessService: {}, + $rootScope: { + $on: function() { } + }, + focaSeguimientoService: {}, + APP: {}, + focaLoginService: {} + }); + scope.idLista = true; + scope.notaPedido = { + vendedor: { NUM: true } + }; + var respuesta = {}; + var promesaRespuesta = { result: Promise.resolve(respuesta) }; + + //act + spyOn(uibModal, 'open').and.returnValue(promesaRespuesta); + spyOn(scope, 'abrirModalDomicilios'); + scope.seleccionarCliente(); + + //assert + promesaRespuesta.result.then(function() { + expect(scope.cliente).toEqual(respuesta); + expect(scope.abrirModalDomicilios).toHaveBeenCalled(); + done(); + }); + }); + + it('función abrirModalDomicilios abre modal', function() { + //arrange + var scope = {}; + var uibModal = { + open: function() { } + }; + + $controler('notaPedidoCtrl', { + $scope: scope, + $uibModal: uibModal, + $location: {}, + $filter: filter, + $timeout: timeout, + crearNotaPedidoService: { + getBotonera: function() { }, + getCotizacionByIdMoneda: function() { + return { + then: function() { } + }; + } + }, + focaBotoneraLateralService: {}, + focaModalService: {}, + notaPedidoBusinessService: {}, + $rootScope: { + $on: function() { } + }, + focaSeguimientoService: {}, + APP: {}, + focaLoginService: {} + }); + + var respuesta = { result: {then: function() { } } }; + + //act + spyOn(uibModal, 'open').and.returnValue(respuesta); + scope.abrirModalDomicilios(); + + //assert + expect(uibModal.open).toHaveBeenCalled(); + }); + + it('función abrirModalDomicilios setea domicilio, cliente y cabeceras', function(done) { + + //arrange + var scope = {}; + var uibModal = { + open: function() { } + }; + + $controler('notaPedidoCtrl', { + $scope: scope, + $uibModal: uibModal, + $location: {}, + $filter: filter, + $timeout: timeout, + crearNotaPedidoService: { + getBotonera: function() { }, + getCotizacionByIdMoneda: function() { + return { + then: function() { } + }; + }, + getPuntosDescargaByClienDom: function() { + return { + then: function() { } + }; + } + }, + focaBotoneraLateralService: {}, + focaModalService: {}, + notaPedidoBusinessService: {}, + $rootScope: { + $on: function() { } + }, + focaSeguimientoService: {}, + APP: {}, + focaLoginService: {} + }); + scope.idLista = true; + scope.notaPedido = { + vendedor: { NUM: true } + }; + var respuesta = {}; + var promesaRespuesta = { result: Promise.resolve(respuesta) }; + scope.$broadcast = function() { }; + var cliente = { + COD: undefined, + CUIT: undefined, + NOM: undefined + }; + + //act + spyOn(uibModal, 'open').and.returnValue(promesaRespuesta); + spyOn(scope, '$broadcast'); + scope.abrirModalDomicilios({ }); + + //assert + promesaRespuesta.result.then(function() { + expect(scope.notaPedido.domicilio).toEqual(respuesta); + expect(scope.notaPedido.cliente).toEqual(cliente); + expect(scope.$broadcast).toHaveBeenCalled(); + done(); + }); + }); + + it('función getTotal devulve correctamente', function() { + + //arrange + var scope = {}; + + $controler('notaPedidoCtrl', { + $scope: scope, + $uibModal: {}, + $location: {}, + $filter: filter, + $timeout: timeout, + crearNotaPedidoService: { + getBotonera: function() { }, + getCotizacionByIdMoneda: function() { + return { + then: function() { } + }; + } + }, + focaBotoneraLateralService: {}, + focaModalService: {}, + notaPedidoBusinessService: {}, + $rootScope: { + $on: function() { } + }, + focaSeguimientoService: {}, + APP: {}, + focaLoginService: {} + }); + scope.idLista = true; + scope.notaPedido = { + vendedor: { NUM: true } + }; + + //act + scope.articulosTabla = [{ precio: 2, cantidad: 1}]; + var esperado = 2; + var resultado = scope.getTotal(); + + //assert + expect(resultado).toEqual(esperado); + }); + + it('función getSubTotal devulve correctamente', function() { + + //arrange + var scope = {}; + + $controler('notaPedidoCtrl', { + $scope: scope, + $uibModal: {}, + $location: {}, + $filter: filter, + $timeout: timeout, + crearNotaPedidoService: { + getBotonera: function() { }, + getCotizacionByIdMoneda: function() { + return { + then: function() { } + }; + } + }, + focaBotoneraLateralService: {}, + focaModalService: {}, + notaPedidoBusinessService: {}, + $rootScope: { + $on: function() { } + }, + focaSeguimientoService: {}, + APP: {}, + focaLoginService: {} + }); + scope.idLista = true; + scope.notaPedido = { + vendedor: { NUM: true } + }; + + //act + scope.articuloACargar = { precio: 2, cantidad: 1}; + var esperado = 2; + var resultado = scope.getSubTotal(); + + //assert + expect(resultado).toEqual(esperado); + }); + + it('función seleccionarPreciosYCondiciones abre modal', function() { + + //arrange + var scope = {}; + var uibModal = { + open: function() { } + }; + + $controler('notaPedidoCtrl', { + $scope: scope, + $uibModal: uibModal, + $location: {}, + $filter: filter, + $timeout: timeout, + crearNotaPedidoService: { + getBotonera: function() { }, + getCotizacionByIdMoneda: function() { + return { + then: function() { } + }; + } + }, + focaBotoneraLateralService: {}, + focaModalService: {}, + notaPedidoBusinessService: {}, + $rootScope: { + $on: function() { } + }, + focaSeguimientoService: {}, + APP: {}, + focaLoginService: {} + }); + + scope.notaPedido = {}; + + var respuesta = { result: {then: function() { } } }; + + //act + spyOn(uibModal, 'open').and.returnValue(respuesta); + scope.seleccionarPreciosYCondiciones(); + + //assert + expect(uibModal.open).toHaveBeenCalled(); + }); + + it('función seleccionarPreciosYCondiciones setea articulos y cabecera', function(done) { + + //arrange + var scope = {}; + var uibModal = { + open: function() { } + }; + + $controler('notaPedidoCtrl', { + $scope: scope, + $uibModal: uibModal, + $location: {}, + $filter: filter, + $timeout: timeout, + crearNotaPedidoService: { + getBotonera: function() { }, + getCotizacionByIdMoneda: function() { + return { + then: function() { } + }; + } + }, + focaBotoneraLateralService: {}, + focaModalService: {}, + notaPedidoBusinessService: {}, + $rootScope: { + $on: function() { } + }, + focaSeguimientoService: {}, + APP: {}, + focaLoginService: {} + }); + scope.idLista = true; + scope.notaPedido = { + vendedor: { NUM: true } + }; + var respuesta = { plazoPago: { } }; + var promesaRespuesta = { result: Promise.resolve(respuesta) }; + scope.$broadcast = function() { }; + + //act + spyOn(uibModal, 'open').and.returnValue(promesaRespuesta); + spyOn(scope, '$broadcast'); + scope.seleccionarPreciosYCondiciones(); + + //assert + promesaRespuesta.result.then(function() { + expect(scope.articulosTabla.length).toEqual(0); + expect(scope.$broadcast).toHaveBeenCalled(); + done(); + }); + }); + + it('función seleccionarFlete abre modal', function() { + + //arrange + var scope = {}; + var uibModal = { + open: function() { } + }; + + $controler('notaPedidoCtrl', { + $scope: scope, + $uibModal: uibModal, + $location: {}, + $filter: filter, + $timeout: timeout, + crearNotaPedidoService: { + getBotonera: function() { }, + getCotizacionByIdMoneda: function() { + return { + then: function() { } + }; + } + }, + focaBotoneraLateralService: {}, + focaModalService: {}, + notaPedidoBusinessService: {}, + $rootScope: { + $on: function() { } + }, + focaSeguimientoService: {}, + APP: {}, + focaLoginService: {} + }); + + scope.notaPedido = {}; + + var respuesta = { result: {then: function() { } } }; + + //act + spyOn(uibModal, 'open').and.returnValue(respuesta); + scope.seleccionarFlete(); + + //assert + expect(uibModal.open).toHaveBeenCalled(); + }); + + it('función seleccionarFlete setea flete y cabecera', function(done) { + + //arrange + var scope = {}; + var uibModal = { + open: function() { } + }; + + $controler('notaPedidoCtrl', { + $scope: scope, + $uibModal: uibModal, + $location: {}, + $filter: filter, + $timeout: timeout, + crearNotaPedidoService: { + getBotonera: function() { }, + getCotizacionByIdMoneda: function() { + return { + then: function() { } + }; + } + }, + focaBotoneraLateralService: {}, + focaModalService: {}, + notaPedidoBusinessService: {}, + $rootScope: { + $on: function() { } + }, + focaSeguimientoService: {}, + APP: {}, + focaLoginService: {} + }); + scope.idLista = true; + scope.notaPedido = { + vendedor: { NUM: true } + }; + var respuesta = { flete: 1, FOB: 2, bomba: 3, kilometros: 4 }; + var promesaRespuesta = { result: Promise.resolve(respuesta) }; + scope.$broadcast = function() { }; + + //act + spyOn(uibModal, 'open').and.returnValue(promesaRespuesta); + spyOn(scope, '$broadcast'); + scope.seleccionarFlete(); + + //assert + + promesaRespuesta.result.then(function() { + expect(scope.notaPedido.flete).toEqual(respuesta.flete); + expect(scope.notaPedido.fob).toEqual(respuesta.FOB); + expect(scope.notaPedido.bomba).toEqual(respuesta.bomba); + expect(scope.notaPedido.kilometros).toEqual(respuesta.kilometros); + expect(scope.$broadcast).toHaveBeenCalled(); + done(); + }); + }); + + it('función seleccionarMoneda abre modal', function() { + //arrange + var scope = {}; + var focaModalService = { + modal: function() { } + }; + + $controler('notaPedidoCtrl', { + $scope: scope, + $uibModal: {}, + $location: {}, + $filter: filter, + $timeout: timeout, + crearNotaPedidoService: { + getBotonera: function() { }, + getCotizacionByIdMoneda: function() { + return { + then: function() { } + }; + } + }, + focaBotoneraLateralService: {}, + focaModalService: focaModalService, + notaPedidoBusinessService: {}, + $rootScope: { + $on: function() { } + }, + focaSeguimientoService: {}, + APP: {}, + focaLoginService: {} + }); + scope.notaPedido = {}; + + var respuesta = { then: function() { } }; + + //act + spyOn(focaModalService, 'modal').and.returnValue(respuesta); + scope.seleccionarMoneda(); + + //assert + expect(focaModalService.modal).toHaveBeenCalled(); + }); + + it('función seleccionarMoneda llama Modal Cotizacion', function(done) { + //arrange + var scope = {}; + var focaModalService = { + modal: function() { } + }; + + $controler('notaPedidoCtrl', { + $scope: scope, + $uibModal: {}, + $location: {}, + $filter: filter, + $timeout: timeout, + crearNotaPedidoService: { + getBotonera: function() { }, + getCotizacionByIdMoneda: function() { + return { + then: function() { } + }; + } + }, + focaBotoneraLateralService: {}, + focaModalService: focaModalService, + notaPedidoBusinessService: {}, + $rootScope: { + $on: function() { } + }, + focaSeguimientoService: {}, + APP: {}, + focaLoginService: {} + }); + + scope.notaPedido = {}; + var respuesta = 'test'; + var promesaRespuesta = Promise.resolve(respuesta); + + //act + spyOn(focaModalService, 'modal').and.returnValue(promesaRespuesta); + spyOn(scope, 'abrirModalCotizacion'); + scope.seleccionarMoneda(); + + //assert + promesaRespuesta.then(function() { + expect(scope.abrirModalCotizacion).toHaveBeenCalledWith('test'); + done(); + }); + }); + + it('función seleccionarObservaciones llama a prompt', function() { + + //arrange + var scope = {}; + var focaModalService = { + prompt: function() { } + }; + + $controler('notaPedidoCtrl', { + $scope: scope, + $uibModal: {}, + $location: {}, + $filter: filter, + $timeout: timeout, + crearNotaPedidoService: { + getBotonera: function() { }, + getCotizacionByIdMoneda: function() { + return { + then: function() { } + }; + } + }, + focaBotoneraLateralService: {}, + focaModalService: focaModalService, + notaPedidoBusinessService: {}, + $rootScope: { + $on: function() { } + }, + focaSeguimientoService: {}, + APP: {}, + focaLoginService: {} + }); + var respuesta = { then: function() { } }; + scope.notaPedido = {}; + + //act + spyOn(focaModalService, 'prompt').and.returnValue(respuesta); + scope.seleccionarObservaciones(); + + //assert + expect(focaModalService.prompt).toHaveBeenCalled(); + }); + + it('función seleccionarObservaciones setea observaciones', function(done) { + + //arrange + var scope = {}; + var focaModalService = { + prompt: function() { } + }; + + $controler('notaPedidoCtrl', { + $scope: scope, + $uibModal: {}, + $location: {}, + $filter: filter, + $timeout: timeout, + crearNotaPedidoService: { + getBotonera: function() { }, + getCotizacionByIdMoneda: function() { + return { + then: function() { } + }; + } + }, + focaBotoneraLateralService: {}, + focaModalService: focaModalService, + notaPedidoBusinessService: {}, + $rootScope: { + $on: function() { } + }, + focaSeguimientoService: {}, + APP: {}, + focaLoginService: {} + }); + var respuesta = 'unit test'; + var promesa = Promise.resolve(respuesta); + scope.notaPedido = {}; + + //act + spyOn(focaModalService, 'prompt').and.returnValue(promesa); + scope.seleccionarObservaciones(); + + //assert + promesa.then(function() { + expect(scope.notaPedido.observaciones).toEqual(respuesta); + done(); + }); + }); + + it('función abrirModalCotizacion abre modal', function() { + + //arrange + var scope = {}; + var uibModal = { + open: function() { } + }; + + $controler('notaPedidoCtrl', { + $scope: scope, + $uibModal: uibModal, + $location: {}, + $filter: filter, + $timeout: timeout, + crearNotaPedidoService: { + getBotonera: function() { }, + getCotizacionByIdMoneda: function() { + return { + then: function() { } + }; + } + }, + focaBotoneraLateralService: {}, + focaModalService: {}, + notaPedidoBusinessService: {}, + $rootScope: { + $on: function() { } + }, + focaSeguimientoService: {}, + APP: {}, + focaLoginService: {} + }); + + scope.notaPedido = {}; + + var respuesta = { result: {then: function() { } } }; + + //act + spyOn(uibModal, 'open').and.returnValue(respuesta); + scope.abrirModalCotizacion(); + + //assert + expect(uibModal.open).toHaveBeenCalled(); + }); + + it('función abrirModalCotizacion setea datos y cabecera', function(done) { + //arrange + var scope = {}; + var uibModal = { + open: function() { } + }; + + $controler('notaPedidoCtrl', { + $scope: scope, + $uibModal: uibModal, + $location: {}, + $filter: filter, + $timeout: timeout, + crearNotaPedidoService: { + getBotonera: function() { }, + getCotizacionByIdMoneda: function() { + return { + then: function() { } + }; + } + }, + focaBotoneraLateralService: {}, + focaModalService: {}, + notaPedidoBusinessService: {}, + $rootScope: { + $on: function() { } + }, + focaSeguimientoService: {}, + APP: {}, + focaLoginService: {} + }); + + scope.notaPedido = {}; + scope.articulosTabla = []; + scope.$broadcast = function() { }; + var moneda = 'moneda'; + var cotizacion = 'test'; + var promesaRespuesta = { result: Promise.resolve(cotizacion) }; + + //act + spyOn(uibModal, 'open').and.returnValue(promesaRespuesta); + spyOn(scope, '$broadcast'); + scope.abrirModalCotizacion(moneda); + + //assert + promesaRespuesta.result.then(function() { + + expect(scope.$broadcast).toHaveBeenCalled(); + expect(scope.notaPedido.moneda).toEqual(moneda); + expect(scope.monedaDefecto).toEqual(moneda); + expect(scope.cotizacionDefecto).toEqual(cotizacion); + expect(scope.notaPedido.cotizacion).toEqual(cotizacion); + done(); + }); + }); + + it('función agregarATabla muestra alerta cuando a cargar undefined', function() { + + //arrange + var scope = {}; + var focaModalService = { + alert: function() { } + }; + + $controler('notaPedidoCtrl', { + $scope: scope, + $uibModal: {}, + $location: {}, + $filter: filter, + $timeout: timeout, + crearNotaPedidoService: { + getBotonera: function() { }, + getCotizacionByIdMoneda: function() { + return { + then: function() { } + }; + } + }, + focaBotoneraLateralService: {}, + focaModalService: focaModalService, + notaPedidoBusinessService: {}, + $rootScope: { + $on: function() { } + }, + focaSeguimientoService: {}, + APP: {}, + focaLoginService: {} + }); + scope.articuloACargar = {}; + + //act + spyOn(focaModalService, 'alert'); + scope.agregarATabla(13); + + //assert + expect(focaModalService.alert).toHaveBeenCalledWith('El valor debe ser al menos 1'); + }); + + it('función editarArticulo muestra alerta cuando a cargar es undefined', function() { + + //arrange + var scope = {}; + var focaModalService = { + alert: function() { } + }; + + $controler('notaPedidoCtrl', { + $scope: scope, + $uibModal: {}, + $location: {}, + $filter: filter, + $timeout: timeout, + crearNotaPedidoService: { + getBotonera: function() { }, + getCotizacionByIdMoneda: function() { + return { + then: function() { } + }; + } + }, + focaBotoneraLateralService: {}, + focaModalService: focaModalService, + notaPedidoBusinessService: {}, + $rootScope: { + $on: function() { } + }, + focaSeguimientoService: {}, + APP: {}, + focaLoginService: {} + }); + scope.articuloACargar = {}; + + //act + spyOn(focaModalService, 'alert'); + scope.agregarATabla(13); + + //assert + expect(focaModalService.alert).toHaveBeenCalledWith('El valor debe ser al menos 1'); + }); + + it('función salir lleva a ruta correcta', function() { + + inject(function($location) { + + //arrange + var scope = {}; + + $controler('notaPedidoCtrl', { + $scope: scope, + $uibModal: {}, + $location: $location, + $filter: filter, + $timeout: timeout, + crearNotaPedidoService: { + getBotonera: function() { }, + getCotizacionByIdMoneda: function() { + return { + then: function() { } + }; + } + }, + focaBotoneraLateralService: {}, + focaModalService: {}, + notaPedidoBusinessService: {}, + $rootScope: { + $on: function() { } + }, + focaSeguimientoService: {}, + APP: {}, + focaLoginService: {} + }); + + //act + scope.salir(); + + //assert + expect($location.url()).toEqual('/'); + }); + }); + }); +}); diff --git a/spec/controllerSpecCrearPedido.js b/spec/controllerSpecCrearPedido.js new file mode 100644 index 0000000..3a31139 --- /dev/null +++ b/spec/controllerSpecCrearPedido.js @@ -0,0 +1,738 @@ +describe('Controladores módulo crear nota de pedido', function() { + + var $controler; + + beforeEach(function() { + module('focaCrearNotaPedido'); + inject(function(_$controller_) { + $controler = _$controller_; + }); + }); + + describe('Controlador notaPedidoCtrl crear nota de pedido', function() { + + var filter = function() { + return function() { }; + }; + var timeout; + + beforeEach(function() { + + inject(function($timeout) { + timeout = $timeout; + }); + }); + + it('Existe el controlador notaPedidoCtrl', function() { + + //act + var controlador = $controler('notaPedidoCtrl', { + $scope: {}, + $uibModal: {}, + $location: {}, + $filter: filter, + $timeout: timeout, + crearNotaPedidoService: { + getBotonera: function() { }, + getCotizacionByIdMoneda: function() { + return { + then: function() {} + }; + } + }, + focaBotoneraLateralService: {}, + focaModalService: {}, + notaPedidoBusinessService: {}, + $rootScope: { + $on: function() { } + }, + focaSeguimientoService: {}, + APP: {}, + focaLoginService: {} + }); + + //expect + expect(typeof controlador).toEqual('object'); + }); + + it('la funcion $scope.crearNotaPedido muestra alerta cuando vendedor es null', function() { + + //arrange + var scope = {}; + var focaModalService = { + alert: function() { } + }; + + $controler('notaPedidoCtrl', { + $scope: scope, + $uibModal: {}, + $location: {}, + $filter: filter, + $timeout: timeout, + crearNotaPedidoService: { + getBotonera: function() { }, + getCotizacionByIdMoneda: function() { + return { + then: function() {} + }; + } + }, + focaBotoneraLateralService: {}, + focaModalService: focaModalService, + notaPedidoBusinessService: {}, + $rootScope: { + $on: function() { } + }, + focaSeguimientoService: {}, + APP: {}, + focaLoginService: {} + }); + + //act + scope.notaPedido = { + vendedor: { + id: null + } + }; + spyOn(focaModalService, 'alert'); + scope.crearNotaPedido(); + + //expect + expect(focaModalService.alert).toHaveBeenCalledWith('Ingrese Vendedor'); + }); + + it('la funcion $scope.crearNotaPedido muestra alerta cuando cliente es null', function() { + + //arrange + var scope = {}; + var focaModalService = { + alert: function() { } + }; + + $controler('notaPedidoCtrl', { + $scope: scope, + $uibModal: {}, + $location: {}, + $filter: filter, + $timeout: timeout, + crearNotaPedidoService: { + getBotonera: function() { }, + getCotizacionByIdMoneda: function() { + return { + then: function() {} + }; + } + }, + focaBotoneraLateralService: {}, + focaModalService: focaModalService, + notaPedidoBusinessService: {}, + $rootScope: { + $on: function() { } + }, + focaSeguimientoService: {}, + APP: {}, + focaLoginService: {} + }); + + scope.notaPedido = { + vendedor: { + id: true + }, + cliente:{ + COD: false + } + }; + + //act + spyOn(focaModalService, 'alert'); + scope.crearNotaPedido(); + + //expect + expect(focaModalService.alert).toHaveBeenCalledWith('Ingrese Cliente'); + }); + + it('funcion $scope.crearNotaPedido muestra alerta cuando proveedor es null', function() { + + //arrange + var scope = {}; + var focaModalService = { + alert: function() { } + }; + + $controler('notaPedidoCtrl', { + $scope: scope, + $uibModal: {}, + $location: {}, + $filter: filter, + $timeout: timeout, + crearNotaPedidoService: { + getBotonera: function() { }, + getCotizacionByIdMoneda: function() { + return { + then: function() {} + }; + } + }, + focaBotoneraLateralService: {}, + focaModalService: focaModalService, + notaPedidoBusinessService: {}, + $rootScope: { + $on: function() { } + }, + focaSeguimientoService: {}, + APP: {}, + focaLoginService: {} + }); + + scope.notaPedido = { + vendedor: { + id: true + }, + cliente:{ + COD: true + }, + proveedor:{ + COD: null + } + }; + + //act + spyOn(focaModalService, 'alert'); + scope.crearNotaPedido(); + + //expect + expect(focaModalService.alert).toHaveBeenCalledWith('Ingrese Proveedor'); + }); + + it('funcion $scope.crearNotaPedido muestra alerta cuando Moneda es null', function() { + + //arrange + var scope = {}; + var focaModalService = { + alert: function() { } + }; + + $controler('notaPedidoCtrl', { + $scope: scope, + $uibModal: {}, + $location: {}, + $filter: filter, + $timeout: timeout, + crearNotaPedidoService: { + getBotonera: function() { }, + getCotizacionByIdMoneda: function() { + return { + then: function() {} + }; + } + }, + focaBotoneraLateralService: {}, + focaModalService: focaModalService, + notaPedidoBusinessService: {}, + $rootScope: { + $on: function() { } + }, + focaSeguimientoService: {}, + APP: {}, + focaLoginService: {} + }); + + scope.notaPedido = { + vendedor: { + id: true + }, + cliente:{ + COD: true + }, + proveedor:{ + COD: true + }, + moneda:{ + ID: null + } + }; + + //act + spyOn(focaModalService, 'alert'); + scope.crearNotaPedido(); + + //expect + expect(focaModalService.alert).toHaveBeenCalledWith('Ingrese Moneda'); + }); + + it('funcion $scope.crearNotaPedido muestra alerta cuando cotizacion es null', function() { + + //arrange + var scope = {}; + var focaModalService = { + alert: function() { } + }; + + $controler('notaPedidoCtrl', { + $scope: scope, + $uibModal: {}, + $location: {}, + $filter: filter, + $timeout: timeout, + crearNotaPedidoService: { + getBotonera: function() { }, + getCotizacionByIdMoneda: function() { + return { + then: function() {} + }; + } + }, + focaBotoneraLateralService: {}, + focaModalService: focaModalService, + notaPedidoBusinessService: {}, + $rootScope: { + $on: function() { } + }, + focaSeguimientoService: {}, + APP: {}, + focaLoginService: {} + }); + + scope.notaPedido = { + vendedor: { + id: true + }, + cliente:{ + COD: true + }, + proveedor:{ + COD: true + }, + moneda:{ + ID: true + }, + cotizacion:{ + ID: null + } + }; + + //act + spyOn(focaModalService, 'alert'); + scope.crearNotaPedido(); + + //expect + expect(focaModalService.alert).toHaveBeenCalledWith('Ingrese Cotización'); + }); + + it('funcion $scope.crearNotaPedido muestra alerta cuando plazos es null', function() { + + //arrange + var scope = {}; + var focaModalService = { + alert: function() { } + }; + + $controler('notaPedidoCtrl', { + $scope: scope, + $uibModal: {}, + $location: {}, + $filter: filter, + $timeout: timeout, + crearNotaPedidoService: { + getBotonera: function() { }, + getCotizacionByIdMoneda: function() { + return { + then: function() {} + }; + } + }, + focaBotoneraLateralService: {}, + focaModalService: focaModalService, + notaPedidoBusinessService: {}, + $rootScope: { + $on: function() { } + }, + focaSeguimientoService: {}, + APP: {}, + focaLoginService: {} + }); + + scope.notaPedido = { + vendedor: { + id: true + }, + cliente:{ + COD: true + }, + proveedor:{ + COD: true + }, + moneda:{ + ID: true + }, + cotizacion:{ + ID: true + } + }; + + scope.plazosPagos = null; + + //act + spyOn(focaModalService, 'alert'); + scope.crearNotaPedido(); + + //expect + expect(focaModalService.alert).toHaveBeenCalledWith('Ingrese Precios y Condiciones'); + }); + + it('funcion $scope.crearNotaPedido muestra alerta cuando flete es null', function() { + + //arrange + var scope = {}; + var focaModalService = { + alert: function() { } + }; + + $controler('notaPedidoCtrl', { + $scope: scope, + $uibModal: {}, + $location: {}, + $filter: filter, + $timeout: timeout, + crearNotaPedidoService: { + getBotonera: function() { }, + getCotizacionByIdMoneda: function() { + return { + then: function() {} + }; + } + }, + focaBotoneraLateralService: {}, + focaModalService: focaModalService, + notaPedidoBusinessService: {}, + $rootScope: { + $on: function() { } + }, + focaSeguimientoService: {}, + APP: {}, + focaLoginService: {} + }); + + scope.notaPedido = { + vendedor: { + id: true + }, + cliente:{ + COD: true + }, + proveedor:{ + COD: true + }, + moneda:{ + ID: true + }, + cotizacion:{ + ID: true + }, + flete: null + }; + + scope.plazosPagos = true; + + //act + spyOn(focaModalService, 'alert'); + scope.crearNotaPedido(); + + //expect + expect(focaModalService.alert).toHaveBeenCalledWith('Ingrese Flete'); + }); + + it('funcion $scope.crearNotaPedido muestra alerta cuando domicilio es null', function() { + + //arrange + var scope = {}; + var focaModalService = { + alert: function() { } + }; + + $controler('notaPedidoCtrl', { + $scope: scope, + $uibModal: {}, + $location: {}, + $filter: filter, + $timeout: timeout, + crearNotaPedidoService: { + getBotonera: function() { }, + getCotizacionByIdMoneda: function() { + return { + then: function() {} + }; + } + }, + focaBotoneraLateralService: {}, + focaModalService: focaModalService, + notaPedidoBusinessService: {}, + $rootScope: { + $on: function() { } + }, + focaSeguimientoService: {}, + APP: {}, + focaLoginService: {} + }); + + scope.notaPedido = { + vendedor: { + id: true + }, + cliente:{ + COD: true + }, + proveedor:{ + COD: true + }, + moneda:{ + ID: true + }, + cotizacion:{ + ID: true + }, + flete: true, + domicilioStamp: null + }; + + scope.plazosPagos = true; + + //act + spyOn(focaModalService, 'alert'); + scope.crearNotaPedido(); + + //expect + expect(focaModalService.alert).toHaveBeenCalledWith('Ingrese Domicilio'); + }); + + it('funcion $scope.crearNotaPedido muestra alerta cuando no se cargaron articulos', + function() + { + + //arrange + var scope = {}; + var focaModalService = { + alert: function() { } + }; + + $controler('notaPedidoCtrl', { + $scope: scope, + $uibModal: {}, + $location: {}, + $filter: filter, + $timeout: timeout, + crearNotaPedidoService: { + getBotonera: function() { }, + getCotizacionByIdMoneda: function() { + return { + then: function() {} + }; + } + }, + focaBotoneraLateralService: {}, + focaModalService: focaModalService, + notaPedidoBusinessService: {}, + $rootScope: { + $on: function() { } + }, + focaSeguimientoService: {}, + APP: {}, + focaLoginService: {} + }); + + scope.notaPedido = { + vendedor: { + id: true + }, + cliente:{ + COD: true + }, + proveedor:{ + COD: true + }, + moneda:{ + ID: true + }, + cotizacion:{ + ID: true + }, + flete: true, + domicilioStamp: true, + }; + + scope.plazosPagos = true; + scope.articulosTabla = []; + + //act + spyOn(focaModalService, 'alert'); + scope.crearNotaPedido(); + + //expect + expect(focaModalService.alert) + .toHaveBeenCalledWith('Debe cargar al menos un articulo'); + }); + + it('funcion $scope.crearNotaPedido llama startGuardar', function() { + + //arrange + var scope = {}; + var focaBotoneraLateralService = { + startGuardar: function() { } + }; + + $controler('notaPedidoCtrl', { + $scope: scope, + $uibModal: {}, + $location: {}, + $filter: filter, + $timeout: timeout, + crearNotaPedidoService: { + getBotonera: function() { }, + getCotizacionByIdMoneda: function() { + return { + then: function() {} + }; + }, + crearNotaPedido: function() { + return { + then: function() { } + }; + } + }, + focaBotoneraLateralService: focaBotoneraLateralService, + focaModalService: {}, + notaPedidoBusinessService: {}, + $rootScope: { + $on: function() { } + }, + focaSeguimientoService: {}, + APP: {}, + focaLoginService: {} + }); + + scope.notaPedido = { + vendedor: { + id: true + }, + cliente:{ + COD: true + }, + proveedor:{ + COD: true + }, + moneda:{ + ID: true + }, + cotizacion:{ + ID: true + }, + flete: true, + domicilioStamp: true, + domicilio: { + id: true + } + }; + + scope.plazosPagos = true; + scope.articulosTabla = [1]; + + //act + spyOn(focaBotoneraLateralService, 'startGuardar'); + scope.crearNotaPedido(); + + //expect + expect(focaBotoneraLateralService.startGuardar).toHaveBeenCalled(); + }); + + it('funcion $scope.crearNotaPedido llama funciones al guardar', function(done) { + + //arrange + var scope = {}; + var focaBotoneraLateralService = { + startGuardar: function() { }, + endGuardar: function() { } + }; + var focaSeguimientoService = { + guardarPosicion: function() { } + }; + var notaPedidoBusinessService = { + addArticulos: function() { }, + addEstado: function() { } + }; + var crearNotaPedidoService = { + getBotonera: function() { }, + getCotizacionByIdMoneda: function() { + return { + then: function() {} + }; + }, + crearNotaPedido: function() { }, + getNumeroNotaPedido: function() { + return { + then: function() { } + }; + } + }; + + $controler('notaPedidoCtrl', { + $scope: scope, + $uibModal: {}, + $location: {}, + $filter: filter, + $timeout: timeout, + crearNotaPedidoService: crearNotaPedidoService, + focaBotoneraLateralService: focaBotoneraLateralService, + focaModalService: {}, + notaPedidoBusinessService: notaPedidoBusinessService, + $rootScope: { + $on: function() { } + }, + focaSeguimientoService: focaSeguimientoService, + APP: {}, + focaLoginService: {} + }); + + scope.notaPedido = { + vendedor: { + id: true + }, + cliente:{ + COD: true + }, + proveedor:{ + COD: true + }, + moneda:{ + ID: true + }, + cotizacion:{ + ID: true + }, + flete: true, + domicilioStamp: true, + domicilio: { + id: true + } + }; + + scope.plazosPagos = []; + scope.articulosTabla = [1]; + + var promesa = Promise.resolve({ data: 1 }); + scope.$broadcast = function() { }; + + //act + spyOn(crearNotaPedidoService, 'crearNotaPedido').and.returnValue(promesa); + spyOn(focaSeguimientoService, 'guardarPosicion'); + spyOn(notaPedidoBusinessService, 'addArticulos'); + scope.crearNotaPedido(); + + //expect + promesa.then(function() { + expect(focaSeguimientoService.guardarPosicion).toHaveBeenCalled(); + expect(notaPedidoBusinessService.addArticulos).toHaveBeenCalled(); + done(); + }); + }); + }); +}); \ No newline at end of file diff --git a/src/js/service.js b/src/js/service.js index 5d9adbf..3f5e412 100644 --- a/src/js/service.js +++ b/src/js/service.js @@ -1,5 +1,5 @@ angular.module('focaCrearNotaPedido') - .service('crearNotaPedidoService', ['$http', 'API_ENDPOINT', function($http, API_ENDPOINT) { + .factory('crearNotaPedidoService', ['$http', 'API_ENDPOINT', function($http, API_ENDPOINT) { var route = API_ENDPOINT.URL; return { crearNotaPedido: function(notaPedido) { @@ -86,7 +86,7 @@ angular.module('focaCrearNotaPedido') image: 'productos.png' } ]; - + if(!vendedor) { var botonVendedor = { label: 'Vendedor', diff --git a/test.html b/test.html index 6c50ce2..c7f6198 100644 --- a/test.html +++ b/test.html @@ -15,6 +15,7 @@ +