Commit ef70601cce0b6ebc7a3931315fec655be7c7c37f

Authored by Eric Fernandez
1 parent 7d68d24ce9
Exists in master

unit test

... ... @@ -9,10 +9,13 @@ const pump = require('pump');
9 9 const jshint = require('gulp-jshint');
10 10 const replace = require('gulp-replace');
11 11 const connect = require('gulp-connect');
  12 +const header = require('gulp-header');
  13 +const footer = require('gulp-footer');
12 14  
13 15 var paths = {
14 16 srcJS: 'src/js/*.js',
15 17 srcViews: 'src/views/*.html',
  18 + specs: 'spec/*.js',
16 19 tmp: 'tmp',
17 20 dist: 'dist/'
18 21 };
... ... @@ -31,7 +34,7 @@ gulp.task('templates', ['clean'], function() {
31 34 );
32 35 });
33 36  
34   -gulp.task('uglify', ['templates'], function() {
  37 +gulp.task('uglify', ['templates', 'uglify-spec'], function() {
35 38 return pump(
36 39 [
37 40 gulp.src([
... ... @@ -48,6 +51,17 @@ gulp.task('uglify', ['templates'], function() {
48 51 );
49 52 });
50 53  
  54 +gulp.task('uglify-spec', function() {
  55 + return pump([
  56 + gulp.src(paths.specs),
  57 + concat('foca-crear-hoja-ruta.spec.js'),
  58 + replace("src/views/", ''),
  59 + header("describe('Módulo foca-crear-hoja-ruta', function() { \n"),
  60 + footer("});"),
  61 + gulp.dest(paths.dist)
  62 + ]);
  63 +});
  64 +
51 65 gulp.task('clean', function() {
52 66 return gulp.src(['tmp', 'dist'], {read: false})
53 67 .pipe(clean());
... ... @@ -56,7 +70,7 @@ gulp.task('clean', function() {
56 70 gulp.task('pre-commit', function() {
57 71 return pump(
58 72 [
59   - gulp.src(paths.srcJS),
  73 + gulp.src([paths.srcJS, paths.specs]),
60 74 jshint('.jshintrc'),
61 75 jshint.reporter('default'),
62 76 jshint.reporter('fail')
... ... @@ -74,7 +88,7 @@ gulp.task('webserver', function() {
74 88  
75 89 gulp.task('clean-post-install', function() {
76 90 return gulp.src(['src', 'tmp', '.jshintrc','readme.md', '.gitignore', 'gulpfile.js',
77   - 'index.html'], {read: false})
  91 + 'index.html', 'test.html', 'spec'], {read: false})
78 92 .pipe(clean());
79 93 });
80 94  
... ... @@ -4,7 +4,7 @@
4 4 "description": "foca-crear-hoja-ruta",
5 5 "main": "index.js",
6 6 "scripts": {
7   - "test": "echo \"Error: no test specified\" && exit 1",
  7 + "test": "test.html",
8 8 "compile": "gulp uglify",
9 9 "gulp-pre-commit": "gulp pre-commit",
10 10 "postinstall": "npm run compile && gulp clean-post-install",
... ... @@ -22,6 +22,7 @@
22 22 "devDependencies": {
23 23 "angular": "^1.7.5",
24 24 "angular-ladda": "^0.4.3",
  25 + "angular-mocks": "^1.7.7",
25 26 "angular-route": "^1.7.5",
26 27 "bootstrap": "^4.1.3",
27 28 "foca-botonera-facturador": "git+http://git.focasoftware.com/npm/foca-botonera-facturador.git",
spec/controllerSpec.js
... ... @@ -0,0 +1,830 @@
  1 +describe('Controladores módulo crear hoja de ruta', function() {
  2 +
  3 + var $controller;
  4 +
  5 + beforeEach(function() {
  6 +
  7 + module('focaCrearHojaRuta');
  8 + inject(function(_$controller_) {
  9 + $controller = _$controller_;
  10 + });
  11 + });
  12 +
  13 + describe('controlador focaModalDatosHojaRutaCtrl', function() {
  14 +
  15 + it('Existe el controlador focaModalDatosHojaRutaCtrl', function() {
  16 +
  17 + //act
  18 + var controlador = $controller('focaModalDatosHojaRutaCtrl', {
  19 + $filter: {},
  20 + $scope: {},
  21 + $uibModalInstance: {},
  22 + focaModalService: {},
  23 + parametrosDatos: {}
  24 + });
  25 +
  26 + //assert
  27 + expect(typeof controlador).toEqual('object');
  28 + });
  29 +
  30 + it('función $scope.aceptar muestra alerta cuando el formulario es inválido', function() {
  31 +
  32 + //arrange
  33 + var scope = {};
  34 + var focaModalService = {
  35 + alert: function() { }
  36 + };
  37 +
  38 + $controller('focaModalDatosHojaRutaCtrl', {
  39 + $filter: {},
  40 + $scope: scope,
  41 + $uibModalInstance: {},
  42 + focaModalService: focaModalService,
  43 + parametrosDatos: {}
  44 + });
  45 +
  46 + //act
  47 + scope.formDatosHojaRuta = {
  48 + $valid: false
  49 + };
  50 + spyOn(focaModalService, 'alert');
  51 + scope.aceptar(13);
  52 +
  53 + //assert
  54 + expect(focaModalService.alert).toHaveBeenCalledWith('Formulario inválido');
  55 + });
  56 +
  57 + it('función $scope.aceptar llama a uibModalInstance.close', function() {
  58 +
  59 + //arrange
  60 + var scope = {};
  61 + var uibModalInstance = {
  62 + close: function() { }
  63 + };
  64 +
  65 + $controller('focaModalDatosHojaRutaCtrl', {
  66 + $filter: {},
  67 + $scope: scope,
  68 + $uibModalInstance: uibModalInstance,
  69 + focaModalService: {},
  70 + parametrosDatos: {}
  71 + });
  72 +
  73 + //act
  74 + scope.formDatosHojaRuta = {
  75 + $valid: true
  76 + };
  77 + spyOn(uibModalInstance, 'close');
  78 + scope.aceptar(13);
  79 +
  80 + //assert
  81 + expect(uibModalInstance.close).toHaveBeenCalled();
  82 + });
  83 +
  84 + it('función $scope.next suma uno a focused', function() {
  85 +
  86 + //arrange
  87 + var scope = {};
  88 +
  89 + $controller('focaModalDatosHojaRutaCtrl', {
  90 + $filter: {},
  91 + $scope: scope,
  92 + $uibModalInstance: {},
  93 + focaModalService: {},
  94 + parametrosDatos: {}
  95 + });
  96 + scope.focused = 1;
  97 +
  98 + //act
  99 + var esperado = scope.focused + 1;
  100 + scope.next(13);
  101 +
  102 + //assert
  103 + expect(scope.focused).toEqual(esperado);
  104 + });
  105 +
  106 + it('función $scope.cancel llama a dismiss', function() {
  107 +
  108 + //arrange
  109 + var scope = {};
  110 + var uibModalInstance = {
  111 + dismiss: function() { }
  112 + };
  113 +
  114 + $controller('focaModalDatosHojaRutaCtrl', {
  115 + $filter: {},
  116 + $scope: scope,
  117 + $uibModalInstance: uibModalInstance,
  118 + focaModalService: {},
  119 + parametrosDatos: {}
  120 + });
  121 +
  122 + //act
  123 + spyOn(uibModalInstance, 'dismiss');
  124 + scope.cancel();
  125 +
  126 + //assert
  127 + expect(uibModalInstance.dismiss).toHaveBeenCalledWith('cancel');
  128 + });
  129 + });
  130 +
  131 + describe('controlador hojaRutaCtrl', function() {
  132 +
  133 + var $filter = function() {
  134 + return function() { };
  135 + };
  136 +
  137 + var $timeout = function() { };
  138 +
  139 + it('existe el controlador hojaRutaCtrl', function() {
  140 +
  141 + //act
  142 + var controlador = $controller('hojaRutaCtrl', {
  143 + $scope: {
  144 + $broadcast: function() { }
  145 + },
  146 + $uibModal: {},
  147 + $location: {},
  148 + $filter: $filter,
  149 + $timeout: $timeout,
  150 + focaCrearHojaRutaService: {
  151 + getBotonera: function() { },
  152 + getNumeroHojaRuta: function() {
  153 + return {
  154 + then: function() { }
  155 + };
  156 + }
  157 + },
  158 + focaModalService: {},
  159 + focaBotoneraLateralService: {},
  160 + focaLoginService: {},
  161 + });
  162 +
  163 + //assert
  164 + expect(typeof controlador).toEqual('object');
  165 + });
  166 +
  167 + it('guardar hoja ruta valida que tenga al menos un remito', function() {
  168 +
  169 + //arrange
  170 + var scope = {
  171 + $broadcast: function() { }
  172 + };
  173 + var focaModalService = {
  174 + alert: function() { }
  175 + };
  176 +
  177 + $controller('hojaRutaCtrl', {
  178 + $scope: scope,
  179 + $uibModal: {},
  180 + $location: {},
  181 + $filter: $filter,
  182 + $timeout: $timeout,
  183 + focaCrearHojaRutaService: {
  184 + getBotonera: function() { },
  185 + getNumeroHojaRuta: function() {
  186 + return {
  187 + then: function() { }
  188 + };
  189 + }
  190 + },
  191 + focaModalService: focaModalService,
  192 + focaBotoneraLateralService: {},
  193 + focaLoginService: {},
  194 + });
  195 + scope.remitosTabla = [];
  196 +
  197 + //act
  198 + spyOn(focaModalService, 'alert');
  199 +
  200 + scope.crearHojaRuta();
  201 +
  202 + //assert
  203 + expect(focaModalService.alert).toHaveBeenCalledWith('Ingrese Remitos');
  204 + });
  205 +
  206 + it('guardar hoja ruta valida que tenga chofer', function() {
  207 +
  208 + //arrange
  209 + var scope = {
  210 + $broadcast: function() { }
  211 + };
  212 + var focaModalService = {
  213 + alert: function() { }
  214 + };
  215 +
  216 + $controller('hojaRutaCtrl', {
  217 + $scope: scope,
  218 + $uibModal: {},
  219 + $location: {},
  220 + $filter: $filter,
  221 + $timeout: $timeout,
  222 + focaCrearHojaRutaService: {
  223 + getBotonera: function() { },
  224 + getNumeroHojaRuta: function() {
  225 + return {
  226 + then: function() { }
  227 + };
  228 + }
  229 + },
  230 + focaModalService: focaModalService,
  231 + focaBotoneraLateralService: {},
  232 + focaLoginService: {},
  233 + });
  234 + scope.remitosTabla = [1];
  235 + scope.hojaRuta = {
  236 + chofer: { }
  237 + };
  238 +
  239 + //act
  240 + spyOn(focaModalService, 'alert');
  241 +
  242 + scope.crearHojaRuta();
  243 +
  244 + //assert
  245 + expect(focaModalService.alert).toHaveBeenCalledWith('Ingrese Chofer');
  246 + });
  247 +
  248 + it('guardar hoja ruta valida que tenga vehiculo', function() {
  249 +
  250 + //arrange
  251 + var scope = {
  252 + $broadcast: function() { }
  253 + };
  254 + var focaModalService = {
  255 + alert: function() { }
  256 + };
  257 +
  258 + $controller('hojaRutaCtrl', {
  259 + $scope: scope,
  260 + $uibModal: {},
  261 + $location: {},
  262 + $filter: $filter,
  263 + $timeout: $timeout,
  264 + focaCrearHojaRutaService: {
  265 + getBotonera: function() { },
  266 + getNumeroHojaRuta: function() {
  267 + return {
  268 + then: function() { }
  269 + };
  270 + }
  271 + },
  272 + focaModalService: focaModalService,
  273 + focaBotoneraLateralService: {},
  274 + focaLoginService: {},
  275 + });
  276 + scope.remitosTabla = [1];
  277 + scope.hojaRuta = {
  278 + chofer: { id: true },
  279 + vehiculo: { }
  280 + };
  281 +
  282 + //act
  283 + spyOn(focaModalService, 'alert');
  284 +
  285 + scope.crearHojaRuta();
  286 +
  287 + //assert
  288 + expect(focaModalService.alert).toHaveBeenCalledWith('Ingrese Vehiculo');
  289 + });
  290 +
  291 + it('guardar hoja ruta valida que tenga transportista', function() {
  292 +
  293 + //arrange
  294 + var scope = {
  295 + $broadcast: function() { }
  296 + };
  297 + var focaModalService = {
  298 + alert: function() { }
  299 + };
  300 +
  301 + $controller('hojaRutaCtrl', {
  302 + $scope: scope,
  303 + $uibModal: {},
  304 + $location: {},
  305 + $filter: $filter,
  306 + $timeout: $timeout,
  307 + focaCrearHojaRutaService: {
  308 + getBotonera: function() { },
  309 + getNumeroHojaRuta: function() {
  310 + return {
  311 + then: function() { }
  312 + };
  313 + }
  314 + },
  315 + focaModalService: focaModalService,
  316 + focaBotoneraLateralService: {},
  317 + focaLoginService: {},
  318 + });
  319 + scope.remitosTabla = [1];
  320 + scope.hojaRuta = {
  321 + chofer: { id: true },
  322 + vehiculo: { id: true },
  323 + transportista: { }
  324 + };
  325 +
  326 + //act
  327 + spyOn(focaModalService, 'alert');
  328 +
  329 + scope.crearHojaRuta();
  330 +
  331 + //assert
  332 + expect(focaModalService.alert).toHaveBeenCalledWith('Ingrese Transportista');
  333 + });
  334 +
  335 + it('guardar hoja ruta valida que tenga tarifario', function() {
  336 +
  337 + //arrange
  338 + var scope = {
  339 + $broadcast: function() { }
  340 + };
  341 + var focaModalService = {
  342 + alert: function() { }
  343 + };
  344 +
  345 + $controller('hojaRutaCtrl', {
  346 + $scope: scope,
  347 + $uibModal: {},
  348 + $location: {},
  349 + $filter: $filter,
  350 + $timeout: $timeout,
  351 + focaCrearHojaRutaService: {
  352 + getBotonera: function() { },
  353 + getNumeroHojaRuta: function() {
  354 + return {
  355 + then: function() { }
  356 + };
  357 + }
  358 + },
  359 + focaModalService: focaModalService,
  360 + focaBotoneraLateralService: {},
  361 + focaLoginService: {},
  362 + });
  363 + scope.remitosTabla = [1];
  364 + scope.hojaRuta = {
  365 + chofer: { id: true },
  366 + vehiculo: { id: true },
  367 + transportista: { COD: true },
  368 + tarifario: { }
  369 + };
  370 +
  371 + //act
  372 + spyOn(focaModalService, 'alert');
  373 +
  374 + scope.crearHojaRuta();
  375 +
  376 + //assert
  377 + expect(focaModalService.alert).toHaveBeenCalledWith('Ingrese Tarifario');
  378 + });
  379 +
  380 + it('guardar hoja ruta valida que tenga datosExtra', function() {
  381 +
  382 + //arrange
  383 + var scope = {
  384 + $broadcast: function() { }
  385 + };
  386 + var focaModalService = {
  387 + alert: function() { }
  388 + };
  389 +
  390 + $controller('hojaRutaCtrl', {
  391 + $scope: scope,
  392 + $uibModal: {},
  393 + $location: {},
  394 + $filter: $filter,
  395 + $timeout: $timeout,
  396 + focaCrearHojaRutaService: {
  397 + getBotonera: function() { },
  398 + getNumeroHojaRuta: function() {
  399 + return {
  400 + then: function() { }
  401 + };
  402 + }
  403 + },
  404 + focaModalService: focaModalService,
  405 + focaBotoneraLateralService: {},
  406 + focaLoginService: {},
  407 + });
  408 + scope.remitosTabla = [1];
  409 + scope.hojaRuta = {
  410 + chofer: { id: true },
  411 + vehiculo: { id: true },
  412 + transportista: { COD: true },
  413 + tarifario: { costo: true }
  414 + };
  415 +
  416 + //act
  417 + spyOn(focaModalService, 'alert');
  418 +
  419 + scope.crearHojaRuta();
  420 +
  421 + //assert
  422 + expect(focaModalService.alert).toHaveBeenCalledWith('Ingrese Datos extra');
  423 + });
  424 +
  425 + it('guardar hoja ruta llama focaCrearHojaRutaService.crearHojaRuta', function() {
  426 +
  427 + //arrange
  428 + var scope = {
  429 + $broadcast: function() { }
  430 + };
  431 + var focaCrearHojaRutaService = {
  432 + getBotonera: function() { },
  433 + getNumeroHojaRuta: function() {
  434 + return {
  435 + then: function() { }
  436 + };
  437 + },
  438 + crearHojaRuta: function() { }
  439 + };
  440 +
  441 + $controller('hojaRutaCtrl', {
  442 + $scope: scope,
  443 + $uibModal: {},
  444 + $location: {},
  445 + $filter: $filter,
  446 + $timeout: $timeout,
  447 + focaCrearHojaRutaService: focaCrearHojaRutaService,
  448 + focaModalService: {},
  449 + focaBotoneraLateralService: {},
  450 + focaLoginService: {},
  451 + });
  452 + scope.remitosTabla = [1];
  453 + scope.hojaRuta = {
  454 + chofer: { id: true },
  455 + vehiculo: { id: true },
  456 + transportista: { COD: true },
  457 + tarifario: { costo: true },
  458 + datosExtra: { }
  459 + };
  460 + scope.fechaReparto = new Date();
  461 +
  462 + var respuesta = { then: function() { } };
  463 +
  464 + //act
  465 + spyOn(focaCrearHojaRutaService, 'crearHojaRuta').and.returnValue(respuesta);
  466 +
  467 + scope.crearHojaRuta();
  468 +
  469 + //assert
  470 + expect(focaCrearHojaRutaService.crearHojaRuta).toHaveBeenCalled();
  471 + });
  472 +
  473 + it('seleccionarTransportista levanta modal y setea datos', function(done) {
  474 +
  475 + //arrange
  476 + var scope = {
  477 + $broadcast: function() { }
  478 + };
  479 + var focaModalService = {
  480 + modal: function() { }
  481 + };
  482 +
  483 + $controller('hojaRutaCtrl', {
  484 + $scope: scope,
  485 + $uibModal: {},
  486 + $location: {},
  487 + $filter: $filter,
  488 + $timeout: $timeout,
  489 + focaCrearHojaRutaService: {
  490 + getBotonera: function() { },
  491 + getNumeroHojaRuta: function() {
  492 + return {
  493 + then: function() { }
  494 + };
  495 + }
  496 + },
  497 + focaModalService: focaModalService,
  498 + focaBotoneraLateralService: {},
  499 + focaLoginService: {},
  500 + });
  501 +
  502 + var respuesta = 1;
  503 + var promesa = Promise.resolve(respuesta);
  504 +
  505 + //act
  506 + spyOn(focaModalService, 'modal').and.returnValue(promesa);
  507 + spyOn(scope, '$broadcast');
  508 +
  509 + scope.seleccionarTransportista();
  510 +
  511 + //assert
  512 + promesa.then(function() {
  513 + expect(focaModalService.modal).toHaveBeenCalled();
  514 + expect(scope.$broadcast).toHaveBeenCalled();
  515 + expect(scope.hojaRuta.transportista).toEqual(respuesta);
  516 + done();
  517 + });
  518 +
  519 + });
  520 +
  521 + it('seleccionarChofer levanta modal y setea datos', function(done) {
  522 +
  523 + //arrange
  524 + var scope = {
  525 + $broadcast: function() { }
  526 + };
  527 + var focaModalService = {
  528 + modal: function() { }
  529 + };
  530 +
  531 + $controller('hojaRutaCtrl', {
  532 + $scope: scope,
  533 + $uibModal: {},
  534 + $location: {},
  535 + $filter: $filter,
  536 + $timeout: $timeout,
  537 + focaCrearHojaRutaService: {
  538 + getBotonera: function() { },
  539 + getNumeroHojaRuta: function() {
  540 + return {
  541 + then: function() { }
  542 + };
  543 + }
  544 + },
  545 + focaModalService: focaModalService,
  546 + focaBotoneraLateralService: {},
  547 + focaLoginService: {},
  548 + });
  549 +
  550 + var respuesta = 1;
  551 + var promesa = Promise.resolve(respuesta);
  552 +
  553 + //act
  554 + spyOn(focaModalService, 'modal').and.returnValue(promesa);
  555 + spyOn(scope, '$broadcast');
  556 +
  557 + scope.seleccionarChofer();
  558 +
  559 + //assert
  560 + promesa.then(function() {
  561 + expect(focaModalService.modal).toHaveBeenCalled();
  562 + expect(scope.$broadcast).toHaveBeenCalled();
  563 + expect(scope.hojaRuta.chofer).toEqual(respuesta);
  564 + done();
  565 + });
  566 +
  567 + });
  568 +
  569 + it('seleccionarTarifario levanta modal y setea datos', function(done) {
  570 +
  571 + //arrange
  572 + var scope = {
  573 + $broadcast: function() { }
  574 + };
  575 + var uibModal = {
  576 + open: function() { }
  577 + };
  578 +
  579 + $controller('hojaRutaCtrl', {
  580 + $scope: scope,
  581 + $uibModal: uibModal,
  582 + $location: {},
  583 + $filter: $filter,
  584 + $timeout: $timeout,
  585 + focaCrearHojaRutaService: {
  586 + getBotonera: function() { },
  587 + getNumeroHojaRuta: function() {
  588 + return {
  589 + then: function() { }
  590 + };
  591 + }
  592 + },
  593 + focaModalService: {},
  594 + focaBotoneraLateralService: {},
  595 + focaLoginService: {},
  596 + });
  597 +
  598 + var respuesta = 1;
  599 + var promesa = { result: Promise.resolve(respuesta) };
  600 +
  601 + //act
  602 + spyOn(uibModal, 'open').and.returnValue(promesa);
  603 + spyOn(scope, '$broadcast');
  604 +
  605 + scope.seleccionarTarifario();
  606 +
  607 + //assert
  608 + promesa.result.then(function() {
  609 + expect(uibModal.open).toHaveBeenCalled();
  610 + expect(scope.$broadcast).toHaveBeenCalled();
  611 + expect(scope.hojaRuta.tarifario).toEqual(respuesta);
  612 + done();
  613 + });
  614 +
  615 + });
  616 +
  617 + it('seleccionarRemitos levanta modal y setea datos', function(done) {
  618 +
  619 + //arrange
  620 + var scope = {
  621 + $broadcast: function() { }
  622 + };
  623 + var uibModal = {
  624 + open: function() { }
  625 + };
  626 +
  627 + $controller('hojaRutaCtrl', {
  628 + $scope: scope,
  629 + $uibModal: uibModal,
  630 + $location: {},
  631 + $filter: $filter,
  632 + $timeout: $timeout,
  633 + focaCrearHojaRutaService: {
  634 + getBotonera: function() { },
  635 + getNumeroHojaRuta: function() {
  636 + return {
  637 + then: function() { }
  638 + };
  639 + }
  640 + },
  641 + focaModalService: {},
  642 + focaBotoneraLateralService: {},
  643 + focaLoginService: {},
  644 + });
  645 + scope.eligioPreConfirmado = false;
  646 + scope.fechaReparto = true;
  647 + scope.hojaRuta = {
  648 + vehiculo: {
  649 + id: true
  650 + }
  651 + };
  652 +
  653 + var respuesta = 1;
  654 + var promesa = { result: Promise.resolve(respuesta) };
  655 +
  656 + //act
  657 + spyOn(uibModal, 'open').and.returnValue(promesa);
  658 +
  659 + scope.seleccionarRemitos();
  660 +
  661 + //assert
  662 + promesa.result.then(function() {
  663 + expect(uibModal.open).toHaveBeenCalled();
  664 + done();
  665 + });
  666 +
  667 + });
  668 +
  669 + it('seleccionarVehiculosPrecargados levanta modal y setea datos', function(done) {
  670 +
  671 + //arrange
  672 + var scope = {
  673 + $broadcast: function() { }
  674 + };
  675 + var focaModalService = {
  676 + modal: function() { }
  677 + };
  678 + var focaCrearHojaRutaService = {
  679 + getBotonera: function() { },
  680 + getNumeroHojaRuta: function() {
  681 + return {
  682 + then: function() { }
  683 + };
  684 + },
  685 + getRemitosByIdVehiculo: function() {
  686 + return {
  687 + then: function() { }
  688 + };
  689 + }
  690 + };
  691 +
  692 + $controller('hojaRutaCtrl', {
  693 + $scope: scope,
  694 + $uibModal: {},
  695 + $location: {},
  696 + $filter: $filter,
  697 + $timeout: $timeout,
  698 + focaCrearHojaRutaService: focaCrearHojaRutaService,
  699 + focaModalService: focaModalService,
  700 + focaBotoneraLateralService: {},
  701 + focaLoginService: {},
  702 + });
  703 + scope.eligioPreConfirmado = false;
  704 + scope.fechaReparto = new Date();
  705 +
  706 + var respuesta = { transportista: { } };
  707 + var promesa = Promise.resolve(respuesta);
  708 +
  709 + //act
  710 + spyOn(focaModalService, 'modal')
  711 + .and.returnValue(promesa);
  712 + spyOn(focaCrearHojaRutaService, 'getRemitosByIdVehiculo')
  713 + .and.returnValue( { then: function() { } } );
  714 + spyOn(scope, '$broadcast');
  715 +
  716 + scope.seleccionarVehiculosPrecargados();
  717 +
  718 + //assert
  719 + promesa.then(function() {
  720 + expect(focaModalService.modal).toHaveBeenCalled();
  721 + expect(focaCrearHojaRutaService.getRemitosByIdVehiculo).toHaveBeenCalled();
  722 + expect(scope.$broadcast).toHaveBeenCalled();
  723 + done();
  724 + });
  725 +
  726 + });
  727 +
  728 + it('cargarCisterna levanta modal y devuelve promesa', function(done) {
  729 +
  730 + //arrange
  731 + var scope = {
  732 + $broadcast: function() { }
  733 + };
  734 + var uibModal = {
  735 + open: function() { }
  736 + };
  737 +
  738 + $controller('hojaRutaCtrl', {
  739 + $scope: scope,
  740 + $uibModal: uibModal,
  741 + $location: {},
  742 + $filter: $filter,
  743 + $timeout: $timeout,
  744 + focaCrearHojaRutaService: {
  745 + getBotonera: function() { },
  746 + getNumeroHojaRuta: function() {
  747 + return {
  748 + then: function() { }
  749 + };
  750 + }
  751 + },
  752 + focaModalService: {},
  753 + focaBotoneraLateralService: {},
  754 + focaLoginService: {},
  755 + });
  756 + scope.eligioPreConfirmado = false;
  757 + scope.fechaReparto = true;
  758 + scope.hojaRuta = {
  759 + vehiculo: {
  760 + id: true
  761 + }
  762 + };
  763 +
  764 + var respuesta = 1;
  765 + var promesa = { result: Promise.resolve(respuesta) };
  766 +
  767 + //act
  768 + spyOn(uibModal, 'open').and.returnValue(promesa);
  769 +
  770 + var resultado = scope.cargarCisterna();
  771 +
  772 + //assert
  773 + promesa.result.then(function() {
  774 + expect(uibModal.open).toHaveBeenCalled();
  775 + expect(typeof resultado).toEqual('object');
  776 + done();
  777 + });
  778 +
  779 + });
  780 +
  781 + it('seleccionarFechaEntrega levanta modal', function(done) {
  782 +
  783 + //arrange
  784 + var scope = {
  785 + $broadcast: function() { }
  786 + };
  787 + var focaModalService = {
  788 + modalFecha: function() { }
  789 + };
  790 +
  791 + $controller('hojaRutaCtrl', {
  792 + $scope: scope,
  793 + $uibModal: {},
  794 + $location: {},
  795 + $filter: $filter,
  796 + $timeout: $timeout,
  797 + focaCrearHojaRutaService: {
  798 + getBotonera: function() { },
  799 + getNumeroHojaRuta: function() {
  800 + return {
  801 + then: function() { }
  802 + };
  803 + }
  804 + },
  805 + focaModalService: focaModalService,
  806 + focaBotoneraLateralService: {},
  807 + focaLoginService: {},
  808 + });
  809 +
  810 + var respuesta = new Date();
  811 + var promesa = Promise.resolve(respuesta);
  812 +
  813 + //act
  814 + spyOn(focaModalService, 'modalFecha').and.returnValue(promesa);
  815 + spyOn(scope, '$broadcast');
  816 +
  817 + scope.seleccionarFechaEntrega();
  818 +
  819 + //assert
  820 + promesa.then(function() {
  821 + expect(focaModalService.modalFecha).toHaveBeenCalled();
  822 + expect(scope.$broadcast).toHaveBeenCalled();
  823 + done();
  824 + });
  825 +
  826 + });
  827 +
  828 + });
  829 +
  830 +});
... ... @@ -0,0 +1,20 @@
  1 +describe('Rutas de módulo crear hoja de ruta', function() {
  2 +
  3 + var route;
  4 +
  5 + beforeEach(function() {
  6 + module('focaCrearHojaRuta');
  7 + inject(function($route) {
  8 + route = $route;
  9 + });
  10 + });
  11 +
  12 + it('La ruta /venta-hoja-ruta/crear dirige correctamente', function() {
  13 +
  14 + //assert
  15 + expect(route.routes['/venta-hoja-ruta/crear'].controller)
  16 + .toBe('hojaRutaCtrl');
  17 + expect(route.routes['/venta-hoja-ruta/crear'].templateUrl)
  18 + .toBe('src/views/hoja-ruta.html');
  19 + });
  20 +});
0 21 \ No newline at end of file
... ... @@ -0,0 +1,387 @@
  1 +describe('Servicios modulo crear hoja de ruta', function() {
  2 +
  3 + beforeEach(function() {
  4 + module('focaCrearHojaRuta');
  5 + inject(module(function($provide) {
  6 + $provide.value('API_ENDPOINT', {
  7 + URL: 'localhost'
  8 + });
  9 + }));
  10 + });
  11 +
  12 + describe('Servicio focaCrearHojaRutaService', function() {
  13 +
  14 + var servicio;
  15 + var httpBackend;
  16 +
  17 + beforeEach(function() {
  18 + inject(function($httpBackend, _focaCrearHojaRutaService_) {
  19 + httpBackend = $httpBackend;
  20 + servicio = _focaCrearHojaRutaService_;
  21 + });
  22 + });
  23 +
  24 + it('Existe el servicio focaCrearHojaRutaService', function() {
  25 +
  26 + //assert
  27 + expect(typeof servicio).toEqual('object');
  28 + });
  29 +
  30 + it('función crearHojaRuta llama ruta correcta', function() {
  31 +
  32 + //arrange
  33 + var responseFake = 'responseFake';
  34 + var result;
  35 + var paramFake = 'test';
  36 +
  37 + httpBackend.expectPOST('localhost/hoja-ruta', paramFake).respond(responseFake);
  38 +
  39 + //act
  40 + servicio.crearHojaRuta(paramFake).then(function(data) {
  41 + result = data.data;
  42 + });
  43 + httpBackend.flush();
  44 +
  45 + //assert
  46 + expect(result).toEqual(responseFake);
  47 + });
  48 +
  49 + it('función obtenerHojaRuta llama ruta correcta', function() {
  50 +
  51 + //arrange
  52 + var responseFake = 'responseFake';
  53 + var result;
  54 +
  55 + httpBackend.expectGET('localhost/hoja-ruta').respond(responseFake);
  56 +
  57 + //act
  58 + servicio.obtenerHojaRuta().then(function(data) {
  59 + result = data.data;
  60 + });
  61 + httpBackend.flush();
  62 +
  63 + //assert
  64 + expect(result).toEqual(responseFake);
  65 + });
  66 +
  67 + it('función setHojaRuta llama ruta correcta', function() {
  68 +
  69 + //arrange
  70 + var paramFake = 'paramFake';
  71 +
  72 + //act
  73 + servicio.setHojaRuta(paramFake);
  74 +
  75 + //assert
  76 + expect(servicio.hojaRuta).toEqual(paramFake);
  77 + });
  78 +
  79 + it('función clearHojaRuta llama ruta correcta', function() {
  80 +
  81 + //act
  82 + servicio.clearHojaRuta();
  83 +
  84 + //assert
  85 + expect(servicio.hojaRuta).toEqual(undefined);
  86 + });
  87 +
  88 + it('función getHojaRuta llama ruta correcta', function() {
  89 +
  90 + //arrange
  91 + var esperado = 'unit test';
  92 + servicio.hojaRuta = esperado;
  93 +
  94 + //act
  95 + var resultado = servicio.getHojaRuta();
  96 +
  97 + //assert
  98 + expect(resultado).toEqual(esperado);
  99 + });
  100 +
  101 + it('función getArticulosByIdHojaRuta llama ruta correcta', function() {
  102 +
  103 + //arrange
  104 + var responseFake = 'responseFake';
  105 + var paramFake = 'param fake';
  106 + var result;
  107 +
  108 + httpBackend.expectGET('localhost/articulos/hoja-ruta/' + paramFake)
  109 + .respond(responseFake);
  110 +
  111 + //act
  112 + servicio.getArticulosByIdHojaRuta(paramFake).then(function(data) {
  113 + result = data.data;
  114 + });
  115 + httpBackend.flush();
  116 +
  117 + //assert
  118 + expect(result).toEqual(responseFake);
  119 + });
  120 +
  121 + it('función crearArticulosParaHojaRuta llama ruta correcta', function() {
  122 +
  123 + //arrange
  124 + var responseFake = 'responseFake';
  125 + var paramFake = 'param fake';
  126 + var result;
  127 +
  128 + httpBackend.expectPOST('localhost/articulos/hoja-ruta',
  129 + { articuloHojaRuta: paramFake }).respond(responseFake);
  130 +
  131 + //act
  132 + servicio.crearArticulosParaHojaRuta(paramFake).then(function(data) {
  133 + result = data.data;
  134 + });
  135 + httpBackend.flush();
  136 +
  137 + //assert
  138 + expect(result).toEqual(responseFake);
  139 + });
  140 +
  141 + it('función getDomiciliosByIdHojaRuta llama ruta correcta', function() {
  142 +
  143 + //arrange
  144 + var responseFake = 'responseFake';
  145 + var paramFake = 'param-fake';
  146 + var result;
  147 +
  148 + httpBackend.expectGET('localhost/hoja-ruta/' + paramFake + '/domicilios')
  149 + .respond(responseFake);
  150 +
  151 + //act
  152 + servicio.getDomiciliosByIdHojaRuta(paramFake).then(function(data) {
  153 + result = data.data;
  154 + });
  155 + httpBackend.flush();
  156 +
  157 + //assert
  158 + expect(result).toEqual(responseFake);
  159 + });
  160 +
  161 + it('función getDomiciliosByIdCliente llama ruta correcta', function() {
  162 +
  163 + //arrange
  164 + var responseFake = 'responseFake';
  165 + var paramFake = 'param-fake';
  166 + var result;
  167 +
  168 + httpBackend.expectGET('localhost/domicilio/tipo/2/cliente/' + paramFake )
  169 + .respond(responseFake);
  170 +
  171 + //act
  172 + servicio.getDomiciliosByIdCliente(paramFake).then(function(data) {
  173 + result = data.data;
  174 + });
  175 + httpBackend.flush();
  176 +
  177 + //assert
  178 + expect(result).toEqual(responseFake);
  179 + });
  180 +
  181 + it('función getPrecioCondicion llama ruta correcta', function() {
  182 +
  183 + //arrange
  184 + var responseFake = 'responseFake';
  185 + var result;
  186 +
  187 + httpBackend.expectGET('localhost/precio-condicion')
  188 + .respond(responseFake);
  189 +
  190 + //act
  191 + servicio.getPrecioCondicion().then(function(data) {
  192 + result = data.data;
  193 + });
  194 + httpBackend.flush();
  195 +
  196 + //assert
  197 + expect(result).toEqual(responseFake);
  198 + });
  199 +
  200 + it('función getPrecioCondicionById llama ruta correcta', function() {
  201 +
  202 + //arrange
  203 + var responseFake = 'responseFake';
  204 + var paramFake = 'param-fake';
  205 + var result;
  206 +
  207 + httpBackend.expectGET('localhost/precio-condicion/' + paramFake)
  208 + .respond(responseFake);
  209 +
  210 + //act
  211 + servicio.getPrecioCondicionById(paramFake).then(function(data) {
  212 + result = data.data;
  213 + });
  214 + httpBackend.flush();
  215 +
  216 + //assert
  217 + expect(result).toEqual(responseFake);
  218 + });
  219 +
  220 + it('función getPlazoPagoByPrecioCondicion llama ruta correcta', function() {
  221 +
  222 + //arrange
  223 + var responseFake = 'responseFake';
  224 + var paramFake = 'param-fake';
  225 + var result;
  226 +
  227 + httpBackend.expectGET('localhost/plazo-pago/precio-condicion/' + paramFake)
  228 + .respond(responseFake);
  229 +
  230 + //act
  231 + servicio.getPlazoPagoByPrecioCondicion(paramFake).then(function(data) {
  232 + result = data.data;
  233 + });
  234 + httpBackend.flush();
  235 +
  236 + //assert
  237 + expect(result).toEqual(responseFake);
  238 + });
  239 +
  240 + it('función crearFlete llama ruta correcta', function() {
  241 +
  242 + //arrange
  243 + var responseFake = 'responseFake';
  244 + var paramFake = 'param-fake';
  245 + var result;
  246 +
  247 + httpBackend.expectPOST('localhost/flete', { flete: paramFake })
  248 + .respond(responseFake);
  249 +
  250 + //act
  251 + servicio.crearFlete(paramFake).then(function(data) {
  252 + result = data.data;
  253 + });
  254 + httpBackend.flush();
  255 +
  256 + //assert
  257 + expect(result).toEqual(responseFake);
  258 + });
  259 +
  260 + it('función crearPlazosParaHojaRuta llama ruta correcta', function() {
  261 +
  262 + //arrange
  263 + var responseFake = 'responseFake';
  264 + var paramFake = 'param-fake';
  265 + var result;
  266 +
  267 + httpBackend.expectPOST('localhost/plazo-pago/hoja-ruta', paramFake)
  268 + .respond(responseFake);
  269 +
  270 + //act
  271 + servicio.crearPlazosParaHojaRuta(paramFake).then(function(data) {
  272 + result = data.data;
  273 + });
  274 + httpBackend.flush();
  275 +
  276 + //assert
  277 + expect(result).toEqual(responseFake);
  278 + });
  279 +
  280 + it('función getCotizacionByIdMoneda llama ruta correcta', function() {
  281 +
  282 + //arrange
  283 + var responseFake = 'responseFake';
  284 + var paramFake = 'param-fake';
  285 + var result;
  286 +
  287 + httpBackend.expectGET('localhost/moneda/' + paramFake)
  288 + .respond(responseFake);
  289 +
  290 + //act
  291 + servicio.getCotizacionByIdMoneda(paramFake).then(function(data) {
  292 + result = data.data;
  293 + });
  294 + httpBackend.flush();
  295 +
  296 + //assert
  297 + expect(result).toEqual(responseFake);
  298 + });
  299 +
  300 + it('función crearEstadoParaHojaRuta llama ruta correcta', function() {
  301 +
  302 + //arrange
  303 + var responseFake = 'responseFake';
  304 + var paramFake = 'param-fake';
  305 + var result;
  306 +
  307 + httpBackend.expectPOST('localhost/estado', { estado: paramFake})
  308 + .respond(responseFake);
  309 +
  310 + //act
  311 + servicio.crearEstadoParaHojaRuta(paramFake).then(function(data) {
  312 + result = data.data;
  313 + });
  314 + httpBackend.flush();
  315 +
  316 + //assert
  317 + expect(result).toEqual(responseFake);
  318 + });
  319 +
  320 + it('función getNumeroHojaRuta llama ruta correcta', function() {
  321 +
  322 + //arrange
  323 + var responseFake = 'responseFake';
  324 + var result;
  325 +
  326 + httpBackend.expectGET('localhost/hoja-ruta/numero-siguiente')
  327 + .respond(responseFake);
  328 +
  329 + //act
  330 + servicio.getNumeroHojaRuta().then(function(data) {
  331 + result = data.data;
  332 + });
  333 + httpBackend.flush();
  334 +
  335 + //assert
  336 + expect(result).toEqual(responseFake);
  337 + });
  338 +
  339 + it('función getRemitosByIdVehiculo llama ruta correcta', function() {
  340 +
  341 + //arrange
  342 + var responseFake = 'responseFake';
  343 + var paramFake = 'param fake';
  344 + var dateFake = new Date();
  345 + var result;
  346 +
  347 + httpBackend.expectGET('localhost/vehiculo/obtener/remitos/' + paramFake + '/' +
  348 + dateFake.toISOString().substring(0, 10))
  349 + .respond(responseFake);
  350 +
  351 + //act
  352 + servicio.getRemitosByIdVehiculo(paramFake, dateFake).then(function(data) {
  353 + result = data.data;
  354 + });
  355 + httpBackend.flush();
  356 +
  357 + //assert
  358 + expect(result).toEqual(responseFake);
  359 + });
  360 +
  361 + it('función desasociarRemitos llama ruta correcta', function() {
  362 +
  363 + //arrange
  364 + var responseFake = 'responseFake';
  365 + var paramFake = 'param fake';
  366 + var paramFake2 = 'param fake 2';
  367 + var paramFake3 = 'param fake 3';
  368 + var result;
  369 +
  370 + httpBackend.expectPOST('localhost/vehiculo/desasociar-remitos',
  371 + {
  372 + idsRemitos: paramFake,
  373 + idVehiculo: paramFake2,
  374 + vehiculoSinRemitos: paramFake3
  375 + }).respond(responseFake);
  376 +
  377 + //act
  378 + servicio.desasociarRemitos(paramFake, paramFake2, paramFake3).then(function(data) {
  379 + result = data.data;
  380 + });
  381 + httpBackend.flush();
  382 +
  383 + //assert
  384 + expect(result).toEqual(responseFake);
  385 + });
  386 + });
  387 +});
1   -angular.module('focaCrearHojaRuta', []);
  1 +angular.module('focaCrearHojaRuta', ['ngRoute']);
src/js/controller.js
... ... @@ -23,7 +23,7 @@ angular.module('focaCrearHojaRuta') .controller('hojaRutaCtrl',
23 23 $scope.now = new Date();
24 24 $scope.puntoVenta = $filter('rellenarDigitos')(0, 4);
25 25 $scope.comprobante = $filter('rellenarDigitos')(0, 8);
26   -
  26 +
27 27 //SETEO BOTONERA LATERAL
28 28 $timeout(function() {
29 29 focaBotoneraLateralService.showSalir(false);
... ... @@ -50,7 +50,7 @@ angular.module('focaCrearHojaRuta') .controller('hojaRutaCtrl',
50 50 costo: null
51 51 }
52 52 };
53   -
  53 +
54 54 $scope.remitosTabla = [];
55 55 $scope.idLista = undefined;
56 56  
... ... @@ -120,7 +120,7 @@ angular.module('focaCrearHojaRuta') .controller('hojaRutaCtrl',
120 120 $filter('rellenarDigitos')(data.data.sucursal, 4) + '-' +
121 121 $filter('rellenarDigitos')(data.data.numeroHojaRuta, 8)
122 122 );
123   -
  123 +
124 124 init();
125 125 },
126 126 function(error) {
... ... @@ -474,7 +474,7 @@ angular.module('focaCrearHojaRuta') .controller('hojaRutaCtrl',
474 474 .toISOString().substring(0, 10) && cisternaCarga.idUsuarioProceso &&
475 475 cisternaCarga.idUsuarioProceso !== idUsuario)
476 476 {
477   - focaModalService.alert('El vehículo está siendo usado por otro' +
  477 + focaModalService.alert('El vehículo está siendo usado por otro' +
478 478 ' usuario');
479 479 return true;
480 480 }
src/js/controllerDatosHojaRuta.js
1 1 angular.module('focaCrearHojaRuta')
2   - .controller('focaModalDatosHojaRutaCtrl',
  2 + .controller('focaModalDatosHojaRutaCtrl',
3 3 [
4 4 '$filter',
5 5 '$scope',
... ... @@ -0,0 +1,22 @@
  1 +<html>
  2 + <head>
  3 + <link rel="stylesheet" type="text/css" href="node_modules/jasmine-core/lib/jasmine-core/jasmine.css">
  4 + <meta charset="UTF-8" />
  5 + </head>
  6 + <body>
  7 + <script type="text/javascript" src="node_modules/jasmine-core/lib/jasmine-core/jasmine.js"></script>
  8 + <script type="text/javascript" src="node_modules/jasmine-core/lib/jasmine-core/jasmine-html.js"></script>
  9 + <script type="text/javascript" src="node_modules/jasmine-core/lib/jasmine-core/boot.js"></script>
  10 + <script type="text/javascript" src="node_modules/angular/angular.min.js"></script>
  11 + <script type="text/javascript" src="node_modules/angular-route/angular-route.min.js"></script>
  12 + <script type="text/javascript" src="node_modules/angular-mocks/angular-mocks.js"></script>
  13 + <script type="text/javascript" src="src/js/app.js"></script>
  14 + <script type="text/javascript" src="src/js/controller.js"></script>
  15 + <script type="text/javascript" src="src/js/controllerDatosHojaRuta.js"></script>
  16 + <script type="text/javascript" src="src/js/service.js"></script>
  17 + <script type="text/javascript" src="src/js/route.js"></script>
  18 + <script type="text/javascript" src="spec/controllerSpec.js"></script>
  19 + <script type="text/javascript" src="spec/serviceSpec.js"></script>
  20 + <script type="text/javascript" src="spec/routeSpec.js"></script>
  21 + </body>
  22 +</html>