mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-02-27 09:13:46 +08:00
Delegate archived methods to parent repository
This commit is contained in:
parent
e89bf58e1c
commit
6de322498b
2 changed files with 132 additions and 0 deletions
|
@ -51,6 +51,26 @@ class RepositoryRow < ApplicationRecord
|
|||
true
|
||||
end
|
||||
|
||||
def row_archived?
|
||||
self[:archived]
|
||||
end
|
||||
|
||||
def archived
|
||||
row_archived? || repository&.archived?
|
||||
end
|
||||
|
||||
def archived?
|
||||
row_archived? ? super : repository.archived?
|
||||
end
|
||||
|
||||
def archived_by
|
||||
row_archived? ? super : repository.archived_by
|
||||
end
|
||||
|
||||
def archived_on
|
||||
row_archived? ? super : repository.archived_on
|
||||
end
|
||||
|
||||
def snapshot!(repository_snapshot)
|
||||
row_snapshot = dup
|
||||
row_snapshot.assign_attributes(
|
||||
|
|
|
@ -42,4 +42,116 @@ describe RepositoryRow, type: :model do
|
|||
it { is_expected.to validate_presence_of :created_by }
|
||||
end
|
||||
end
|
||||
|
||||
describe '.archived' do
|
||||
context 'when archived' do
|
||||
let(:repository_row) { build :repository_row, :archived }
|
||||
it 'returns true' do
|
||||
expect(repository_row.archived).to be_truthy
|
||||
end
|
||||
end
|
||||
|
||||
context 'when not archived' do
|
||||
context 'when parent not archived' do
|
||||
let(:repository_row) { build :repository_row }
|
||||
|
||||
it 'returns false' do
|
||||
expect(repository_row.archived).to be_falsey
|
||||
end
|
||||
end
|
||||
|
||||
context 'when parent archived' do
|
||||
let(:repository_row) { build :repository_row, repository: archived_repository }
|
||||
let(:archived_repository) { create :repository, :archived }
|
||||
|
||||
it 'returns true' do
|
||||
expect(repository_row.archived).to be_truthy
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '.archived?' do
|
||||
context 'when archived' do
|
||||
let(:repository_row) { build :repository_row, :archived }
|
||||
it 'returns true' do
|
||||
expect(repository_row.archived?).to be_truthy
|
||||
end
|
||||
end
|
||||
|
||||
context 'when not archived' do
|
||||
context 'when parent not archived' do
|
||||
let(:repository_row) { build :repository_row }
|
||||
|
||||
it 'returns false' do
|
||||
expect(repository_row.archived?).to be_falsey
|
||||
end
|
||||
end
|
||||
|
||||
context 'when parent archived' do
|
||||
let(:repository_row) { build :repository_row, repository: archived_repository }
|
||||
let(:archived_repository) { create :repository, :archived }
|
||||
|
||||
it 'returns true' do
|
||||
expect(repository_row.archived?).to be_truthy
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '.archived_by' do
|
||||
context 'when archived' do
|
||||
let(:repository_row) { build :repository_row, :archived }
|
||||
it 'returns user' do
|
||||
expect(repository_row.archived_by).to be_instance_of User
|
||||
end
|
||||
end
|
||||
|
||||
context 'when not archived' do
|
||||
context 'when parent not archived' do
|
||||
let(:repository_row) { build :repository_row }
|
||||
|
||||
it 'returns nil' do
|
||||
expect(repository_row.archived_by).to be_nil
|
||||
end
|
||||
end
|
||||
|
||||
context 'when parent archived' do
|
||||
let(:repository_row) { build :repository_row, repository: archived_repository }
|
||||
let(:archived_repository) { create :repository, :archived }
|
||||
|
||||
it 'returns repository archived_by user' do
|
||||
expect(repository_row.archived_by).to be_eql(archived_repository.archived_by)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '.archived_on' do
|
||||
context 'when archived' do
|
||||
let(:repository_row) { build :repository_row, :archived }
|
||||
it 'returns time' do
|
||||
expect(repository_row.archived_on).not_to be_nil
|
||||
end
|
||||
end
|
||||
|
||||
context 'when not archived' do
|
||||
context 'when parent not archived' do
|
||||
let(:repository_row) { build :repository_row }
|
||||
|
||||
it 'returns nil' do
|
||||
expect(repository_row.archived_on).to be_nil
|
||||
end
|
||||
end
|
||||
|
||||
context 'when parent archived' do
|
||||
let(:repository_row) { create :repository_row, repository: archived_repository }
|
||||
let(:archived_repository) { create :repository, :archived }
|
||||
|
||||
it 'returns times of archiving parent' do
|
||||
expect(repository_row.archived_on).to be_eql(archived_repository.archived_on)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue