node-mongo-demo
node.js and mongodb demo
git clone https://9o.is/git/node-mongo-demo.git
lucky7-bet-model.unit.test.js
(2890B)
1 import Lucky7Bet from '../src/models/lucky7-bet.js';
2 import { jest } from '@jest/globals';
3
4 describe('Lucky7Bet Model', () => {
5 it('state pending', () => {
6 setTime('2024-01-01T00:00:00Z');
7
8 const bet = new Lucky7Bet({
9 rollAt: new Date('2024-01-01T00:00:01Z'),
10 });
11
12 expect(bet.state).toBe('pending');
13 });
14
15 it('state finished', () => {
16 setTime('2024-01-01T00:00:01Z');
17
18 const bet = new Lucky7Bet({
19 rollAt: new Date('2024-01-01T00:00:01Z'),
20 });
21
22 expect(bet.state).toBe('finished');
23 });
24
25 it('won lucky', () => {
26 const bet = new Lucky7Bet({
27 roll: [3,4],
28 lucky: true,
29 });
30
31 expect(bet.win).toBe(true);
32 });
33
34 it('won unlucky', () => {
35 const bet = new Lucky7Bet({
36 roll: [1,1],
37 lucky: false,
38 });
39
40 expect(bet.win).toBe(true);
41 });
42
43 it('lost lucky', () => {
44 const bet = new Lucky7Bet({
45 roll: [1,1],
46 lucky: true,
47 });
48
49 expect(bet.win).toBe(false);
50 });
51
52 it('lost unlucky', () => {
53 const bet = new Lucky7Bet({
54 roll: [3,4],
55 lucky: false,
56 });
57
58 expect(bet.win).toBe(false);
59 });
60
61 it('played() false', () => {
62 const bet = new Lucky7Bet();
63 expect(bet.played()).toBe(false);
64 });
65
66 it('played() true', () => {
67 const bet = new Lucky7Bet();
68 bet.play();
69 expect(bet.played()).toBe(true);
70 });
71
72 it('toRedactedObject() pending', () => {
73 setTime('2024-01-01T00:00:00Z');
74
75 const bet = new Lucky7Bet(createProps({
76 rollAt: new Date('2024-01-01T01:00:00Z'),
77 }));
78 const obj = bet.toRedactedObject();
79
80 expect(Object.keys(obj).length).toBe(6);
81 expect(obj.id).toBeDefined();
82 expect(obj.rollAt).toBeDefined();
83 expect(obj.lucky).toBeDefined();
84 expect(obj.state).toBeDefined();
85 expect(obj.roll).toBeUndefined();
86 expect(obj.win).toBeUndefined();
87 });
88
89 it('toRedactedObject() finished', () => {
90 setTime('2024-01-01T00:00:00Z');
91
92 const bet = new Lucky7Bet(createProps({
93 rollAt: new Date('2024-01-01T00:00:00Z'),
94 }));
95 const obj = bet.toRedactedObject();
96
97 expect(Object.keys(obj)).toHaveLength(6);
98 expect(obj.id).toBeDefined();
99 expect(obj.rollAt).toBeDefined();
100 expect(obj.lucky).toBeDefined();
101 expect(obj.state).toBeDefined();
102 expect(obj.roll).toBeDefined();
103 expect(obj.win).toBeDefined();
104 });
105 });
106
107 function createProps(props) {
108 return {
109 rollAt: new Date('2024-01-01T00:00:00Z'),
110 lucky: true,
111 roll: [3,4],
112 ...props,
113 };
114 }
115
116 function setTime(dt) {
117 jest.useFakeTimers().setSystemTime(new Date(dt));
118 }