debian-mirror-gitlab/spec/services/work_items/widgets/start_and_due_date_service/update_service_spec.rb
2022-08-27 11:52:29 +05:30

62 lines
1.9 KiB
Ruby

# frozen_string_literal: true
require 'spec_helper'
RSpec.describe WorkItems::Widgets::StartAndDueDateService::UpdateService do
let_it_be(:user) { create(:user) }
let_it_be(:project) { create(:project) }
let_it_be_with_reload(:work_item) { create(:work_item, project: project) }
let(:widget) { work_item.widgets.find { |widget| widget.is_a?(WorkItems::Widgets::StartAndDueDate) } }
describe '#before_update_callback' do
let(:start_date) { Date.today }
let(:due_date) { 1.week.from_now.to_date }
subject(:update_params) do
described_class.new(widget: widget, current_user: user).before_update_callback(params: params)
end
context 'when start and due date params are present' do
let(:params) { { start_date: Date.today, due_date: 1.week.from_now.to_date } }
it 'correctly sets date values' do
expect do
update_params
end.to change(work_item, :start_date).from(nil).to(start_date).and(
change(work_item, :due_date).from(nil).to(due_date)
)
end
end
context 'when date params are not present' do
let(:params) { {} }
it 'does not change work item date values' do
expect do
update_params
end.to not_change(work_item, :start_date).from(nil).and(
not_change(work_item, :due_date).from(nil)
)
end
end
context 'when work item had both date values already set' do
before do
work_item.update!(start_date: start_date, due_date: due_date)
end
context 'when one of the two params is null' do
let(:params) { { start_date: nil } }
it 'sets only one date to null' do
expect do
update_params
end.to change(work_item, :start_date).from(start_date).to(nil).and(
not_change(work_item, :due_date).from(due_date)
)
end
end
end
end
end