This repository was archived by the owner on Apr 1, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathexample.test.js
70 lines (55 loc) · 1.6 KB
/
example.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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
import angular from 'angular';
import 'angular-mocks';
import { mount } from './src/main';
angular.module('shoppingList', []).component('shoppingList', {
template: `
<input type="text" ng-model="$ctrl.newItem" />
<button ng-click="$ctrl.onAddItem($ctrl.newItem)">
Add item
</button>
<ul ng-repeat="item in $ctrl.items">
<li>{{ item }}</li>
</ul>
`,
bindings: {
items: '<',
onAddItem: '<',
},
});
describe('Shopping list', () => {
let component;
beforeEach(() => {
angular.mock.module('shoppingList');
component = mount('shopping-list');
});
it('has no list when no items are passed', () => {
component.setProps({ items: [] });
expect(component.find('ul').exists()).toBe(false);
});
it('has list when items are passed', () => {
component.setProps({ items: ['Nutella'] });
expect(component.find('ul').exists()).toBe(true);
});
it('has list items when items are passed', () => {
component.setProps({ items: ['Nutella', 'Banana', 'Strawberries'] });
expect(component.find('li').map(li => li.text())).toEqual([
'Nutella',
'Banana',
'Strawberries',
]);
});
it('allows adding items', () => {
const onAddItem = jest.fn();
component.setProps({ onAddItem });
expect(onAddItem).not.toBeCalled();
changeInput('Pretzels');
clickAddButton();
expect(onAddItem).toBeCalledWith('Pretzels');
});
function changeInput(value) {
component.find('input').simulate('change', { target: { value } });
}
function clickAddButton() {
component.find('button').simulate('click');
}
});