Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions test/fixtures/names.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ escherichia_coli:
name: Escherichia coli
rank: species
status: 15 # SeqCode
parent: escherichia

escherichia_colie:
name: Escherichia colie
Expand Down
5 changes: 5 additions & 0 deletions test/fixtures/placements.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,8 @@ two:
name: two
parent: two
preferred: false

escherichia_coli:
name: escherichia_coli
parent: escherichia
preferred: true
80 changes: 79 additions & 1 deletion test/system/placements_test.rb
Original file line number Diff line number Diff line change
@@ -1,8 +1,86 @@
# frozen_string_literal: true

require 'application_system_test_case'

class PlacementsTest < ApplicationSystemTestCase
include Warden::Test::Helpers

setup do
@placement = placements(:one)
@user = users(:curator)
@parent = names(:escherichia)

login_as(@user, scope: :user)
end

teardown { Warden.test_reset! }

test 'creating the first placement for a name' do
name = Name.create!(
name: 'Escherichia fergusonii', rank: 'species', status: 5,
created_by: @user
)

assert_nil(name.placement)

visit new_placement_path(name)
fill_in 'Genus', with: @parent.name
click_button 'Submit'

assert_text 'Placement successfully updated'
assert_current_path name_path(name)

name.reload

assert_equal(@parent, name.placement.parent)
assert_predicate(name.placement, :preferred?)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would we prefer that system tests don't reach into database internals and just validate things based on how they appear in the HTML?

end

test 'declaring incertae sedis in Bacteria' do
name = Name.create!(
name: 'Escherichia fergusonii', rank: 'species', status: 5,
created_by: @user
)
explanation = 'Its placement within Bacteria is unresolved.'

visit new_placement_path(name)
select 'Incertae sedis (Bacteria)', from: 'Incertae sedis'
fill_in_rich_text_area(
'Description of the classification problems', with: explanation
)
click_button 'Submit'

assert_text 'Placement successfully updated'
assert_current_path name_path(name)

name.reload
placement = name.placement

assert_equal('Incertae sedis (Bacteria)', placement.incertae_sedis)
assert_equal(explanation, placement.incertae_sedis_text.to_plain_text)
assert_nil(placement.parent)
assert_predicate(placement, :preferred?)
end

test 'adding a second non-preferred placement' do
name = names(:escherichia_coli)
alternative_parent = Name.create!(
name: 'Shigella', rank: 'genus', status: 15
)

visit name_path(name)
click_link 'Report alternative placement'
fill_in 'Genus', with: alternative_parent.name
click_button 'Submit'

assert_text 'Placement successfully updated'
assert_current_path name_path(name)

name.reload
alternative_placements = name.alt_placements

assert_equal(@parent, name.placement.parent)
assert_equal([alternative_parent], alternative_placements.map(&:parent))
assert_not_predicate(alternative_placements.first, :preferred?)
end

end
Loading