scinote-web/spec/lib/tasks/samples_to_repository_migration_spec.rb
2018-03-13 15:03:48 +01:00

76 lines
3.1 KiB
Ruby

require 'rails_helper'
describe 'samples_to_repository_migration:run' do
include_context 'rake'
let!(:user) { create :user, email: 'happy.user@scinote.net' }
let!(:team) { create :team, created_by: user }
let!(:user_team) { create :user_team, user: user, team: team }
let!(:my_module) { create :my_module }
let(:sample_types_names) { %w(type_one type_two type_three) }
let(:sample_group_names) { %w(group_one group_two group_three) }
before do
sample_types = []
sample_types_names.each do |name|
sample_type = create :sample_type, name: name, team: team
sample_types << sample_type
end
sample_groups = []
sample_group_names.each do |name|
sample_group = create :sample_group, name: name, team: team
sample_groups << sample_group
end
custom_field = create :custom_field, name: 'Banana', team: team, user: user
100.times do |index|
sample = create :sample, name: "Sample (#{index})", user: user, team: team
create :sample_my_module, sample: sample, my_module: my_module
sample.sample_type = sample_types[rand(0...2)]
sample.sample_group = sample_groups[rand(0...2)]
custom_value = create :sample_custom_field,
value: "custom value (#{index})",
custom_field: custom_field,
sample: sample
sample.sample_custom_fields << custom_value
sample.save
end
end
it 'generates a new custom repository with exact copy of samples' do
subject.invoke
expect(Repository.first.name).to eq 'Samples'
expect(RepositoryRow.count).to eq 100
RepositoryRow.all.each do |row|
row_my_module = MyModuleRepositoryRow.where(repository_row: row,
my_module: my_module)
expect(row_my_module).to exist
expect(row.name).to match(/Sample \([0-9]*\)/)
expect(row.created_by).to eq user
# repository sample_type column
sample_type_column = row.repository_cells.first
expect(sample_types_names).to include(sample_type_column.value.formatted)
expect(sample_type_column.repository_column.name).to eq 'Sample type'
expect(sample_type_column.value_type).to eq 'RepositoryListValue'
# repository sample_group column
sample_group_column = row.repository_cells.second
expect(sample_group_names).to include(sample_group_column.value.formatted)
expect(sample_group_column.repository_column.name).to eq 'Sample group'
expect(sample_group_column.value_type).to eq 'RepositoryListValue'
# repository color column
color_column = row.repository_cells.third
expect(
color_column.repository_column.name
).to eq 'Sample group color hex'
expect(color_column.value_type).to eq 'RepositoryTextValue'
# repository custom column
custom_column = row.repository_cells.last
expect(custom_column.value.formatted).to match(/custom value \([0-9]*\)/)
expect(custom_column.repository_column.name).to eq 'Banana'
expect(custom_column.value_type).to eq 'RepositoryTextValue'
end
end
end