Skip to content

Commit a35928a

Browse files
committed
System tests for placement
1 parent f849759 commit a35928a

3 files changed

Lines changed: 85 additions & 1 deletion

File tree

test/fixtures/names.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ escherichia_coli:
1717
name: Escherichia coli
1818
rank: species
1919
status: 15 # SeqCode
20+
parent: escherichia
2021

2122
escherichia_colie:
2223
name: Escherichia colie

test/fixtures/placements.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,8 @@ two:
99
name: two
1010
parent: two
1111
preferred: false
12+
13+
escherichia_coli:
14+
name: escherichia_coli
15+
parent: escherichia
16+
preferred: true

test/system/placements_test.rb

Lines changed: 79 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,86 @@
1+
# frozen_string_literal: true
2+
13
require 'application_system_test_case'
24

35
class PlacementsTest < ApplicationSystemTestCase
6+
include Warden::Test::Helpers
7+
48
setup do
5-
@placement = placements(:one)
9+
@user = users(:curator)
10+
@parent = names(:escherichia)
11+
12+
login_as(@user, scope: :user)
13+
end
14+
15+
teardown { Warden.test_reset! }
16+
17+
test 'creating the first placement for a name' do
18+
name = Name.create!(
19+
name: 'Escherichia fergusonii', rank: 'species', status: 5,
20+
created_by: @user
21+
)
22+
23+
assert_nil(name.placement)
24+
25+
visit new_placement_path(name)
26+
fill_in 'Genus', with: @parent.name
27+
click_button 'Submit'
28+
29+
assert_text 'Placement successfully updated'
30+
assert_current_path name_path(name)
31+
32+
name.reload
33+
34+
assert_equal(@parent, name.placement.parent)
35+
assert_predicate(name.placement, :preferred?)
36+
end
37+
38+
test 'declaring incertae sedis in Bacteria' do
39+
name = Name.create!(
40+
name: 'Escherichia fergusonii', rank: 'species', status: 5,
41+
created_by: @user
42+
)
43+
explanation = 'Its placement within Bacteria is unresolved.'
44+
45+
visit new_placement_path(name)
46+
select 'Incertae sedis (Bacteria)', from: 'Incertae sedis'
47+
fill_in_rich_text_area(
48+
'Description of the classification problems', with: explanation
49+
)
50+
click_button 'Submit'
51+
52+
assert_text 'Placement successfully updated'
53+
assert_current_path name_path(name)
54+
55+
name.reload
56+
placement = name.placement
57+
58+
assert_equal('Incertae sedis (Bacteria)', placement.incertae_sedis)
59+
assert_equal(explanation, placement.incertae_sedis_text.to_plain_text)
60+
assert_nil(placement.parent)
61+
assert_predicate(placement, :preferred?)
62+
end
63+
64+
test 'adding a second non-preferred placement' do
65+
name = names(:escherichia_coli)
66+
alternative_parent = Name.create!(
67+
name: 'Shigella', rank: 'genus', status: 15
68+
)
69+
70+
visit name_path(name)
71+
click_link 'Report alternative placement'
72+
fill_in 'Genus', with: alternative_parent.name
73+
click_button 'Submit'
74+
75+
assert_text 'Placement successfully updated'
76+
assert_current_path name_path(name)
77+
78+
name.reload
79+
alternative_placements = name.alt_placements
80+
81+
assert_equal(@parent, name.placement.parent)
82+
assert_equal([alternative_parent], alternative_placements.map(&:parent))
83+
assert_not_predicate(alternative_placements.first, :preferred?)
684
end
785

886
end

0 commit comments

Comments
 (0)