-
Notifications
You must be signed in to change notification settings - Fork 38
/
EventList.spec.tsx
125 lines (108 loc) · 3.89 KB
/
EventList.spec.tsx
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
import EventList from './EventList';
import { mountWithProviders } from '../utils/testing';
import { ZetkinEvent } from '../interfaces/ZetkinEvent';
import { ZetkinEventResponse } from '../types/zetkin';
import { ZetkinOrganization } from '../interfaces/ZetkinOrganization';
describe('EventList', () => {
let dummyOrg : ZetkinOrganization;
let dummyEvents : ZetkinEvent[];
let dummyEventResponses : ZetkinEventResponse[];
beforeEach(()=> {
cy.fixture('dummyOrg.json')
.then((data : ZetkinOrganization) => {
dummyOrg = data;
});
cy.fixture('dummyEvents.json')
.then((data : {data: ZetkinEvent[]}) => {
dummyEvents = data.data;
});
cy.fixture('dummyEventResponses.json')
.then((data : {data: ZetkinEventResponse[]}) => {
dummyEventResponses = data.data;
});
});
it('contains data for each event', () => {
mountWithProviders(
<EventList
eventResponses={ dummyEventResponses }
events={ dummyEvents }
onEventResponse={ () => null }
org={ dummyOrg }
/>,
);
cy.get('[data-test="event"]').each((item) => {
cy.wrap(item)
.get('[data-test="event-title"]').should('be.visible')
.get('[data-test="org-title"]').should('be.visible')
.get('[data-test="campaign-title"]').should('be.visible')
.get('[data-test="start-time"]').should('be.visible')
.get('[data-test="end-time"]').should('be.visible')
.get('[data-test="location-title"]').should('be.visible');
});
});
it('contains an activity title instead of missing event title', () => {
dummyEvents[0].title = undefined;
mountWithProviders(
<EventList
eventResponses={ dummyEventResponses }
events={ dummyEvents }
onEventResponse={ () => null }
org={ dummyOrg }
/>,
);
cy.get('[data-test="event"]')
.should('contain', dummyEvents[0].activity.title)
.should('not.contain', 'undefined');
});
it('contains a sign-up button for each event', () => {
const spyOnSubmit = cy.spy();
mountWithProviders(
<EventList
eventResponses={ dummyEventResponses }
events={ dummyEvents }
onEventResponse={ spyOnSubmit }
org={ dummyOrg }
/>,
);
cy.findByText('misc.eventList.signup')
.eq(0)
.click()
.then(() => {
expect(spyOnSubmit).to.be.calledOnce;
});
});
it('contains a button for more info on each event', () => {
mountWithProviders(
<EventList
eventResponses={ dummyEventResponses }
events={ dummyEvents }
onEventResponse={ () => null }
org={ dummyOrg }
/>,
);
cy.contains('misc.eventList.moreInfo');
});
it('shows a placeholder when the list is empty', () => {
dummyEvents = [];
mountWithProviders(
<EventList
eventResponses={ dummyEventResponses }
events={ dummyEvents }
onEventResponse={ () => null }
org={ dummyOrg }
/>,
);
cy.contains('misc.eventList.placeholder');
});
it('shows a placeholder when the list is undefined', () => {
mountWithProviders(
<EventList
eventResponses={ dummyEventResponses }
events={ undefined }
onEventResponse={ () => null }
org={ dummyOrg }
/>,
);
cy.contains('misc.eventList.placeholder');
});
});