-
Notifications
You must be signed in to change notification settings - Fork 132
/
Copy pathentity-factory.test.ts
64 lines (48 loc) · 1.78 KB
/
entity-factory.test.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import { EntityFactory } from './entity-factory'
describe('make', () => {
class User {
constructor(public name: string) {}
}
class Pet {
constructor(public name: string, public user: User) {}
}
test('Should make a new entity', async () => {
const mockUserFactory = jest.fn()
const userFactory = new EntityFactory('User', User, mockUserFactory)
mockUserFactory.mockReturnValue(new User('Steve'))
const newUser = await userFactory.make()
expect(newUser.name).toBe('Steve')
})
test('Should override the enitys props', async () => {
const mockUserFactory = jest.fn()
const userFactory = new EntityFactory('User', User, mockUserFactory)
mockUserFactory.mockReturnValue(new User('Steve'))
const newUser = await userFactory.make({ name: 'Tony' })
expect(newUser.name).toBe('Tony')
})
test('Should call the nested entity factories', async () => {
const mockUserFactory = jest.fn()
const userFactory = new EntityFactory('User', User, mockUserFactory)
const mockPetFactory = jest.fn()
const petFactory = new EntityFactory('Pet', Pet, mockPetFactory)
mockUserFactory.mockReturnValue({
name: 'Pepper',
})
mockPetFactory.mockReturnValue({
name: 'Bunny',
user: userFactory,
})
const newPet = await petFactory.make()
expect(newPet.name).toBe('Bunny')
expect(newPet.user.name).toBe('Pepper')
})
test('Should call the map function', async () => {
const mockUserFactory = jest.fn()
const userFactory = new EntityFactory('User', User, mockUserFactory)
mockUserFactory.mockReturnValue(new User('Steve'))
const mockMap = jest.fn()
const newUsers = await userFactory.map(mockMap).makeMany(2)
expect(newUsers.length).toBe(2)
expect(mockMap).toBeCalledTimes(2)
})
})