|
1 | | -const Bus = require('../../lib/vehicles/bus') |
| 1 | +const moment = require('moment') |
2 | 2 | const { Subject } = require('rxjs') |
| 3 | + |
| 4 | +const Bus = require('../../lib/vehicles/bus') |
| 5 | + |
3 | 6 | const range = (length) => Array.from({ length }).map((_, i) => i) |
4 | | -const moment = require('moment') |
| 7 | + |
5 | 8 | describe('A bus', () => { |
6 | 9 | const arjeplog = { lon: 17.886855, lat: 66.041054 } |
7 | 10 | const ljusdal = { lon: 14.44681991219, lat: 61.59465992477 } |
8 | | - let bus |
9 | 11 |
|
10 | | - it('should be able to pickup multiple bookings and queue the all except the first', () => { |
| 12 | + it('should be able to pickup multiple bookings and queue the all except the first', (done) => { |
11 | 13 | const stops = new Subject() |
12 | | - bus = new Bus({ id: 1, position: arjeplog, stops }) |
| 14 | + const bus = new Bus({ id: 1, position: arjeplog, stops }) |
13 | 15 |
|
14 | 16 | range(10).map((i) => |
15 | 17 | stops.next({ |
16 | | - pickup: ljusdal, |
17 | | - destination: arjeplog, |
| 18 | + position: i % 2 === 0 ? ljusdal : arjeplog, |
| 19 | + stopName: i % 2 === 0 ? 'ljusdal' : 'arjeplog', |
18 | 20 | departureTime: moment('2021-04-20 00:00:00') |
19 | 21 | .add(i, 'minutes') |
20 | 22 | .format('HH:mm:ss'), |
21 | 23 | }) |
22 | 24 | ) |
23 | 25 |
|
24 | 26 | const queue = bus.queue |
25 | | - console.log(bus.queue.map((e) => e.pickup.departureTime)) |
26 | 27 | expect(queue.length).toBe(8) |
27 | | - expect(queue[0].pickup).toEqual(ljusdal) |
28 | | - expect(queue[0].departureTime).toBe('00:00:00') |
29 | | - expect(queue[0].arrivalTime).toBe('00:00:00') |
30 | | - expect(queue[0].status).toBe('queued') |
| 28 | + expect(queue[0].pickup.position).toEqual(arjeplog) |
| 29 | + expect(queue[0].pickup.stopName).toBe('arjeplog') |
| 30 | + expect(queue[0].pickup.departureTime).toBe('00:01:00') |
| 31 | + expect(queue[0].destination.position).toEqual(ljusdal) |
| 32 | + expect(queue[0].destination.stopName).toBe('ljusdal') |
| 33 | + expect(queue[0].destination.departureTime).toBe('00:02:00') |
| 34 | + expect(queue[0].status).toBe('Queued') |
| 35 | + bus.unsubscribe() |
| 36 | + done() |
31 | 37 | }) |
32 | 38 | }) |
0 commit comments