blob: 8fd509e35ad46295163a1890163a13e98b7e14c0 [file] [log] [blame]
#
# 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