-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathtutorial_test.rb
More file actions
125 lines (105 loc) · 4.08 KB
/
Copy pathtutorial_test.rb
File metadata and controls
125 lines (105 loc) · 4.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
require 'test_helper'
class TutorialTest < ActiveSupport::TestCase
test 'batch parses a name' do
tutorial = upload_batch_spreadsheet('SCR_UploadBatch-Nanoclepta.xlsx')
name = tutorial.ephemeral_names.first
placement = name.placements.first
assert_equal 1, tutorial.step
assert_empty tutorial.value(:genomes)
assert_equal 1, tutorial.value(:names).size
assert_equal 'Nanoclepta', tutorial.value(:names).first['name']
assert_equal 'Nanobdellaceae', tutorial.value(:names).first['parent']
assert_nil name.parent
assert_nil name[:incertae_sedis]
assert_equal 'Nanobdellaceae', placement.parent.name
assert_nil placement.incertae_sedis
end
test 'batch parses an incertae sedis name' do
tutorial = upload_batch_spreadsheet(
'SCR_UploadBatch-Luteria-Incertae_sedis.xlsx'
)
name = tutorial.ephemeral_names.first
placement = name.placements.first
assert_equal 1, tutorial.step
assert_empty tutorial.value(:genomes)
assert_equal 1, tutorial.value(:names).size
assert_equal 'Luteria', tutorial.value(:names).first['name']
assert_equal(
'incertae sedis (Bacteria)', tutorial.value(:names).first['parent']
)
assert_nil name.parent
assert_nil name[:incertae_sedis]
assert_nil placement.parent
assert_equal 'incertae sedis (Bacteria)', placement.incertae_sedis
end
test 'batch creates a parent placement' do
tutorial = upload_batch_spreadsheet('SCR_UploadBatch-Nanoclepta.xlsx')
parent = names(:nanobdellaceae)
assert tutorial.batch_step_01({}, users(:contributor))
name = Name.find_by!(name: 'Nanoclepta')
placement = name.placement
assert_not_nil placement
assert_predicate placement, :preferred?
assert_equal parent, placement.parent
assert_equal parent, name.parent
assert_nil placement.incertae_sedis
end
test 'batch updates a claimable name with a preferred placement' do
parent = names(:nanobdellaceae)
name = Name.create!(
name: 'Nanoclepta', rank: 'genus', status: 5,
created_by: users(:contributor), parent: parent
)
placement = name.placement
tutorial = upload_batch_spreadsheet('SCR_UploadBatch-Nanoclepta.xlsx')
assert_no_difference('Placement.count') do
assert tutorial.batch_step_01({}, users(:contributor))
end
assert_equal placement, name.reload.placement
assert_equal parent, name.parent
end
test 'batch replaces a claimable name preferred placement' do
old_parent = Name.create!(
name: 'Nanoarchaeaceae', rank: 'family', status: 15
)
name = Name.create!(
name: 'Nanoclepta', rank: 'genus', status: 5,
created_by: users(:contributor), parent: old_parent
)
old_placement = name.placement
tutorial = upload_batch_spreadsheet('SCR_UploadBatch-Nanoclepta.xlsx')
assert_difference('Placement.count', 1) do
assert tutorial.batch_step_01({}, users(:contributor))
end
name = Name.find(name.id)
assert_equal names(:nanobdellaceae), name.placement.parent
assert_not old_placement.reload.preferred?
assert_includes name.alt_placements, old_placement
end
test 'batch creates an incertae sedis placement' do
tutorial = upload_batch_spreadsheet(
'SCR_UploadBatch-Luteria-Incertae_sedis.xlsx'
)
explanation = tutorial.value(:names).first['description']
assert tutorial.batch_step_01({}, users(:contributor))
name = Name.find_by!(name: 'Luteria')
placement = name.placement
assert_not_nil placement
assert_predicate placement, :preferred?
assert_nil placement.parent
assert_nil name.parent
assert_equal 'incertae sedis (Bacteria)', placement.incertae_sedis
assert_equal explanation, placement.incertae_sedis_text.to_plain_text
assert_nil name[:incertae_sedis]
end
private
def upload_batch_spreadsheet(filename)
tutorial = Tutorial.create!(
pipeline: 'batch', user: users(:contributor), step: 0, ongoing: true
)
File.open(Rails.root.join('test/fixtures/files', filename)) do |file|
assert tutorial.batch_step_00({ file: file }, users(:contributor))
end
tutorial
end
end