-
Notifications
You must be signed in to change notification settings - Fork 29
/
enzyme.test.js
47 lines (37 loc) · 1.04 KB
/
enzyme.test.js
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
// highlight{6-18,20,23-27}
import React from 'react';
import { mount } from 'enzyme';
import { PersistentForm } from './component';
class LocalStorageMock {
constructor(store = {}) {
this.store = { ...store };
}
getItem(key) {
return this.store[key] || null;
}
setItem(key, value) {
this.store[key] = value.toString();
}
}
let wrapper;
beforeEach(() => {
// Create fresh mocks for each test
global.localStorage = new LocalStorageMock({ name: 'Trent' });
// Flush instances between tests to prevent leaking state
wrapper = mount(<PersistentForm />);
});
it('renders cached name', async () => {
expect(wrapper.text()).toContain(`Welcome, Trent`);
});
describe('on update', () => {
beforeEach(() => {
wrapper.find('input').instance().value = 'Trevor';
wrapper.find('button').simulate('submit');
});
it('renders updated name', async () => {
expect(wrapper.text()).toContain(`Welcome, Trevor`);
});
it('caches updated name', async () => {
expect(localStorage.getItem('name')).toBe('Trevor');
});
});