forked from Humbedooh/whimsy-agenda
-
Notifications
You must be signed in to change notification settings - Fork 0
/
forms_spec.rb
103 lines (92 loc) · 3.36 KB
/
forms_spec.rb
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
#
# component tests for client side forms
#
require_relative 'spec_helper'
require_relative 'react_server'
describe "forms", type: :feature, server: :react do
#
# Comment form
#
describe "comment form" do
it "has an add-comment form with a disabled Save button" do
on_react_server do
server = {pending: {}, initials: 'sr'}
React.render _AddComment(item: {}, server: server), document.body do
response.end document.body.innerHTML
end
end
expect(page).to have_selector '.modal#comment-form'
expect(page).to have_selector '.modal .modal-dialog .modal-header h4',
text: 'Enter a comment'
expect(page).to have_selector '.modal-body input[value="sr"]'
expect(page).not_to have_selector '.modal-footer .btn-warning',
text: 'Delete'
expect(page).to have_selector '.modal-footer .btn-primary[disabled]',
text: 'Save'
end
it "should enable Save button after input" do
on_react_server do
server = {pending: {}, initials: 'sr'}
React.render _AddComment(item: {}, server: server), document.body do
node = ~'#comment_text'
node.textContent = 'Good job!'
Simulate.change node, target: {value: 'Good job!'}
response.end document.body.innerHTML
end
end
expect(page).to have_selector '.modal-footer .btn-warning', text: 'Delete'
expect(page).to have_selector \
'.modal-footer .btn-primary:not([disabled])', text: 'Save'
end
end
#
# Post form
#
describe "post form" do
it "should indicate when a reflow is needed" do
parsed = Agenda.parse 'board_agenda_2015_02_18.txt', :quick
@item = parsed.find {|item| item['title'] == 'Executive Vice President'}
on_react_server do
item = Agenda.new(@item)
React.render _Post(item: item, button: 'edit report'), document.body do
response.end document.body.innerHTML
end
end
expect(find('#post-report-text').value).to match(/to answer\nquestions/)
expect(page).to have_selector '.modal-footer .btn-danger',
text: 'Reflow'
end
it "should perform a reflow" do
parsed = Agenda.parse 'board_agenda_2015_02_18.txt', :quick
@item = parsed.find {|item| item['title'] == 'Executive Vice President'}
on_react_server do
item = Agenda.new(@item)
React.render _Post(item: item, button: 'edit report'), document.body do
Simulate.click ~'.btn-danger'
~'#post-report-text'.textContent = this.state.report
response.end document.body.innerHTML
end
end
expect(find('#post-report-text').value).to match(/to\nanswer questions/)
expect(page).to have_selector '.modal-footer .btn-default',
text: 'Reflow'
end
end
#
# Commit form
#
describe "commit form" do
it "should generate a default commit message" do
@parsed = Agenda.parse 'board_agenda_2015_02_18.txt', :quick
on_react_server do
Agenda.load(@parsed)
server = {pending: {approved: ['7'], comments: {I: 'Nice report!'}}}
React.render _Commit(item: {}, server: server), document.body do
response.end document.body.innerHTML
end
end
expect(page).to have_selector '#commit-text',
text: "Approve W3C Relations\nComment on BookKeeper".gsub(/\s+/, ' ')
end
end
end