mirror of
https://github.com/teamcapybara/capybara.git
synced 2022-11-09 12:08:07 -05:00
152 lines
4.9 KiB
Ruby
152 lines
4.9 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
Capybara::SpecHelper.spec '#has_table?' do
|
|
before do
|
|
@session.visit('/tables')
|
|
end
|
|
|
|
it 'should be true if the table is on the page' do
|
|
expect(@session).to have_table('Villain')
|
|
expect(@session).to have_table('villain_table')
|
|
expect(@session).to have_table(:villain_table)
|
|
end
|
|
|
|
it 'should accept rows with column header hashes' do
|
|
expect(@session).to have_table('Horizontal Headers', with_rows:
|
|
[
|
|
{ 'First Name' => 'Vern', 'Last Name' => 'Konopelski', 'City' => 'Everette' },
|
|
{ 'First Name' => 'Palmer', 'Last Name' => 'Sawayn', 'City' => 'West Trinidad' }
|
|
])
|
|
end
|
|
|
|
it 'should accept rows with partial column header hashses' do
|
|
expect(@session).to have_table('Horizontal Headers', with_rows:
|
|
[
|
|
{ 'First Name' => 'Thomas' },
|
|
{ 'Last Name' => 'Sawayn', 'City' => 'West Trinidad' }
|
|
])
|
|
end
|
|
|
|
it 'should accept rows with array of cell values' do
|
|
expect(@session).to have_table('Horizontal Headers', with_rows:
|
|
[
|
|
%w[Thomas Walpole Oceanside],
|
|
['Ratke', 'Lawrence', 'East Sorayashire']
|
|
])
|
|
end
|
|
|
|
it 'should consider order of cells in each row' do
|
|
expect(@session).not_to have_table('Horizontal Headers', with_rows:
|
|
[
|
|
%w[Thomas Walpole Oceanside],
|
|
['Lawrence', 'Ratke', 'East Sorayashire']
|
|
])
|
|
end
|
|
|
|
it 'should accept all rows with array of cell values' do
|
|
expect(@session).to have_table('Horizontal Headers', rows:
|
|
[
|
|
%w[Thomas Walpole Oceanside],
|
|
%w[Danilo Wilkinson Johnsonville],
|
|
%w[Vern Konopelski Everette],
|
|
['Ratke', 'Lawrence', 'East Sorayashire'],
|
|
['Palmer', 'Sawayn', 'West Trinidad']
|
|
])
|
|
end
|
|
|
|
it 'should match with vertical headers' do
|
|
expect(@session).to have_table('Vertical Headers', with_cols:
|
|
[
|
|
{ 'First Name' => 'Thomas' },
|
|
{ 'First Name' => 'Danilo', 'Last Name' => 'Wilkinson', 'City' => 'Johnsonville' },
|
|
{ 'Last Name' => 'Sawayn', 'City' => 'West Trinidad' }
|
|
])
|
|
end
|
|
|
|
it 'should match col with array of cell values' do
|
|
expect(@session).to have_table('Vertical Headers', with_cols:
|
|
[
|
|
%w[Vern Konopelski Everette]
|
|
])
|
|
end
|
|
|
|
it 'should match cols with array of cell values' do
|
|
expect(@session).to have_table('Vertical Headers', with_cols:
|
|
[
|
|
%w[Danilo Wilkinson Johnsonville],
|
|
%w[Vern Konopelski Everette]
|
|
])
|
|
end
|
|
|
|
it 'should match all cols with array of cell values' do
|
|
expect(@session).to have_table('Vertical Headers', cols:
|
|
[
|
|
%w[Thomas Walpole Oceanside],
|
|
%w[Danilo Wilkinson Johnsonville],
|
|
%w[Vern Konopelski Everette],
|
|
['Ratke', 'Lawrence', 'East Sorayashire'],
|
|
['Palmer', 'Sawayn', 'West Trinidad']
|
|
])
|
|
end
|
|
|
|
it "should not match if the order of cell values doesn't match" do
|
|
expect(@session).not_to have_table('Vertical Headers', with_cols:
|
|
[
|
|
%w[Vern Everette Konopelski]
|
|
])
|
|
end
|
|
|
|
it "should not match with vertical headers if the columns don't match" do
|
|
expect(@session).not_to have_table('Vertical Headers', with_cols:
|
|
[
|
|
{ 'First Name' => 'Thomas' },
|
|
{ 'First Name' => 'Danilo', 'Last Name' => 'Walpole', 'City' => 'Johnsonville' },
|
|
{ 'Last Name' => 'Sawayn', 'City' => 'West Trinidad' }
|
|
])
|
|
end
|
|
|
|
it 'should be false if the table is not on the page' do
|
|
expect(@session).not_to have_table('Monkey')
|
|
end
|
|
|
|
it 'should find row by header and cell values' do
|
|
expect(@session.find(:table, 'Horizontal Headers')).to have_selector(:table_row, 'First Name' => 'Thomas', 'Last Name' => 'Walpole')
|
|
expect(@session.find(:table, 'Horizontal Headers')).to have_selector(:table_row, 'Last Name' => 'Walpole')
|
|
expect(@session.find(:table, 'Horizontal Headers')).not_to have_selector(:table_row, 'First Name' => 'Walpole')
|
|
end
|
|
|
|
it 'should find row by cell values' do
|
|
expect(@session.find(:table, 'Horizontal Headers')).to have_selector(:table_row, %w[Thomas Walpole])
|
|
expect(@session.find(:table, 'Horizontal Headers')).not_to have_selector(:table_row, %w[Walpole Thomas])
|
|
expect(@session.find(:table, 'Horizontal Headers')).not_to have_selector(:table_row, %w[Other])
|
|
end
|
|
end
|
|
|
|
Capybara::SpecHelper.spec '#has_no_table?' do
|
|
before do
|
|
@session.visit('/tables')
|
|
end
|
|
|
|
it 'should be false if the table is on the page' do
|
|
expect(@session).not_to have_no_table('Villain')
|
|
expect(@session).not_to have_no_table('villain_table')
|
|
end
|
|
|
|
it 'should be true if the table is not on the page' do
|
|
expect(@session).to have_no_table('Monkey')
|
|
end
|
|
|
|
it 'should consider rows' do
|
|
expect(@session).to have_no_table('Horizontal Headers', with_rows:
|
|
[
|
|
{ 'First Name' => 'Thomas', 'City' => 'Los Angeles' }
|
|
])
|
|
end
|
|
|
|
it 'should consider columns' do
|
|
expect(@session).to have_no_table('Vertical Headers', with_cols:
|
|
[
|
|
{ 'First Name' => 'Joe' }
|
|
])
|
|
end
|
|
end
|