Skip to content
Draft
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
102 changes: 101 additions & 1 deletion test/system/placements_test.rb
Original file line number Diff line number Diff line change
@@ -1,8 +1,108 @@
# 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?)
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

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

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

assert_text 'Placement successfully updated'
assert_current_path name_path(name)

name.reload
alternative_placements = name.alt_placements

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