mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-09-07 13:44:23 +08:00
87 lines
3.3 KiB
Ruby
87 lines
3.3 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'rails_helper'
|
|
|
|
describe RepositoryItemDateReminderJob, type: :job do
|
|
around do |example|
|
|
Timecop.freeze(Time.utc(2025, 1, 15, 0, 0, 0)) do
|
|
example.run
|
|
end
|
|
end
|
|
|
|
let(:user) { create :user }
|
|
let(:team) { create :team, created_by: user }
|
|
let!(:owner_role) { UserRole.find_by(name: I18n.t('user_roles.predefined.owner')) }
|
|
let!(:team_assignment) { create_user_assignment(team, owner_role, user) }
|
|
let(:repository) { create :repository, team: team, created_by: user }
|
|
|
|
let!(:date_column_with_reminder) do
|
|
create :repository_column, repository: repository,
|
|
created_by: user,
|
|
name: 'Custom items',
|
|
data_type: 'RepositoryDateValue',
|
|
metadata: {"reminder_unit"=>"86400", "reminder_value"=>"5", "reminder_message"=>""}
|
|
end
|
|
|
|
let!(:repository_date_value_due) do
|
|
row = create :repository_row, name: "row 1",
|
|
repository: repository,
|
|
created_by: user,
|
|
last_modified_by: user
|
|
|
|
create(
|
|
:repository_date_value,
|
|
data: Date.parse('20-1-2025'),
|
|
repository_cell_attributes: { repository_row: row, repository_column: date_column_with_reminder }
|
|
)
|
|
end
|
|
|
|
let!(:repository_date_value_due_outside_buffer) do
|
|
row = create :repository_row, name: "row 1",
|
|
repository: repository,
|
|
created_by: user,
|
|
last_modified_by: user
|
|
|
|
create(
|
|
:repository_date_value,
|
|
data: Date.parse('15-1-2025') - (RepositoryItemDateReminderJob::BUFFER_DAYS + 1).days,
|
|
repository_cell_attributes: { repository_row: row, repository_column: date_column_with_reminder }
|
|
)
|
|
end
|
|
|
|
let!(:repository_date_value_due_inside_buffer) do
|
|
row = create :repository_row, name: "row 1",
|
|
repository: repository,
|
|
created_by: user,
|
|
last_modified_by: user
|
|
|
|
create(
|
|
:repository_date_value,
|
|
data: Date.parse('15-1-2025') - (RepositoryItemDateReminderJob::BUFFER_DAYS - 1).days,
|
|
repository_cell_attributes: { repository_row: row, repository_column: date_column_with_reminder }
|
|
)
|
|
end
|
|
|
|
let!(:repository_date_value_not_due) do
|
|
row = create :repository_row, name: "row 1",
|
|
repository: repository,
|
|
created_by: user,
|
|
last_modified_by: user
|
|
|
|
create(
|
|
:repository_date_value,
|
|
data: Date.parse('10-10-2025'),
|
|
repository_cell_attributes: { repository_row: row, repository_column: date_column_with_reminder }
|
|
)
|
|
end
|
|
|
|
describe '#repository_values_due' do
|
|
it "returns repository values that are due with a #{RepositoryItemDateReminderJob::BUFFER_DAYS} day buffer" do
|
|
values = described_class.new.send(:repository_values_due, RepositoryDateValue, Date.current)
|
|
expect(values).to include(repository_date_value_due)
|
|
expect(values).to_not include(repository_date_value_not_due)
|
|
expect(values).to include(repository_date_value_due_inside_buffer)
|
|
expect(values).to_not include(repository_date_value_due_outside_buffer)
|
|
end
|
|
end
|
|
end
|