MX-Banxico 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +18 -0
  3. data/.rspec +3 -0
  4. data/.travis.yml +12 -0
  5. data/.yardopts +9 -0
  6. data/CHANGELOG.md +5 -0
  7. data/Gemfile +36 -0
  8. data/Guardfile +26 -0
  9. data/LICENSE.txt +22 -0
  10. data/MX-Banxico.gemspec +29 -0
  11. data/README.md +140 -0
  12. data/REFERENCIAS.md +6 -0
  13. data/Rakefile +26 -0
  14. data/lib/MX/Banxico.rb +12 -0
  15. data/lib/MX/Banxico/historico.rb +4 -0
  16. data/lib/MX/Banxico/historico/tipo_de_cambio.rb +296 -0
  17. data/lib/MX/Banxico/series.rb +346 -0
  18. data/lib/MX/Banxico/tipo_de_cambio.rb +159 -0
  19. data/lib/MX/Banxico/version.rb +14 -0
  20. data/lib/MX/Banxico/web_services.rb +4 -0
  21. data/lib/MX/Banxico/web_services/tipo_de_cambio.rb +83 -0
  22. data/lib/MX/Banxico/web_services/web_service.rb +99 -0
  23. data/spec/MX/Banxico/historico/tipo_de_cambio_spec.rb +525 -0
  24. data/spec/MX/Banxico/series_spec.rb +475 -0
  25. data/spec/MX/Banxico/tipo_de_cambio_spec.rb +688 -0
  26. data/spec/MX/Banxico/web_services/tipo_de_cambio_spec.rb +152 -0
  27. data/spec/MX/Banxico/web_services/web_service_spec.rb +108 -0
  28. data/spec/fixtures/MX/Banxico/historico/respuestas_correctas/tipo_de_cambio.xml +2228 -0
  29. data/spec/fixtures/MX/Banxico/historico/respuestas_incorrectas/mal_formado.xml +1 -0
  30. data/spec/fixtures/MX/Banxico/historico/respuestas_incorrectas/serie_sin_valores.xml +28 -0
  31. data/spec/fixtures/MX/Banxico/historico/respuestas_incorrectas/sin_series.xml +26 -0
  32. data/spec/fixtures/MX/Banxico/historico/tipo_de_cambio/dolar_fix/respuesta_correcta.xml +393 -0
  33. data/spec/fixtures/MX/Banxico/historico/tipo_de_cambio/dolar_fix/serie_sin_valores.xml +28 -0
  34. data/spec/fixtures/MX/Banxico/historico/tipo_de_cambio/dolar_fix/sin_serie.xml +26 -0
  35. data/spec/fixtures/MX/Banxico/web_services/respuestas_correctas/reservas_internacionales_banxico.xml +41 -0
  36. data/spec/fixtures/MX/Banxico/web_services/respuestas_correctas/tasas_de_interes_banxico.xml +50 -0
  37. data/spec/fixtures/MX/Banxico/web_services/respuestas_correctas/tipos_de_cambio_banxico.xml +56 -0
  38. data/spec/fixtures/MX/Banxico/web_services/respuestas_correctas/udis_banxico.xml +41 -0
  39. data/spec/fixtures/MX/Banxico/web_services/tipo_de_cambio/dolar_fix/error_fecha_tipo_de_cambio.xml +41 -0
  40. data/spec/fixtures/MX/Banxico/web_services/tipo_de_cambio/dolar_fix/error_nodo_obs.xml +40 -0
  41. data/spec/fixtures/MX/Banxico/web_services/tipo_de_cambio/dolar_fix/error_valor_tipo_de_cambio.xml +41 -0
  42. data/spec/fixtures/MX/Banxico/web_services/tipo_de_cambio/dolar_fix/respuesta_correcta.xml +41 -0
  43. data/spec/spec_helper.rb +31 -0
  44. metadata +152 -0
@@ -0,0 +1,688 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
+
3
+ describe MX::Banxico::TipoDeCambio, :tdc do
4
+ let!(:tipo_de_cambio){ described_class.new(:dolar_fix, Date.new(2016,1,1), 18.0001) }
5
+
6
+
7
+ describe '.new' do
8
+
9
+ describe 'parámetro moneda' do
10
+
11
+ context 'cuando el parámetro es del tipo correcto' do
12
+
13
+ context 'cuando es un símbolo' do
14
+ let!(:tdc) { described_class.new(:dolar_fix, Date.new(2016,1,1), 18.0001) }
15
+
16
+ it 'es una instancia de la clase' do
17
+ expect(tdc).to be_a described_class
18
+ end
19
+
20
+
21
+ describe '.moneda' do
22
+
23
+ it 'es un símbolo' do
24
+ expect(tdc.moneda).to be_a Symbol
25
+ end
26
+
27
+ end
28
+
29
+ end
30
+
31
+
32
+ context 'cuando es una cadena' do
33
+ let!(:tdc) { described_class.new("dolar_fix", Date.new(2016,1,1), 18.0001) }
34
+
35
+ it 'es una instancia de la clase' do
36
+ expect(tdc).to be_a described_class
37
+ end
38
+
39
+
40
+ describe '.moneda' do
41
+
42
+ it 'es un símbolo' do
43
+ expect(tdc.moneda).to be_a Symbol
44
+ end
45
+
46
+ end
47
+
48
+ end
49
+
50
+ end
51
+
52
+
53
+ context 'cuando el parámetro NO es del tipo correcto' do
54
+
55
+ it 'lanza una excepción' do
56
+ expect{
57
+ described_class.new(nil, Date.new(2016,1,1), 18.0001)
58
+ }.to raise_error(ArgumentError, "moneda debe ser una cadena (String) o un objeto tipo símbolo (Symbol).")
59
+ end
60
+
61
+ end
62
+
63
+ end
64
+
65
+
66
+ describe 'parámetro fecha' do
67
+
68
+ context 'cuando el parámetro fecha es correcto' do
69
+
70
+ context 'cuando la fecha es una cadena en formato IS0-8601' do
71
+ let!(:tdc){ described_class.new(:dolar_fix, "2016-01-01", 18.0001) }
72
+
73
+ it 'es una instancia de la clase' do
74
+ expect(tdc).to be_a described_class
75
+ end
76
+
77
+
78
+ describe '.fecha' do
79
+
80
+ it 'es de tipo fecha (Date)' do
81
+ expect(tdc.fecha).to be_a Date
82
+ end
83
+
84
+ end
85
+
86
+ end
87
+
88
+
89
+ context 'cuando la fecha es un objeto fecha (Date)' do
90
+ let!(:tdc){ described_class.new(:dolar_fix, Date.new(2016,1,1), 18.0001) }
91
+
92
+ it 'es una instancia de la clase' do
93
+ expect(tdc).to be_a described_class
94
+ end
95
+
96
+
97
+ describe '.fecha' do
98
+
99
+ it 'es de tipo fecha (Date)' do
100
+ expect(tdc.fecha).to be_a Date
101
+ end
102
+
103
+ end
104
+
105
+ end
106
+
107
+ end
108
+
109
+
110
+ context 'cuando el parámetro fecha NO es correcto' do
111
+
112
+ context 'cuando la fecha es una cadena SIN formato IS0-8601' do
113
+
114
+ it 'lanza una excepción' do
115
+ expect{
116
+ described_class.new(:dolar_fix, "abc", 18.0001)
117
+ }.to raise_error(ArgumentError, "fecha debe ser una cadena (String) en formato ISO-8601 o un objeto de tipo fecha (Date).")
118
+ end
119
+
120
+ end
121
+
122
+ context 'cuando la fecha NO es un objeto fecha (Date)' do
123
+
124
+ it 'lanza una excepción' do
125
+ expect{
126
+ described_class.new(:dolar_fix, nil, 18.0001)
127
+ }.to raise_error(ArgumentError, "fecha debe ser una cadena (String) en formato ISO-8601 o un objeto de tipo fecha (Date).")
128
+ end
129
+
130
+ end
131
+
132
+ end
133
+
134
+ end
135
+
136
+
137
+ describe 'parámetro valor_en_mxn' do
138
+
139
+ context 'cuando el parámetro valor_en_mxn es correcto' do
140
+
141
+ context 'cuando el valor en pesos es una cadena de un número decimal' do
142
+ let!(:tdc){ described_class.new(:dolar_fix, Date.new(2016,1,1), "18.0001") }
143
+
144
+ it 'es una instancia de la clase' do
145
+ expect(tdc).to be_a described_class
146
+ end
147
+
148
+
149
+ describe '.valor_en_mxn' do
150
+
151
+ it 'es de tipo fecha (Date)' do
152
+ expect(tdc.valor_en_mxn).to be_a Float
153
+ end
154
+
155
+ end
156
+
157
+ end
158
+
159
+ context 'cuando el valor en pesos es un número flotante (Float)' do
160
+ let!(:tdc){ described_class.new(:dolar_fix, Date.new(2016,1,1), 18.0001) }
161
+
162
+ it 'es una instancia de la clase' do
163
+ expect(tdc).to be_a described_class
164
+ end
165
+
166
+
167
+ describe '.valor_en_mxn' do
168
+
169
+ it 'es de tipo fecha (Date)' do
170
+ expect(tdc.valor_en_mxn).to be_a Float
171
+ end
172
+
173
+ end
174
+
175
+ end
176
+
177
+ end
178
+
179
+
180
+ context 'cuando el parámetro valor_en_mxn NO es correcto' do
181
+
182
+ context 'cuando el valor en pesos NO es una cadena de un número decimal' do
183
+
184
+ it 'lanza una excepción' do
185
+ expect{
186
+ described_class.new(:dolar_fix, Date.new(2016,1,1), "moquito")
187
+ }.to raise_error(ArgumentError, "valor_en_mxn debe ser una cadena con un número decimal o un objeto de tipo (Float).")
188
+ end
189
+
190
+ end
191
+
192
+ context 'cuando el valor en pesos no es un número flotante (Float)' do
193
+
194
+ it 'lanza una excepción' do
195
+ expect{
196
+ described_class.new(:dolar_fix, Date.new(2016,1,1), nil)
197
+ }.to raise_error(ArgumentError, "valor_en_mxn debe ser una cadena con un número decimal o un objeto de tipo (Float).")
198
+ end
199
+
200
+ end
201
+
202
+ end
203
+
204
+ end
205
+
206
+ end
207
+
208
+
209
+ describe '#moneda' do
210
+
211
+ it 'es de tipo Symbol' do
212
+ expect(tipo_de_cambio.moneda).to be_a Symbol
213
+ end
214
+
215
+ it 'es :dolar_fix' do
216
+ expect(tipo_de_cambio.moneda).to eq :dolar_fix
217
+ end
218
+
219
+ end
220
+
221
+
222
+ describe '#fecha' do
223
+
224
+ it 'es de tipo Date' do
225
+ expect(tipo_de_cambio.fecha).to be_a Date
226
+ end
227
+
228
+ it 'es la fecha 2016-01-01' do
229
+ expect(tipo_de_cambio.fecha).to eq Date.new(2016,1,1)
230
+ end
231
+
232
+ end
233
+
234
+
235
+ describe '#valor_en_mxn' do
236
+
237
+ it 'es de tipo Date' do
238
+ expect(tipo_de_cambio.valor_en_mxn).to be_a Float
239
+ end
240
+
241
+ it 'es 18.0001' do
242
+ expect(tipo_de_cambio.valor_en_mxn).to eq 18.0001
243
+ end
244
+
245
+ end
246
+
247
+
248
+ describe '#to_s' do
249
+
250
+ it 'es la cadena "dolar_fix: $18.0001 MXN al día 2016-01-01"' do
251
+ expect(tipo_de_cambio.to_s).to eq "dolar_fix: $18.0001 MXN al día 2016-01-01"
252
+ end
253
+
254
+ end
255
+
256
+
257
+ describe '#==' do
258
+
259
+ context 'cuando la cadena de la moneda de x es igual a la cadena de la moneda de y' do
260
+
261
+ context 'cuando la fecha de x es igual a la de y' do
262
+
263
+ context 'cuando el valor en pesos de x es igual al valor en pesos de y' do
264
+ let!(:x){ described_class.new(:dolar_fix, Date.new(2016,1,1), 18.0001) }
265
+ let!(:y){ described_class.new(:dolar_fix, Date.new(2016,1,1), 18.0001) }
266
+
267
+ it 'x es igual a y' do
268
+ expect(x == y).to be_truthy
269
+ end
270
+ end
271
+
272
+
273
+ context 'cuando el valor en pesos de x NO es igual al valor en pesos de y' do
274
+ let!(:x){ described_class.new(:dolar_fix, Date.new(2016,1,1), 18.0001) }
275
+ let!(:y){ described_class.new(:dolar_fix, Date.new(2016,1,1), 19.0001) }
276
+
277
+ it 'x NO es igual a y' do
278
+ expect(x == y).to be_falsey
279
+ end
280
+ end
281
+
282
+ end
283
+
284
+
285
+ context 'cuando la fecha de x NO es igual a la de y' do
286
+
287
+ context 'cuando el valor en pesos de x es igual al valor en pesos de y' do
288
+ let!(:x){ described_class.new(:dolar_fix, Date.new(2015,1,1), 18.0001) }
289
+ let!(:y){ described_class.new(:dolar_fix, Date.new(2016,1,1), 18.0001) }
290
+
291
+ it 'x NO es igual a y' do
292
+ expect(x == y).to be_falsey
293
+ end
294
+ end
295
+
296
+
297
+ context 'cuando el valor en pesos de x NO es igual al valor en pesos de y' do
298
+ let!(:x){ described_class.new(:dolar_fix, Date.new(2015,1,1), 18.0001) }
299
+ let!(:y){ described_class.new(:dolar_fix, Date.new(2016,1,1), 19.0001) }
300
+
301
+ it 'x NO es igual a y' do
302
+ expect(x == y).to be_falsey
303
+ end
304
+ end
305
+
306
+ end
307
+
308
+ end
309
+
310
+
311
+ context 'cuando la cadena de la moneda de x NO es igual a la cadena de la moneda de y' do
312
+
313
+ context 'cuando la fecha de x es igual a la de y' do
314
+
315
+ context 'cuando el valor en pesos de x es igual al valor en pesos de y' do
316
+ let!(:x){ described_class.new(:dolar_fix, Date.new(2016,1,1), 18.0001) }
317
+ let!(:y){ described_class.new(:dolar_liquidacion, Date.new(2016,1,1), 18.0001) }
318
+
319
+ it 'x NO es igual a y' do
320
+ expect(x == y).to be_falsey
321
+ end
322
+ end
323
+
324
+
325
+ context 'cuando el valor en pesos de x NO es igual al valor en pesos de y' do
326
+ let!(:x){ described_class.new(:dolar_fix, Date.new(2016,1,1), 18.0001) }
327
+ let!(:y){ described_class.new(:dolar_liquidacion, Date.new(2016,1,1), 19.0001) }
328
+
329
+ it 'x NO es igual a y' do
330
+ expect(x == y).to be_falsey
331
+ end
332
+ end
333
+
334
+ end
335
+
336
+
337
+ context 'cuando la fecha de x NO es igual a la de y' do
338
+
339
+ context 'cuando el valor en pesos de x es igual al valor en pesos de y' do
340
+ let!(:x){ described_class.new(:dolar_fix, Date.new(2015,1,1), 18.0001) }
341
+ let!(:y){ described_class.new(:dolar_liquidacion, Date.new(2016,1,1), 18.0001) }
342
+
343
+ it 'x NO es igual a y' do
344
+ expect(x == y).to be_falsey
345
+ end
346
+ end
347
+
348
+
349
+ context 'cuando el valor en pesos de x NO es igual al valor en pesos de y' do
350
+ let!(:x){ described_class.new(:dolar_fix, Date.new(2015,1,1), 18.0001) }
351
+ let!(:y){ described_class.new(:dolar_liquidacion, Date.new(2016,1,1), 19.0001) }
352
+
353
+ it 'x NO es igual a y' do
354
+ expect(x == y).to be_falsey
355
+ end
356
+ end
357
+
358
+ end
359
+
360
+ end
361
+
362
+ end
363
+
364
+
365
+ describe '#<=>' do
366
+
367
+ context 'cuando la cadena de la moneda de x es igual a la cadena de la moneda de y' do
368
+
369
+ context 'cuando la fecha de x es igual a la de y' do
370
+
371
+ context 'cuando el valor en pesos de x es igual al valor en pesos de y' do
372
+ let!(:x){ described_class.new(:dolar_fix, Date.new(2016,1,1), 18.0001) }
373
+ let!(:y){ described_class.new(:dolar_fix, Date.new(2016,1,1), 18.0001) }
374
+
375
+ it 'x == y' do
376
+ expect(x <=> y).to eq 0
377
+ end
378
+ end
379
+
380
+
381
+ context 'cuando el valor en pesos de x es menor que valor en pesos de y' do
382
+ let!(:x){ described_class.new(:dolar_fix, Date.new(2016,1,1), 18.0001) }
383
+ let!(:y){ described_class.new(:dolar_fix, Date.new(2016,1,1), 19.0001) }
384
+
385
+ it 'x < y' do
386
+ expect(x <=> y).to eq -1
387
+ end
388
+ end
389
+
390
+
391
+ context 'cuando el valor en pesos de x es mayor que valor en pesos de y' do
392
+ let!(:x){ described_class.new(:dolar_fix, Date.new(2016,1,1), 19.0001) }
393
+ let!(:y){ described_class.new(:dolar_fix, Date.new(2016,1,1), 18.0001) }
394
+
395
+ it 'x > y' do
396
+ expect(x <=> y).to eq 1
397
+ end
398
+ end
399
+
400
+ end
401
+
402
+
403
+ context 'cuando la fecha de x es menor que la de y' do
404
+
405
+ context 'cuando el valor en pesos de x es igual al valor en pesos de y' do
406
+ let!(:x){ described_class.new(:dolar_fix, Date.new(2015,1,1), 18.0001) }
407
+ let!(:y){ described_class.new(:dolar_fix, Date.new(2016,1,1), 18.0001) }
408
+
409
+ it 'x < y' do
410
+ expect(x <=> y).to eq -1
411
+ end
412
+ end
413
+
414
+
415
+ context 'cuando el valor en pesos de x es menor que valor en pesos de y' do
416
+ let!(:x){ described_class.new(:dolar_fix, Date.new(2015,1,1), 18.0001) }
417
+ let!(:y){ described_class.new(:dolar_fix, Date.new(2016,1,1), 19.0001) }
418
+
419
+ it 'x < y' do
420
+ expect(x <=> y).to eq -1
421
+ end
422
+ end
423
+
424
+
425
+ context 'cuando el valor en pesos de x es mayor que valor en pesos de y' do
426
+ let!(:x){ described_class.new(:dolar_fix, Date.new(2015,1,1), 19.0001) }
427
+ let!(:y){ described_class.new(:dolar_fix, Date.new(2016,1,1), 18.0001) }
428
+
429
+ it 'x < y' do
430
+ expect(x <=> y).to eq -1
431
+ end
432
+ end
433
+
434
+ end
435
+
436
+
437
+ context 'cuando la fecha de x es mayor que la de y' do
438
+
439
+ context 'cuando el valor en pesos de x es igual al valor en pesos de y' do
440
+ let!(:x){ described_class.new(:dolar_fix, Date.new(2016,1,1), 18.0001) }
441
+ let!(:y){ described_class.new(:dolar_fix, Date.new(2015,1,1), 18.0001) }
442
+
443
+ it 'x > y' do
444
+ expect(x <=> y).to eq 1
445
+ end
446
+ end
447
+
448
+
449
+ context 'cuando el valor en pesos de x es menor que valor en pesos de y' do
450
+ let!(:x){ described_class.new(:dolar_fix, Date.new(2016,1,1), 18.0001) }
451
+ let!(:y){ described_class.new(:dolar_fix, Date.new(2015,1,1), 19.0001) }
452
+
453
+ it 'x > y' do
454
+ expect(x <=> y).to eq 1
455
+ end
456
+ end
457
+
458
+
459
+ context 'cuando el valor en pesos de x es mayor que valor en pesos de y' do
460
+ let!(:x){ described_class.new(:dolar_fix, Date.new(2016,1,1), 19.0001) }
461
+ let!(:y){ described_class.new(:dolar_fix, Date.new(2015,1,1), 18.0001) }
462
+
463
+ it 'x > y' do
464
+ expect(x <=> y).to eq 1
465
+ end
466
+ end
467
+
468
+ end
469
+
470
+ end
471
+
472
+
473
+ context 'cuando la cadena de la moneda de x es menor que la cadena de la moneda de y' do
474
+
475
+ context 'cuando la fecha de x es igual a la de y' do
476
+
477
+ context 'cuando el valor en pesos de x es igual al valor en pesos de y' do
478
+ let!(:x){ described_class.new(:dolar_fix, Date.new(2016,1,1), 18.0001) }
479
+ let!(:y){ described_class.new(:dolar_liquidacion, Date.new(2016,1,1), 18.0001) }
480
+
481
+ it 'x < y' do
482
+ expect(x <=> y).to eq -1
483
+ end
484
+ end
485
+
486
+
487
+ context 'cuando el valor en pesos de x es menor que valor en pesos de y' do
488
+ let!(:x){ described_class.new(:dolar_fix, Date.new(2016,1,1), 18.0001) }
489
+ let!(:y){ described_class.new(:dolar_liquidacion, Date.new(2016,1,1), 19.0001) }
490
+
491
+ it 'x < y' do
492
+ expect(x <=> y).to eq -1
493
+ end
494
+ end
495
+
496
+
497
+ context 'cuando el valor en pesos de x es mayor que valor en pesos de y' do
498
+ let!(:x){ described_class.new(:dolar_fix, Date.new(2016,1,1), 19.0001) }
499
+ let!(:y){ described_class.new(:dolar_liquidacion, Date.new(2016,1,1), 18.0001) }
500
+
501
+ it 'x < y' do
502
+ expect(x <=> y).to eq -1
503
+ end
504
+ end
505
+
506
+ end
507
+
508
+
509
+ context 'cuando la fecha de x es menor que la de y' do
510
+
511
+ context 'cuando el valor en pesos de x es igual al valor en pesos de y' do
512
+ let!(:x){ described_class.new(:dolar_fix, Date.new(2015,1,1), 18.0001) }
513
+ let!(:y){ described_class.new(:dolar_liquidacion, Date.new(2016,1,1), 18.0001) }
514
+
515
+ it 'x < y' do
516
+ expect(x <=> y).to eq -1
517
+ end
518
+ end
519
+
520
+
521
+ context 'cuando el valor en pesos de x es menor que valor en pesos de y' do
522
+ let!(:x){ described_class.new(:dolar_fix, Date.new(2015,1,1), 18.0001) }
523
+ let!(:y){ described_class.new(:dolar_liquidacion, Date.new(2016,1,1), 19.0001) }
524
+
525
+ it 'x < y' do
526
+ expect(x <=> y).to eq -1
527
+ end
528
+ end
529
+
530
+
531
+ context 'cuando el valor en pesos de x es mayor que valor en pesos de y' do
532
+ let!(:x){ described_class.new(:dolar_fix, Date.new(2015,1,1), 19.0001) }
533
+ let!(:y){ described_class.new(:dolar_liquidacion, Date.new(2016,1,1), 18.0001) }
534
+
535
+ it 'x < y' do
536
+ expect(x <=> y).to eq -1
537
+ end
538
+ end
539
+
540
+ end
541
+
542
+
543
+ context 'cuando la fecha de x es mayor que la de y' do
544
+
545
+ context 'cuando el valor en pesos de x es igual al valor en pesos de y' do
546
+ let!(:x){ described_class.new(:dolar_fix, Date.new(2016,1,1), 18.0001) }
547
+ let!(:y){ described_class.new(:dolar_liquidacion, Date.new(2015,1,1), 18.0001) }
548
+
549
+ it 'x < y' do
550
+ expect(x <=> y).to eq -1
551
+ end
552
+ end
553
+
554
+
555
+ context 'cuando el valor en pesos de x es menor que valor en pesos de y' do
556
+ let!(:x){ described_class.new(:dolar_fix, Date.new(2016,1,1), 18.0001) }
557
+ let!(:y){ described_class.new(:dolar_liquidacion, Date.new(2015,1,1), 19.0001) }
558
+
559
+ it 'x < y' do
560
+ expect(x <=> y).to eq -1
561
+ end
562
+ end
563
+
564
+
565
+ context 'cuando el valor en pesos de x es mayor que valor en pesos de y' do
566
+ let!(:x){ described_class.new(:dolar_fix, Date.new(2016,1,1), 19.0001) }
567
+ let!(:y){ described_class.new(:dolar_liquidacion, Date.new(2015,1,1), 18.0001) }
568
+
569
+ it 'x < y' do
570
+ expect(x <=> y).to eq -1
571
+ end
572
+ end
573
+
574
+ end
575
+
576
+ end
577
+
578
+
579
+ context 'cuando la cadena de la moneda de x es mayor que la cadena de la moneda de y' do
580
+
581
+ context 'cuando la fecha de x es igual a la de y' do
582
+
583
+ context 'cuando el valor en pesos de x es igual al valor en pesos de y' do
584
+ let!(:x){ described_class.new(:dolar_liquidacion, Date.new(2016,1,1), 18.0001) }
585
+ let!(:y){ described_class.new(:dolar_canadiense, Date.new(2016,1,1), 18.0001) }
586
+
587
+ it 'x > y' do
588
+ expect(x <=> y).to eq 1
589
+ end
590
+ end
591
+
592
+
593
+ context 'cuando el valor en pesos de x es menor que valor en pesos de y' do
594
+ let!(:x){ described_class.new(:dolar_liquidacion, Date.new(2016,1,1), 18.0001) }
595
+ let!(:y){ described_class.new(:dolar_canadiense, Date.new(2016,1,1), 19.0001) }
596
+
597
+ it 'x > y' do
598
+ expect(x <=> y).to eq 1
599
+ end
600
+ end
601
+
602
+
603
+ context 'cuando el valor en pesos de x es mayor que valor en pesos de y' do
604
+ let!(:x){ described_class.new(:dolar_liquidacion, Date.new(2016,1,1), 19.0001) }
605
+ let!(:y){ described_class.new(:dolar_canadiense, Date.new(2016,1,1), 18.0001) }
606
+
607
+ it 'x > y' do
608
+ expect(x <=> y).to eq 1
609
+ end
610
+ end
611
+
612
+ end
613
+
614
+
615
+ context 'cuando la fecha de x es menor que la de y' do
616
+
617
+ context 'cuando el valor en pesos de x es igual al valor en pesos de y' do
618
+ let!(:x){ described_class.new(:dolar_liquidacion, Date.new(2015,1,1), 18.0001) }
619
+ let!(:y){ described_class.new(:dolar_canadiense, Date.new(2016,1,1), 18.0001) }
620
+
621
+ it 'x > y' do
622
+ expect(x <=> y).to eq 1
623
+ end
624
+ end
625
+
626
+
627
+ context 'cuando el valor en pesos de x es menor que valor en pesos de y' do
628
+ let!(:x){ described_class.new(:dolar_liquidacion, Date.new(2015,1,1), 18.0001) }
629
+ let!(:y){ described_class.new(:dolar_canadiense, Date.new(2016,1,1), 19.0001) }
630
+
631
+ it 'x > y' do
632
+ expect(x <=> y).to eq 1
633
+ end
634
+ end
635
+
636
+
637
+ context 'cuando el valor en pesos de x es mayor que valor en pesos de y' do
638
+ let!(:x){ described_class.new(:dolar_liquidacion, Date.new(2015,1,1), 19.0001) }
639
+ let!(:y){ described_class.new(:dolar_canadiense, Date.new(2016,1,1), 18.0001) }
640
+
641
+ it 'x > y' do
642
+ expect(x <=> y).to eq 1
643
+ end
644
+ end
645
+
646
+ end
647
+
648
+
649
+ context 'cuando la fecha de x es mayor que la de y' do
650
+
651
+ context 'cuando el valor en pesos de x es igual al valor en pesos de y' do
652
+ let!(:x){ described_class.new(:dolar_liquidacion, Date.new(2016,1,1), 18.0001) }
653
+ let!(:y){ described_class.new(:dolar_canadiense, Date.new(2015,1,1), 18.0001) }
654
+
655
+ it 'x > y' do
656
+ expect(x <=> y).to eq 1
657
+ end
658
+ end
659
+
660
+
661
+ context 'cuando el valor en pesos de x es menor que valor en pesos de y' do
662
+ let!(:x){ described_class.new(:dolar_liquidacion, Date.new(2016,1,1), 18.0001) }
663
+ let!(:y){ described_class.new(:dolar_canadiense, Date.new(2015,1,1), 19.0001) }
664
+
665
+ it 'x > y' do
666
+ expect(x <=> y).to eq 1
667
+ end
668
+ end
669
+
670
+
671
+ context 'cuando el valor en pesos de x es mayor que valor en pesos de y' do
672
+ let!(:x){ described_class.new(:dolar_liquidacion, Date.new(2016,1,1), 19.0001) }
673
+ let!(:y){ described_class.new(:dolar_canadiense, Date.new(2015,1,1), 18.0001) }
674
+
675
+ it 'x > y' do
676
+ expect(x <=> y).to eq 1
677
+ end
678
+ end
679
+
680
+ end
681
+
682
+ end
683
+
684
+ end
685
+
686
+
687
+
688
+ end