mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2024-09-20 06:35:56 +08:00
Add fallback archived_on and archived_by columns to parent for MyModule and Experiment [SCI-5362]
This commit is contained in:
parent
5f506b7459
commit
2a3bafd6a0
|
@ -105,6 +105,26 @@ class Experiment < ApplicationRecord
|
|||
archived? || project.archived?
|
||||
end
|
||||
|
||||
def experiment_archived?
|
||||
self[:archived]
|
||||
end
|
||||
|
||||
def archived
|
||||
experiment_archived? || project&.archived?
|
||||
end
|
||||
|
||||
def archived?
|
||||
experiment_archived? ? super : project&.archived?
|
||||
end
|
||||
|
||||
def archived_by
|
||||
experiment_archived? ? super : project&.archived_by
|
||||
end
|
||||
|
||||
def archived_on
|
||||
experiment_archived? ? super : project&.archived_on
|
||||
end
|
||||
|
||||
def navigable?
|
||||
!project.archived?
|
||||
end
|
||||
|
|
|
@ -137,6 +137,26 @@ class MyModule < ApplicationRecord
|
|||
archived? || experiment.archived_branch?
|
||||
end
|
||||
|
||||
def my_module_archived?
|
||||
self[:archived]
|
||||
end
|
||||
|
||||
def archived
|
||||
my_module_archived? || experiment&.archived?
|
||||
end
|
||||
|
||||
def archived?
|
||||
my_module_archived? ? super : experiment&.archived?
|
||||
end
|
||||
|
||||
def archived_by
|
||||
my_module_archived? ? super : experiment&.archived_by
|
||||
end
|
||||
|
||||
def archived_on
|
||||
my_module_archived? ? super : experiment&.archived_on
|
||||
end
|
||||
|
||||
def repository_rows_count(repository)
|
||||
my_module_repository_rows.joins(repository_row: :repository)
|
||||
.where('repositories.id': repository.id)
|
||||
|
|
|
@ -15,5 +15,11 @@ FactoryBot.define do
|
|||
create_list :my_module, 3, :with_tag, experiment: e
|
||||
end
|
||||
end
|
||||
|
||||
trait :archived do
|
||||
archived { true }
|
||||
archived_on { Time.zone.now }
|
||||
archived_by { created_by }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -7,5 +7,11 @@ FactoryBot.define do
|
|||
team { create :team, created_by: created_by }
|
||||
archived { false }
|
||||
visibility { 'hidden' }
|
||||
|
||||
trait :archived do
|
||||
archived { true }
|
||||
archived_on { Time.zone.now }
|
||||
archived_by { created_by }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -75,6 +75,118 @@ describe Experiment, type: :model do
|
|||
end
|
||||
end
|
||||
|
||||
describe '.archived' do
|
||||
context 'when archived' do
|
||||
let(:experiment) { build :experiment, :archived }
|
||||
it 'returns true' do
|
||||
expect(experiment.archived).to be_truthy
|
||||
end
|
||||
end
|
||||
|
||||
context 'when not archived' do
|
||||
context 'when parent not archived' do
|
||||
let(:experiment) { build :experiment }
|
||||
|
||||
it 'returns false' do
|
||||
expect(experiment.archived).to be_falsey
|
||||
end
|
||||
end
|
||||
|
||||
context 'when parent archived' do
|
||||
let(:experiment) { build :experiment, project: archived_project }
|
||||
let(:archived_project) { create :project, :archived }
|
||||
|
||||
it 'returns true' do
|
||||
expect(experiment.archived).to be_truthy
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '.archived?' do
|
||||
context 'when archived' do
|
||||
let(:experiment) { build :experiment, :archived }
|
||||
it 'returns true' do
|
||||
expect(experiment.archived?).to be_truthy
|
||||
end
|
||||
end
|
||||
|
||||
context 'when not archived' do
|
||||
context 'when parent not archived' do
|
||||
let(:experiment) { build :experiment }
|
||||
|
||||
it 'returns false' do
|
||||
expect(experiment.archived?).to be_falsey
|
||||
end
|
||||
end
|
||||
|
||||
context 'when parent archived' do
|
||||
let(:experiment) { build :experiment, project: archived_project }
|
||||
let(:archived_project) { create :project, :archived }
|
||||
|
||||
it 'returns true' do
|
||||
expect(experiment.archived?).to be_truthy
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '.archived_by' do
|
||||
context 'when archived' do
|
||||
let(:experiment) { build :experiment, :archived }
|
||||
it 'returns user' do
|
||||
expect(experiment.archived_by).to be_instance_of User
|
||||
end
|
||||
end
|
||||
|
||||
context 'when not archived' do
|
||||
context 'when parent not archived' do
|
||||
let(:experiment) { build :experiment }
|
||||
|
||||
it 'returns nil' do
|
||||
expect(experiment.archived_by).to be_nil
|
||||
end
|
||||
end
|
||||
|
||||
context 'when parent archived' do
|
||||
let(:experiment) { build :experiment, project: archived_project }
|
||||
let(:archived_project) { create :project, :archived }
|
||||
|
||||
it 'returns project archived_by user' do
|
||||
expect(experiment.archived_by).to be_eql(archived_project.archived_by)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '.archived_on' do
|
||||
context 'when archived' do
|
||||
let(:experiment) { build :experiment, :archived }
|
||||
it 'returns time' do
|
||||
expect(experiment.archived_on).not_to be_nil
|
||||
end
|
||||
end
|
||||
|
||||
context 'when not archived' do
|
||||
context 'when parent not archived' do
|
||||
let(:experiment) { build :experiment }
|
||||
|
||||
it 'returns nil' do
|
||||
expect(experiment.archived_on).to be_nil
|
||||
end
|
||||
end
|
||||
|
||||
context 'when parent archived' do
|
||||
let(:experiment) { create :experiment, project: archived_project }
|
||||
let(:archived_project) { create :project, :archived }
|
||||
|
||||
it 'returns times of archiving parent' do
|
||||
expect(experiment.archived_on).to be_eql(archived_project.archived_on)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '.update_canvas' do
|
||||
let(:experiment) { create :experiment, :with_tasks }
|
||||
let(:user) { experiment.created_by }
|
||||
|
|
|
@ -106,4 +106,116 @@ describe MyModule, type: :model do
|
|||
it { is_expected.to validate_presence_of :experiment }
|
||||
end
|
||||
end
|
||||
|
||||
describe '.archived' do
|
||||
context 'when archived' do
|
||||
let(:my_module) { build :my_module, :archived }
|
||||
it 'returns true' do
|
||||
expect(my_module.archived).to be_truthy
|
||||
end
|
||||
end
|
||||
|
||||
context 'when not archived' do
|
||||
context 'when parent not archived' do
|
||||
let(:my_module) { build :my_module }
|
||||
|
||||
it 'returns false' do
|
||||
expect(my_module.archived).to be_falsey
|
||||
end
|
||||
end
|
||||
|
||||
context 'when parent archived' do
|
||||
let(:my_module) { build :my_module, experiment: archived_experiment }
|
||||
let(:archived_experiment) { create :experiment, :archived }
|
||||
|
||||
it 'returns true' do
|
||||
expect(my_module.archived).to be_truthy
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '.archived?' do
|
||||
context 'when archived' do
|
||||
let(:my_module) { build :my_module, :archived }
|
||||
it 'returns true' do
|
||||
expect(my_module.archived?).to be_truthy
|
||||
end
|
||||
end
|
||||
|
||||
context 'when not archived' do
|
||||
context 'when parent not archived' do
|
||||
let(:my_module) { build :my_module }
|
||||
|
||||
it 'returns false' do
|
||||
expect(my_module.archived?).to be_falsey
|
||||
end
|
||||
end
|
||||
|
||||
context 'when parent archived' do
|
||||
let(:my_module) { build :my_module, experiment: archived_experiment }
|
||||
let(:archived_experiment) { create :experiment, :archived }
|
||||
|
||||
it 'returns true' do
|
||||
expect(my_module.archived?).to be_truthy
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '.archived_by' do
|
||||
context 'when archived' do
|
||||
let(:my_module) { build :my_module, :archived }
|
||||
it 'returns user' do
|
||||
expect(my_module.archived_by).to be_instance_of User
|
||||
end
|
||||
end
|
||||
|
||||
context 'when not archived' do
|
||||
context 'when parent not archived' do
|
||||
let(:my_module) { build :my_module }
|
||||
|
||||
it 'returns nil' do
|
||||
expect(my_module.archived_by).to be_nil
|
||||
end
|
||||
end
|
||||
|
||||
context 'when parent archived' do
|
||||
let(:my_module) { build :my_module, experiment: archived_experiment }
|
||||
let(:archived_experiment) { create :experiment, :archived }
|
||||
|
||||
it 'returns experiment archived_by user' do
|
||||
expect(my_module.archived_by).to be_eql(archived_experiment.archived_by)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '.archived_on' do
|
||||
context 'when archived' do
|
||||
let(:my_module) { build :my_module, :archived }
|
||||
it 'returns time' do
|
||||
expect(my_module.archived_on).not_to be_nil
|
||||
end
|
||||
end
|
||||
|
||||
context 'when not archived' do
|
||||
context 'when parent not archived' do
|
||||
let(:my_module) { build :my_module }
|
||||
|
||||
it 'returns nil' do
|
||||
expect(my_module.archived_on).to be_nil
|
||||
end
|
||||
end
|
||||
|
||||
context 'when parent archived' do
|
||||
let(:my_module) { create :my_module, experiment: archived_experiment }
|
||||
let(:archived_experiment) { create :experiment, :archived }
|
||||
|
||||
it 'returns times of archiving parent' do
|
||||
expect(my_module.archived_on).to be_eql(archived_experiment.archived_on)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue