Commit 43df6ec56c7d2da31127b050810e8855d76dc239

Authored by Jose Pinto
Exists in master and in 2 other branches develop, lab

Merge branch 'master' into 'master'

Master(efernandez)

See merge request !18
1 const templateCache = require('gulp-angular-templatecache'); 1 const templateCache = require('gulp-angular-templatecache');
2 const concat = require('gulp-concat'); 2 const concat = require('gulp-concat');
3 const htmlmin = require('gulp-htmlmin'); 3 const htmlmin = require('gulp-htmlmin');
4 const rename = require('gulp-rename'); 4 const rename = require('gulp-rename');
5 const uglify = require('gulp-uglify-es').default; 5 const uglify = require('gulp-uglify-es').default;
6 const gulp = require('gulp'); 6 const gulp = require('gulp');
7 const pump = require('pump'); 7 const pump = require('pump');
8 const jshint = require('gulp-jshint'); 8 const jshint = require('gulp-jshint');
9 const replace = require('gulp-replace'); 9 const replace = require('gulp-replace');
10 const connect = require('gulp-connect'); 10 const connect = require('gulp-connect');
11 const clean = require('gulp-clean'); 11 const clean = require('gulp-clean');
12 const header = require('gulp-header');
13 const footer = require('gulp-footer');
12 14
13 var paths = { 15 var paths = {
14 srcJS: 'src/js/*.js', 16 srcJS: 'src/js/*.js',
15 srcViews: 'src/views/*.html', 17 srcViews: 'src/views/*.html',
18 specs: 'spec/*.js',
16 tmp: 'tmp', 19 tmp: 'tmp',
17 dist: 'dist/' 20 dist: 'dist/'
18 }; 21 };
19 22
20 gulp.task('templates', function() { 23 gulp.task('templates', function() {
21 return pump( 24 return pump(
22 [ 25 [
23 gulp.src(paths.srcViews), 26 gulp.src(paths.srcViews),
24 replace('views/', ''), 27 replace('views/', ''),
25 htmlmin(), 28 htmlmin(),
26 templateCache('views.js', { 29 templateCache('views.js', {
27 module: 'focaAbmVendedorCobrador', 30 module: 'focaAbmVendedorCobrador',
28 root: '' 31 root: ''
29 }), 32 }),
30 gulp.dest(paths.tmp) 33 gulp.dest(paths.tmp)
31 ] 34 ]
32 ); 35 );
33 }); 36 });
34 37
35 gulp.task('uglify', ['templates'], function() { 38 gulp.task('uglify', ['templates', 'uglify-spec'], function() {
36 return pump( 39 return pump(
37 [ 40 [
38 gulp.src([ 41 gulp.src([
39 paths.srcJS, 42 paths.srcJS,
40 'tmp/views.js' 43 'tmp/views.js'
41 ]), 44 ]),
42 concat('foca-abm-vendedor-cobrador.js'), 45 concat('foca-abm-vendedor-cobrador.js'),
43 replace("src/views/", ''), 46 replace("src/views/", ''),
44 gulp.dest(paths.tmp), 47 gulp.dest(paths.tmp),
45 rename('foca-abm-vendedor-cobrador.min.js'), 48 rename('foca-abm-vendedor-cobrador.min.js'),
46 uglify(), 49 uglify(),
47 gulp.dest(paths.dist) 50 gulp.dest(paths.dist)
48 ] 51 ]
49 ); 52 );
50 }); 53 });
51 54
55 gulp.task('uglify-spec', function() {
56 return pump([
57 gulp.src(paths.specs),
58 concat('foca-abm-vendedor-cobrador.spec.js'),
59 replace("src/views/", ''),
60 header("describe('Módulo foca-abm-vendedor-cobrador', function() { \n"),
61 footer("});"),
62 gulp.dest(paths.dist)
63 ]);
64 });
65
52 gulp.task('clean', function() { 66 gulp.task('clean', function() {
53 return gulp.src(['tmp', 'dist'], {read: false}) 67 return gulp.src(['tmp', 'dist'], {read: false})
54 .pipe(clean()); 68 .pipe(clean());
55 }); 69 });
56 70
57 gulp.task('pre-commit', function() { 71 gulp.task('pre-commit', function() {
58 pump( 72 return pump(
59 [ 73 [
60 gulp.src(paths.srcJS), 74 gulp.src([paths.srcJS, paths.specs]),
61 jshint('.jshintrc'), 75 jshint('.jshintrc'),
62 jshint.reporter('default'), 76 jshint.reporter('default'),
63 jshint.reporter('fail') 77 jshint.reporter('fail')
64 ] 78 ]
65 ); 79 );
66
67 gulp.start('uglify');
68 }); 80 });
69 81
70 gulp.task('clean-post-install', function() { 82 gulp.task('clean-post-install', function() {
71 return gulp.src(['src', 'tmp', '.jshintrc','readme.md', '.gitignore', 'gulpfile.js', 83 return gulp.src(['src', 'tmp', '.jshintrc','readme.md', '.gitignore', 'gulpfile.js',
72 'index.html'], {read: false}) 84 'index.html', 'spec', 'test.html'], {read: false})
73 .pipe(clean()); 85 .pipe(clean());
74 }); 86 });
75 87
76 gulp.task('compile', ['templates', 'uglify']); 88 gulp.task('compile', ['templates', 'uglify']);
77 89
78 gulp.task('watch', function() { 90 gulp.task('watch', function() {
79 gulp.watch([paths.srcJS, paths.srcViews], ['uglify']); 91 gulp.watch([paths.srcJS, paths.srcViews], ['uglify']);
80 }); 92 });
81 93
82 gulp.task('webserver', function() { 94 gulp.task('webserver', function() {
83 pump [ 95 pump [
84 connect.server({port: 3000}) 96 connect.server({port: 3000})
85 ] 97 ]
86 }); 98 });
87 99
1 { 1 {
2 "name": "foca-abm-vendedor-cobrador", 2 "name": "foca-abm-vendedor-cobrador",
3 "version": "0.0.1", 3 "version": "0.0.1",
4 "description": "Abm de Vendedores/Compradores", 4 "description": "Abm de Vendedores/Compradores",
5 "main": "index.html", 5 "main": "index.html",
6 "scripts": { 6 "scripts": {
7 "test": "echo \"Error: no test specified\" && exit 1", 7 "test": "echo \"Error: no test specified\" && exit 1",
8 "compile": "gulp uglify", 8 "compile": "gulp uglify",
9 "gulp-pre-commit": "gulp pre-commit", 9 "gulp-pre-commit": "gulp pre-commit",
10 "postinstall": "npm run compile && gulp clean-post-install", 10 "postinstall": "npm run compile && gulp clean-post-install",
11 "install-dev": "npm i --ignore-scripts" 11 "install-dev": "npm i --ignore-scripts"
12 }, 12 },
13 "pre-commit": [ 13 "pre-commit": [
14 "gulp-pre-commit" 14 "gulp-pre-commit"
15 ], 15 ],
16 "repository": { 16 "repository": {
17 "type": "git", 17 "type": "git",
18 "url": "http://git.focasoftware.com/npm/foca-abm-vendedor-cobrador.git" 18 "url": "http://git.focasoftware.com/npm/foca-abm-vendedor-cobrador.git"
19 }, 19 },
20 "author": "Foca Software", 20 "author": "Foca Software",
21 "license": "ISC", 21 "license": "ISC",
22 "peerDependencies": { 22 "peerDependencies": {
23 "angular": "^1.7.x", 23 "angular": "^1.7.x",
24 "angular-route": "^1.7.x", 24 "angular-route": "^1.7.x",
25 "bootstrap": "^4.1.x", 25 "bootstrap": "^4.1.x",
26 "jquery": "^3.3.x", 26 "jquery": "^3.3.x",
27 "font-awesome": "^4.7.x", 27 "font-awesome": "^4.7.x",
28 "gulp": "^3.9.x", 28 "gulp": "^3.9.x",
29 "gulp-concat": "2.6.x", 29 "gulp-concat": "2.6.x",
30 "gulp-jshint": "^2.1.x", 30 "gulp-jshint": "^2.1.x",
31 "gulp-rename": "^1.4.x", 31 "gulp-rename": "^1.4.x",
32 "gulp-replace": "^1.0.x", 32 "gulp-replace": "^1.0.x",
33 "gulp-uglify-es": "^1.0.x", 33 "gulp-uglify-es": "^1.0.x",
34 "jshint": "^2.9.x", 34 "jshint": "^2.9.x",
35 "pump": "^3.0.x" 35 "pump": "^3.0.x"
36 }, 36 },
37 "devDependencies": { 37 "devDependencies": {
38 "angular": "^1.7.5", 38 "angular": "^1.7.5",
39 "angular-mocks": "^1.7.7",
39 "angular-route": "^1.7.5", 40 "angular-route": "^1.7.5",
40 "bootstrap": "^4.1.3", 41 "bootstrap": "^4.1.3",
41 "foca-modal": "git+http://git.focasoftware.com/npm/foca-modal.git", 42 "foca-modal": "git+http://git.focasoftware.com/npm/foca-modal.git",
42 "font-awesome": "^4.7.0", 43 "font-awesome": "^4.7.0",
43 "gulp": "^3.9.1", 44 "gulp": "^3.9.1",
44 "gulp-angular-templatecache": "^2.2.5", 45 "gulp-angular-templatecache": "^2.2.5",
45 "gulp-clean": "^0.4.0", 46 "gulp-clean": "^0.4.0",
46 "gulp-connect": "^5.6.1", 47 "gulp-connect": "^5.6.1",
47 "gulp-htmlmin": "^5.0.1", 48 "gulp-htmlmin": "^5.0.1",
48 "gulp-jshint": "^2.1.0", 49 "gulp-jshint": "^2.1.0",
49 "gulp-rename": "^1.4.0", 50 "gulp-rename": "^1.4.0",
50 "gulp-replace": "^1.0.0", 51 "gulp-replace": "^1.0.0",
51 "gulp-uglify": "^3.0.1", 52 "gulp-uglify": "^3.0.1",
52 "gulp-uglify-es": "^1.0.4", 53 "gulp-uglify-es": "^1.0.4",
53 "jasmine-core": "^3.3.0", 54 "jasmine-core": "^3.3.0",
54 "jquery": "^3.3.1", 55 "jquery": "^3.3.1",
55 "jshint": "^2.9.6", 56 "jshint": "^2.9.6",
56 "pre-commit": "^1.2.2", 57 "pre-commit": "^1.2.2",
57 "pump": "^3.0.0", 58 "pump": "^3.0.0",
58 "ui-bootstrap4": "^3.0.5" 59 "ui-bootstrap4": "^3.0.5"
59 } 60 }
60 } 61 }
61 62
spec/controllerSpec.js
File was created 1 describe('Controladores abm vendedor cobrador', function() {
2
3 var $controller;
4
5 beforeEach(function() {
6 module('focaAbmVendedorCobrador');
7 inject(function(_$controller_) {
8 $controller = _$controller_;
9 });
10 });
11 describe('controlador focaAbmVendedoresCobradoresController', function() {
12
13 var focaBotoneraLateralService = {
14 showSalir: function() { },
15 showPausar: function() { },
16 showCancelar: function() { },
17 showGuardar: function() { }
18 };
19
20 it('existe el controlador focaAbmVendedoresCobradoresController', function() {
21 //act
22 var controlador = $controller('focaAbmVendedoresCobradoresController', {
23 $scope: {},
24 focaAbmVendedorCobradorService: {},
25 $location: {},
26 $filter: {},
27 focaBotoneraLateralService: focaBotoneraLateralService,
28 focaModalService: {}
29 });
30
31 //arrange
32 expect(typeof controlador).toEqual('object');
33 });
34
35 it('la función $scope.editar llama a la url correcta', function() {
36 inject(function($location) {
37
38 //arrange
39 var scope = {};
40 $controller('focaAbmVendedoresCobradoresController', {
41 $scope: scope,
42 focaAbmVendedorCobradorService: {},
43 $location: $location,
44 $filter: {},
45 focaBotoneraLateralService: focaBotoneraLateralService,
46 focaModalService: {}
47 });
48 var paramFake = 1;
49
50 //act
51 scope.editar(paramFake);
52 //arrange
53 expect($location.url()).toEqual('/vendedor-cobrador/' + paramFake);
54 });
55 });
56
57 it('la función $scope.eliminar llama a modal confirmar', function() {
58 inject(function($location) {
59
60 //arrange
61 var scope = {};
62 var focaModalService = {
63 confirm: function() { }
64 };
65 $controller('focaAbmVendedoresCobradoresController', {
66 $scope: scope,
67 focaAbmVendedorCobradorService: {},
68 $location: $location,
69 $filter: {},
70 focaBotoneraLateralService: focaBotoneraLateralService,
71 focaModalService: focaModalService
72 });
73 var paramFake = 1;
74
75 //act
76 spyOn(focaModalService, 'confirm').and.returnValue({ then: function() { } });
77 scope.eliminar(paramFake);
78
79 //arrange
80 expect(focaModalService.confirm).toHaveBeenCalled();
81 });
82 });
83
84 it('función $scope.eliminar llama eliminarVendedorCobrador al confirm ok', function(done) {
85 inject(function($location) {
86
87 //arrange
88 var scope = {};
89 var focaModalService = {
90 confirm: function() { }
91 };
92 var focaAbmVendedorCobradorService = {
93 eliminarVendedorCobrador: function() { }
94 };
95 $controller('focaAbmVendedoresCobradoresController', {
96 $scope: scope,
97 focaAbmVendedorCobradorService: focaAbmVendedorCobradorService,
98 $location: $location,
99 $filter: {},
100 focaBotoneraLateralService: focaBotoneraLateralService,
101 focaModalService: focaModalService
102 });
103 var paramFake = 1;
104 var promesaConfirmar = Promise.resolve(true);
105
106 //act
107 spyOn(focaModalService, 'confirm').and.returnValue(promesaConfirmar);
108 spyOn(focaAbmVendedorCobradorService, 'eliminarVendedorCobrador')
109 .and.returnValue({ then: function() { } });
110 scope.eliminar(paramFake);
111
112 //arrange
113 promesaConfirmar.then(function() {
114 expect(focaAbmVendedorCobradorService.eliminarVendedorCobrador)
115 .toHaveBeenCalled();
116 done();
117 });
118 });
119 });
120
121 it('función $scope.resetPage llama a $scope.selectPage', function() {
122
123 //arrange
124 var scope = {};
125 $controller('focaAbmVendedoresCobradoresController', {
126 $scope: scope,
127 focaAbmVendedorCobradorService: {},
128 $location: {},
129 $filter: {},
130 focaBotoneraLateralService: focaBotoneraLateralService,
131 focaModalService: {}
132 });
133
134 //act
135 spyOn(scope, 'selectPage');
136 scope.resetPage();
137
138 //arrange
139 expect(scope.selectPage).toHaveBeenCalled();
140 });
141
142 it('función $scope.search llama a getVendedoresCobradores', function() {
143
144 //arrange
145 var scope = {};
146 var focaAbmVendedorCobradorService = {
147 getVendedoresCobradores: function() { }
148 };
149 $controller('focaAbmVendedoresCobradoresController', {
150 $scope: scope,
151 focaAbmVendedorCobradorService: focaAbmVendedorCobradorService,
152 $location: {},
153 $filter: {},
154 focaBotoneraLateralService: focaBotoneraLateralService,
155 focaModalService: {}
156 });
157
158 //act
159 spyOn(focaAbmVendedorCobradorService, 'getVendedoresCobradores')
160 .and.returnValue({ then: function() { } });
161 scope.search(13);
162
163 //arrange
164 expect(focaAbmVendedorCobradorService.getVendedoresCobradores).toHaveBeenCalled();
165 });
166
167 it('función scope.search llama getVendedoresCobradores y llama resetPage', function(done) {
168
169 //arrange
170 var scope = {};
171 var focaAbmVendedorCobradorService = {
172 getVendedoresCobradores: function() { }
173 };
174 $controller('focaAbmVendedoresCobradoresController', {
175 $scope: scope,
176 focaAbmVendedorCobradorService: focaAbmVendedorCobradorService,
177 $location: {},
178 $filter: {},
179 focaBotoneraLateralService: focaBotoneraLateralService,
180 focaModalService: {}
181 });
182 var promesaVendedores = Promise.resolve({ data: [] });
183
184 //act
185 spyOn(focaAbmVendedorCobradorService, 'getVendedoresCobradores')
186 .and.returnValue(promesaVendedores);
187 spyOn(scope, 'resetPage');
188 scope.vendedoresCobradores = [];
189 scope.search(13);
190
191 //arrange
192 promesaVendedores.then(function() {
193 expect(scope.resetPage).toHaveBeenCalled();
194 done();
195 });
196 });
197 });
198
199 describe('Controlador focaAbmVendedorCobradorController', function() {
200
201 var timeout;
202
203 beforeEach(function() {
204 inject(function($timeout) {
205 timeout = $timeout;
206 });
207 });
208
209 it('existe el controlador focaAbmVendedorCobradorController', function() {
210
211 //act
212 var controlador = $controller('focaAbmVendedorCobradorController', {
213 $scope: {},
214 focaAbmVendedorCobradorService: {
215 getCodigoSiguiente: function() {
216 return {
217 then: function() { }
218 };
219 },
220 getVendedorCobradorById: function() {
221 return {
222 then: function() { }
223 };
224 }
225 },
226 $routeParams: {},
227 focaBotoneraLateralService: {},
228 $timeout: timeout,
229 $uibModal: {},
230 $location: {},
231 focaModalService: {}
232 });
233
234 //assert
235 expect(typeof controlador).toEqual('object');
236 });
237
238 it('la función $scope.guardar llama a guardaVendedorCobrador del servicio', function() {
239 //arrange
240 var scope= {};
241 var focaAbmVendedorCobradorService = {
242 getCodigoSiguiente: function() {
243 return {
244 then: function() { }
245 };
246 },
247 getVendedorCobradorById: function() {
248 return {
249 then: function() { }
250 };
251 },
252 guardarVendedorCobrador: function() { }
253 };
254 $controller('focaAbmVendedorCobradorController', {
255 $scope: scope,
256 focaAbmVendedorCobradorService: focaAbmVendedorCobradorService,
257 $routeParams: {},
258 focaBotoneraLateralService: {},
259 $timeout: timeout,
260 $uibModal: {},
261 $location: {},
262 focaModalService: {}
263 });
264 var responseFake = {
265 then: function() {
266 return {
267 catch: function() { }
268 };
269 }
270 };
271
272 //act
273 spyOn(focaAbmVendedorCobradorService, 'guardarVendedorCobrador')
274 .and.returnValue(responseFake);
275 scope.guardar();
276
277 //assert
278 expect(focaAbmVendedorCobradorService.guardarVendedorCobrador).toHaveBeenCalled();
279 });
280
281 it('la función $scope.guardar llama a guardaVendedorCobrador y edicion true' +
282 'llama a $location.path', function(done)
283 {
284 inject(function($location) {
285
286 //arrange
287 var scope= {};
288 var focaAbmVendedorCobradorService = {
289 getCodigoSiguiente: function() {
290 return {
291 then: function() { }
292 };
293 },
294 getVendedorCobradorById: function() {
295 return {
296 then: function() { }
297 };
298 },
299 guardarVendedorCobrador: function() { }
300 };
301 $controller('focaAbmVendedorCobradorController', {
302 $scope: scope,
303 focaAbmVendedorCobradorService: focaAbmVendedorCobradorService,
304 $routeParams: {},
305 focaBotoneraLateralService: {},
306 $timeout: timeout,
307 $uibModal: {},
308 $location: $location,
309 focaModalService: {}
310 });
311 var promiseFake = Promise.resolve(true, false);
312
313 //act
314 spyOn(focaAbmVendedorCobradorService, 'guardarVendedorCobrador')
315 .and.returnValue(promiseFake);
316 scope.edicion = true;
317 scope.guardar();
318
319 //assert
320 promiseFake.then(function() {
321 expect($location.url()).toEqual('/vendedor-cobrador');
322 done();
323 });
324 });
325 });
326
327 it('la función $scope.guardar llama a guardaVendedorCobrador y scope.edicion false' +
328 'llama a scope.cambiarContraseña', function(done)
329 {
330 //arrange
331 var scope= {};
332 var focaAbmVendedorCobradorService = {
333 getCodigoSiguiente: function() {
334 return {
335 then: function() { }
336 };
337 },
338 getVendedorCobradorById: function() {
339 return {
340 then: function() { }
341 };
342 },
343 guardarVendedorCobrador: function() { }
344 };
345 $controller('focaAbmVendedorCobradorController', {
346 $scope: scope,
347 focaAbmVendedorCobradorService: focaAbmVendedorCobradorService,
348 $routeParams: {},
349 focaBotoneraLateralService: {},
350 $timeout: timeout,
351 $uibModal: {},
352 $location: {},
353 focaModalService: {}
354 });
355 var promiseFake = Promise.resolve(true, false);
356
357 //act
358 spyOn(focaAbmVendedorCobradorService, 'guardarVendedorCobrador')
359 .and.returnValue(promiseFake);
360 spyOn(scope, 'cambiarPassword');
361 scope.edicion = false;
362 scope.guardar();
363
364 //assert
365 promiseFake.then(function() {
366 expect(scope.cambiarPassword).toHaveBeenCalled();
367 done();
368 });
369 });
370
371 it('la función $scope.guardar llama a guardaVendedorCobrador y llama foca modal alert' +
372 'cuando la promsa es rechazada y el error es 409', function(done)
373 {
374 //arrange
375 var scope= {};
376 var focaAbmVendedorCobradorService = {
377 getCodigoSiguiente: function() {
378 return {
379 then: function() { }
380 };
381 },
382 getVendedorCobradorById: function() {
383 return {
384 then: function() { }
385 };
386 },
387 guardarVendedorCobrador: function() { }
388 };
389 var focaModalService = {
390 alert: function() { }
391 };
392 $controller('focaAbmVendedorCobradorController', {
393 $scope: scope,
394 focaAbmVendedorCobradorService: focaAbmVendedorCobradorService,
395 $routeParams: {},
396 focaBotoneraLateralService: {},
397 $timeout: timeout,
398 $uibModal: {},
399 $location: {},
400 focaModalService: focaModalService
401 });
402 var promiseFake = Promise.reject({ status: 409 });
403
404 //act
405 spyOn(focaAbmVendedorCobradorService, 'guardarVendedorCobrador')
406 .and.returnValue(promiseFake);
407 spyOn(focaModalService, 'alert');
408 scope.guardar();
409
410 //assert
411 promiseFake.catch(function() {
412 setTimeout(function() {
413 expect(focaModalService.alert).toHaveBeenCalled();
414 done();
415 }, 100);
416 });
417 });
418
419 it('la función $scope.seleccionarProvincia llama a foca Modal', function() {
420 //arrange
421 var scope= {};
422 var focaAbmVendedorCobradorService = {
423 getCodigoSiguiente: function() {
424 return {
425 then: function() { }
426 };
427 },
428 getVendedorCobradorById: function() {
429 return {
430 then: function() { }
431 };
432 },
433 };
434 var focaModalService = {
435 modal: function() { }
436 };
437 $controller('focaAbmVendedorCobradorController', {
438 $scope: scope,
439 focaAbmVendedorCobradorService: focaAbmVendedorCobradorService,
440 $routeParams: {},
441 focaBotoneraLateralService: {},
442 $timeout: timeout,
443 $uibModal: {},
444 $location: {},
445 focaModalService: focaModalService
446 });
447
448 //act
449 spyOn(focaModalService, 'modal').and.returnValue({ then: function() { } });
450 scope.seleccionarProvincia(13);
451
452 //assert
453 expect(focaModalService.modal).toHaveBeenCalled();
454 });
455
456 it('función $scope.seleccionarLocalidad llama foca alert si no hay provincia', function() {
457 //arrange
458 var scope= {};
459 var focaAbmVendedorCobradorService = {
460 getCodigoSiguiente: function() {
461 return {
462 then: function() { }
463 };
464 },
465 getVendedorCobradorById: function() {
466 return {
467 then: function() { }
468 };
469 },
470 };
471 var focaModalService = {
472 alert: function() { }
473 };
474 $controller('focaAbmVendedorCobradorController', {
475 $scope: scope,
476 focaAbmVendedorCobradorService: focaAbmVendedorCobradorService,
477 $routeParams: {},
478 focaBotoneraLateralService: {},
479 $timeout: timeout,
480 $uibModal: {},
481 $location: {},
482 focaModalService: focaModalService
483 });
484
485 //act
486 spyOn(focaModalService, 'alert');
487 scope.vendedorCobrador.provincia.ID = false;
488 scope.seleccionarLocalidad();
489
490 //assert
491 expect(focaModalService.alert).toHaveBeenCalled();
492 });
493
494 it('función $scope.seleccionarLocalidad llama foca modal', function() {
495 //arrange
496 var scope= {};
497 var focaAbmVendedorCobradorService = {
498 getCodigoSiguiente: function() {
499 return {
500 then: function() { }
501 };
502 },
503 getVendedorCobradorById: function() {
504 return {
505 then: function() { }
506 };
507 },
508 };
509 var focaModalService = {
510 modal: function() { }
511 };
512 $controller('focaAbmVendedorCobradorController', {
513 $scope: scope,
514 focaAbmVendedorCobradorService: focaAbmVendedorCobradorService,
515 $routeParams: {},
516 focaBotoneraLateralService: {},
517 $timeout: timeout,
518 $uibModal: {},
519 $location: {},
520 focaModalService: focaModalService
521 });
522
523 //act
524 spyOn(focaModalService, 'modal').and.returnValue({ then: function() { } });
525 scope.vendedorCobrador.provincia.ID = true;
526 scope.seleccionarLocalidad(13);
527
528 //assert
529 expect(focaModalService.modal).toHaveBeenCalled();
530 });
531
532 it('la función scope.cancelar lleva a location correcte', function() {
533
534 inject(function($location) {
535 //arrange
536 var scope = {};
537 $controller('focaAbmVendedorCobradorController', {
538 $scope: scope,
539 focaAbmVendedorCobradorService: {
540 getCodigoSiguiente: function() {
541 return {
542 then: function() { }
543 };
544 },
545 getVendedorCobradorById: function() {
546 return {
547 then: function() { }
548 };
549 }
550 },
551 $routeParams: {},
552 focaBotoneraLateralService: {},
553 $timeout: timeout,
554 $uibModal: {},
555 $location: $location,
556 focaModalService: {}
557 });
558
559 //act
560 scope.formVendedorCobrador = {
561 $pristine: true
562 };
563 scope.cancelar();
564
565 //assert
566 expect($location.url()).toEqual('/vendedor-cobrador');
567 });
568 });
569
570 it('la funcion scope.next suma uno a scope.focused', function() {
571
572 //arrange
573 var scope = {};
574 $controller('focaAbmVendedorCobradorController', {
575 $scope: scope,
576 focaAbmVendedorCobradorService: {
577 getCodigoSiguiente: function() {
578 return {
579 then: function() { }
580 };
581 },
582 getVendedorCobradorById: function() {
583 return {
584 then: function() { }
585 };
586 }
587 },
588 $routeParams: {},
589 focaBotoneraLateralService: {},
590 $timeout: timeout,
591 $uibModal: {},
592 $location: {},
593 focaModalService: {}
594 });
595
596 //act
597 var esperado = scope.focused + 1;
598 scope.next(13);
599
600 //assert
601 expect(scope.focused).toEqual(esperado);
602 });
603
604 it('la funcion scope.cambiarPassword abre modal', function() {
605
606 //arrange
607 var scope = {};
608 var uibModal = {
609 open: function() { }
610 };
611 $controller('focaAbmVendedorCobradorController', {
612 $scope: scope,
613 focaAbmVendedorCobradorService: {
614 getCodigoSiguiente: function() {
615 return {
616 then: function() { }
617 };
618 },
619 getVendedorCobradorById: function() {
620 return {
621 then: function() { }
622 };
623 }
624 },
625 $routeParams: {},
626 focaBotoneraLateralService: {},
627 $timeout: timeout,
628 $uibModal: uibModal,
629 $location: {},
630 focaModalService: {}
631 });
632 var responseFake = {
633 result: {
634 then: function() { }
635 }
636 };
637
638 //act
639 spyOn(uibModal, 'open').and.returnValue(responseFake);
640 scope.cambiarPassword();
641
642 //assert
643 expect(uibModal.open).toHaveBeenCalled();
644 });
645
646 it('la funcion scope.cambiarPassword abre modal y llama a location cuando edicion es ' +
647 'falso', function(done)
648 {
649 inject(function($location) {
650
651 //arrange
652 var scope = {};
653 var uibModal = {
654 open: function() { }
655 };
656 $controller('focaAbmVendedorCobradorController', {
657 $scope: scope,
658 focaAbmVendedorCobradorService: {
659 getCodigoSiguiente: function() {
660 return {
661 then: function() { }
662 };
663 },
664 getVendedorCobradorById: function() {
665 return {
666 then: function() { }
667 };
668 }
669 },
670 $routeParams: {},
671 focaBotoneraLateralService: {},
672 $timeout: timeout,
673 $uibModal: uibModal,
674 $location: $location,
675 focaModalService: {}
676 });
677 var responseFake = {
678 result: Promise.resolve(true)
679 };
680
681 //act
682 spyOn(uibModal, 'open').and.returnValue(responseFake);
683 scope.edicion = false;
684 scope.cambiarPassword();
685
686 //assert
687 responseFake.result.then(function() {
688 expect($location.url()).toEqual('/vendedor-cobrador');
689 done();
690 });
691 });
692 });
693 });
694 });
695
File was created 1 describe('Rutas de abm vendedor cobrador', function() {
2
3 var route;
4
5 beforeEach(function() {
6 module('focaAbmVendedorCobrador');
7 inject(function($route) {
8 route = $route;
9 });
10 });
11
12 it('ruta /vendedor-cobrador lleva a ruta correcta', function() {
13 //assert
14 expect(route.routes['/vendedor-cobrador'].controller)
15 .toBe('focaAbmVendedoresCobradoresController');
16 expect(route.routes['/vendedor-cobrador'].templateUrl)
17 .toBe('src/views/foca-abm-vendedor-cobrador-listado.html');
18 });
19
20 it('ruta /vendedor-cobrador/:id lleva a ruta correcta', function() {
21 //assert
22 expect(route.routes['/vendedor-cobrador/:id'].controller)
23 .toBe('focaAbmVendedorCobradorController');
24 expect(route.routes['/vendedor-cobrador/:id'].templateUrl)
25 .toBe('src/views/foca-abm-vendedor-cobrador-item.html');
26 });
27 });
28
File was created 1 describe('Servicios abm vendedor cobrador', function() {
2
3 var httpBackend;
4
5 beforeEach(function() {
6 module('focaAbmVendedorCobrador');
7
8 inject(module(function($provide) {
9 $provide.value('API_ENDPOINT', {
10 URL: 'local'
11 });
12 }));
13
14 inject(function($httpBackend) {
15 httpBackend = $httpBackend;
16 });
17 });
18
19 describe('Servicio focaAbmVendedorCobradorService', function() {
20
21 var servicio;
22
23 beforeEach(inject(function(focaAbmVendedorCobradorService) {
24 servicio = focaAbmVendedorCobradorService;
25 }));
26
27 it('Existe el servicio focaAbmVendedorCobradorService', function() {
28 //assert
29 expect(typeof servicio).toEqual('object');
30 });
31
32 it('la función getVendedoresCobradores llama a la ruta correcta', function() {
33 //arrange
34 var result;
35 var fakeResponse = { data: 'test' };
36 var fakeBody = 2;
37 httpBackend.expectPOST('local/vendedor-cobrador/list', { nombre: fakeBody })
38 .respond(fakeResponse);
39
40 //act
41 servicio.getVendedoresCobradores(fakeBody).then(function(data) {
42 result = data.data;
43 });
44 httpBackend.flush();
45
46 //assert
47 expect(result).toEqual(fakeResponse);
48 });
49
50 it('la función getVendedorCobradorById llama a la ruta correcta', function() {
51 //arrange
52 var result;
53 var fakeResponse = { data: 'test' };
54 var fakeParam = 1;
55 httpBackend.expectGET('local/vendedor-cobrador/' + fakeParam).respond(fakeResponse);
56
57 //act
58 servicio.getVendedorCobradorById(fakeParam).then(function(data) {
59 result = data.data;
60 });
61 httpBackend.flush();
62
63 //assert
64 expect(result).toEqual(fakeResponse);
65 });
66
67 it('la función guardarVendedorCobrador llama a la ruta correcta', function() {
68 //arrange
69 var result;
70 var fakeResponse = { data: 'test' };
71 var fakeBody = 1;
72 httpBackend.expectPOST('local/vendedor-cobrador', { vendedorCobrador: fakeBody })
73 .respond(fakeResponse);
74
75 //act
76 servicio.guardarVendedorCobrador(fakeBody).then(function(data) {
77 result = data.data;
78 });
79 httpBackend.flush();
80
81 //assert
82 expect(result).toEqual(fakeResponse);
83 });
84
85 it('la función eliminarVendedorCobrador llama a la ruta correcta', function() {
86 //arrange
87 var result;
88 var fakeResponse = { data: 'test' };
89 var fakeParam = 1;
90 httpBackend.expectDELETE('local/vendedor-cobrador/' + fakeParam)
91 .respond(fakeResponse);
92
93 //act
94 servicio.eliminarVendedorCobrador(fakeParam).then(function(data) {
95 result = data.data;
96 });
97 httpBackend.flush();
98
99 //assert
100 expect(result).toEqual(fakeResponse);
101 });
102
103 it('la función getCodigoSiguiente llama a la ruta correcta', function() {
104 //arrange
105 var result;
106 var fakeResponse = { data: 'test' };
107 httpBackend.expectGET('local/vendedor-cobrador/obtener/siguiente-codigo')
108 .respond(fakeResponse);
109
110 //act
111 servicio.getCodigoSiguiente().then(function(data) {
112 result = data.data;
113 });
114 httpBackend.flush();
115
116 //assert
117 expect(result).toEqual(fakeResponse);
118 });
119 });
120 });
121
1 angular.module('focaAbmVendedorCobrador', []); 1 angular.module('focaAbmVendedorCobrador', ['ngRoute']);
2 2
src/js/controller.js
1 angular.module('focaAbmVendedorCobrador') 1 angular.module('focaAbmVendedorCobrador')
2 .controller('focaAbmVendedoresCobradoresController', [ 2 .controller('focaAbmVendedoresCobradoresController', [
3 '$scope', 'focaAbmVendedorCobradorService', '$location', '$filter', 3 '$scope', 'focaAbmVendedorCobradorService', '$location', '$filter',
4 'focaBotoneraLateralService', 'focaModalService', 4 'focaBotoneraLateralService', 'focaModalService',
5 function($scope, focaAbmVendedorCobradorService, $location, $filter, 5 function($scope, focaAbmVendedorCobradorService, $location, $filter,
6 focaBotoneraLateralService, focaModalService) { 6 focaBotoneraLateralService, focaModalService) {
7 $scope.now = new Date(); 7 $scope.now = new Date();
8 $scope.vendedoresCobradores = []; 8 $scope.vendedoresCobradores = [];
9 $scope.filters = ''; 9 $scope.filters = '';
10 $scope.numPerPage = 10; 10 $scope.numPerPage = 10;
11 $scope.currentPageVendedoresCobradores = []; 11 $scope.currentPageVendedoresCobradores = [];
12 $scope.vendedoresCobradores = []; 12 $scope.vendedoresCobradores = [];
13 13
14 //SETEO BOTONERA LATERAL 14 //SETEO BOTONERA LATERAL
15 focaBotoneraLateralService.showSalir(true); 15 focaBotoneraLateralService.showSalir(true);
16 focaBotoneraLateralService.showPausar(false); 16 focaBotoneraLateralService.showPausar(false);
17 focaBotoneraLateralService.showCancelar(false); 17 focaBotoneraLateralService.showCancelar(false);
18 focaBotoneraLateralService.showGuardar(false); 18 focaBotoneraLateralService.showGuardar(false);
19 19
20 $scope.editar = function(id) { 20 $scope.editar = function(id) {
21 $location.path('/vendedor-cobrador/' + id); 21 $location.path('/vendedor-cobrador/' + id);
22 }; 22 };
23 23
24 $scope.eliminar = function(vendedorCobrador) { 24 $scope.eliminar = function(vendedorCobrador) {
25 var tipo = !!(vendedorCobrador.rol | 2) ? 'cobrador' : 'vendedor'; 25 var tipo = !!(vendedorCobrador.rol | 2) ? 'cobrador' : 'vendedor';
26 focaModalService.confirm('¿Está seguro que desea borrar el ' + tipo + 26 focaModalService.confirm('¿Está seguro que desea borrar el ' + tipo +
27 ' ' + vendedorCobrador.NOM + '?') 27 ' ' + vendedorCobrador.NOM + '?')
28 .then(function(data) { 28 .then(function(data) {
29 if(data) { 29 if(data) {
30 focaAbmVendedorCobradorService 30 focaAbmVendedorCobradorService
31 .eliminarVendedorCobrador(vendedorCobrador.NUM) 31 .eliminarVendedorCobrador(vendedorCobrador.NUM)
32 .then(function() { 32 .then(function() {
33 $scope.search(13); 33 $scope.search(13);
34 }); 34 });
35 } 35 }
36 }); 36 });
37 }; 37 };
38 38
39 $scope.selectPage = function(page) { 39 $scope.selectPage = function(page) {
40 var start = (page - 1) * $scope.numPerPage; 40 var start = (page - 1) * $scope.numPerPage;
41 var end = start + $scope.numPerPage; 41 var end = start + $scope.numPerPage;
42 $scope.paginas = []; 42 $scope.paginas = [];
43 $scope.paginas = calcularPages(page); 43 $scope.paginas = calcularPages(page);
44 $scope.currentPageVendedoresCobradores = 44 $scope.currentPageVendedoresCobradores =
45 $scope.vendedoresCobradores.slice(start, end); 45 $scope.vendedoresCobradores.slice(start, end);
46 $scope.currentPage = page; 46 $scope.currentPage = page;
47 }; 47 };
48 48
49 $scope.resetPage = function() { 49 $scope.resetPage = function() {
50 $scope.currentPage = 1; 50 $scope.currentPage = 1;
51 $scope.selectPage(1); 51 $scope.selectPage(1);
52 }; 52 };
53 53
54 $scope.search = function(key) { 54 $scope.search = function(key) {
55 if(key !== 13) return; 55 if(key !== 13) return;
56 56
57 focaAbmVendedorCobradorService 57 focaAbmVendedorCobradorService
58 .getVendedoresCobradores($scope.filters) 58 .getVendedoresCobradores($scope.filters)
59 .then(function(res) { 59 .then(function(res) {
60 $scope.vendedoresCobradores = res.data; 60 $scope.vendedoresCobradores = res.data;
61 61
62 $scope.lastPage = Math.ceil( 62 $scope.lastPage = Math.ceil(
63 $scope.vendedoresCobradores.length / $scope.numPerPage 63 $scope.vendedoresCobradores.length / $scope.numPerPage
64 ); 64 );
65 65
66 $scope.resetPage(); 66 $scope.resetPage();
67 }); 67 });
68 }; 68 };
69 69
70 function calcularPages(paginaActual) { 70 function calcularPages(paginaActual) {
71 var paginas = []; 71 var paginas = [];
72 paginas.push(paginaActual); 72 paginas.push(paginaActual);
73 73
74 if(paginaActual - 1 > 1) { 74 if(paginaActual - 1 > 1) {
75 75
76 paginas.unshift(paginaActual - 1); 76 paginas.unshift(paginaActual - 1);
77 if(paginaActual - 2 > 1) { 77 if(paginaActual - 2 > 1) {
78 paginas.unshift(paginaActual - 2); 78 paginas.unshift(paginaActual - 2);
79 } 79 }
80 } 80 }
81 81
82 if(paginaActual + 1 < $scope.lastPage) { 82 if(paginaActual + 1 < $scope.lastPage) {
83 paginas.push(paginaActual + 1); 83 paginas.push(paginaActual + 1);
84 if(paginaActual + 2 < $scope.lastPage) { 84 if(paginaActual + 2 < $scope.lastPage) {
85 paginas.push(paginaActual + 2); 85 paginas.push(paginaActual + 2);
86 } 86 }
87 } 87 }
88 88
89 if(paginaActual !== 1) { 89 if(paginaActual !== 1) {
90 paginas.unshift(1); 90 paginas.unshift(1);
91 } 91 }
92 92
93 if(paginaActual !== $scope.lastPage) { 93 if(paginaActual !== $scope.lastPage) {
94 paginas.push($scope.lastPage); 94 paginas.push($scope.lastPage);
95 } 95 }
96 96
97 return paginas; 97 return paginas;
98 } 98 }
99 99 // TODO: descomentar cuando se use
100 function primera() { 100 // function primera() {
101 $scope.selectedClientes = 0; 101 // $scope.selectedClientes = 0;
102 } 102 // }
103 103
104 function anterior() { 104 // function anterior() {
105 if ($scope.selectedClientes === 0 && $scope.currentPage > 1) { 105 // if ($scope.selectedClientes === 0 && $scope.currentPage > 1) {
106 retrocederPagina(); 106 // retrocederPagina();
107 } else { 107 // } else {
108 $scope.selectedClientes--; 108 // $scope.selectedClientes--;
109 } 109 // }
110 } 110 // }
111 111
112 function siguiente() { 112 // function siguiente() {
113 if ($scope.selectedClientes < $scope.currentPageVendedoresCobradores.length - 1 ) { 113 // if ($scope.selectedClientes < $scope.currentPageVendedoresCobradores.length - 1 )
114 $scope.selectedClientes++; 114 //{
115 } else { 115 // $scope.selectedClientes++;
116 avanzarPagina(); 116 // } else {
117 } 117 // avanzarPagina();
118 } 118 // }
119 119 // }
120 function retrocederPagina() { 120
121 if ($scope.currentPage > 1) { 121 // function retrocederPagina() {
122 $scope.selectPage($scope.currentPage - 1); 122 // if ($scope.currentPage > 1) {
123 $scope.selectedClientes = $scope.numPerPage - 1; 123 // $scope.selectPage($scope.currentPage - 1);
124 } 124 // $scope.selectedClientes = $scope.numPerPage - 1;
125 } 125 // }
126 126 // }
127 function avanzarPagina() { 127
128 if ($scope.currentPage < $scope.lastPage) { 128 // function avanzarPagina() {
129 $scope.selectPage($scope.currentPage + 1); 129 // if ($scope.currentPage < $scope.lastPage) {
130 $scope.selectedClientes = 0; 130 // $scope.selectPage($scope.currentPage + 1);
131 } 131 // $scope.selectedClientes = 0;
132 } 132 // }
133 // }
133 } 134 }
134 ]); 135 ]);
135 136
1 angular.module('focaAbmVendedorCobrador') 1 angular.module('focaAbmVendedorCobrador')
2 .factory('focaAbmVendedorCobradorService', ['$http', 'API_ENDPOINT', function($http, API_ENDPOINT) { 2 .factory('focaAbmVendedorCobradorService', ['$http', 'API_ENDPOINT',
3 function($http, API_ENDPOINT) {
3 return { 4 return {
4 getVendedoresCobradores: function(nombre) { 5 getVendedoresCobradores: function(nombre) {
5 return $http.post(API_ENDPOINT.URL + '/vendedor-cobrador/list', {nombre: nombre}); 6 return $http.post(API_ENDPOINT.URL + '/vendedor-cobrador/list', {nombre: nombre});
6 }, 7 },
7 getVendedorCobradorById: function(id) { 8 getVendedorCobradorById: function(id) {
8 return $http.get(API_ENDPOINT.URL + '/vendedor-cobrador/' + id); 9 return $http.get(API_ENDPOINT.URL + '/vendedor-cobrador/' + id);
9 }, 10 },
10 guardarVendedorCobrador: function(vendedorCobrador) { 11 guardarVendedorCobrador: function(vendedorCobrador) {
11 return $http.post(API_ENDPOINT.URL + '/vendedor-cobrador', 12 return $http.post(API_ENDPOINT.URL + '/vendedor-cobrador',
12 {vendedorCobrador: vendedorCobrador}); 13 {vendedorCobrador: vendedorCobrador});
13 }, 14 },
14 eliminarVendedorCobrador: function(id) { 15 eliminarVendedorCobrador: function(id) {
15 return $http.delete(API_ENDPOINT.URL + '/vendedor-cobrador/' + id); 16 return $http.delete(API_ENDPOINT.URL + '/vendedor-cobrador/' + id);
16 }, 17 },
17 getCodigoSiguiente: function() { 18 getCodigoSiguiente: function() {
18 return $http.get(API_ENDPOINT.URL + '/vendedor-cobrador/obtener/siguiente-codigo'); 19 return $http.get(API_ENDPOINT.URL + '/vendedor-cobrador/obtener/siguiente-codigo');
19 } 20 }
20 }; 21 };
21 }]); 22 }]);
22 23
File was created 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/controllerItem.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>
23