[#43883] Journalizing toggling the ignore non working days property of a work package

pull/11244/head
Dmitrii 2 years ago
parent cfd47f2b4f
commit 96713fb35a
  1. 1
      app/models/journal.rb
  2. 1
      app/models/work_package/journalized.rb
  3. 4
      config/locales/en.yml
  4. 45
      lib/open_project/journal_formatter/ignore_non_working_days.rb
  5. 61
      spec/lib/journal_formatter/ignore_non_working_days_spec.rb

@ -37,6 +37,7 @@ class Journal < ApplicationRecord
register_journal_formatter :attachment, OpenProject::JournalFormatter::Attachment
register_journal_formatter :custom_field, OpenProject::JournalFormatter::CustomField
register_journal_formatter :schedule_manually, OpenProject::JournalFormatter::ScheduleManually
register_journal_formatter :ignore_non_working_days, OpenProject::JournalFormatter::IgnoreNonWorkingDays
# Make sure each journaled model instance only has unique version ids
validates :version, uniqueness: { scope: %i[journable_id journable_type] }

@ -94,6 +94,7 @@ module WorkPackage::Journalized
register_on_journal_formatter(:attachment, /attachments_?\d+/)
register_on_journal_formatter(:custom_field, /custom_fields_\d+/)
register_on_journal_formatter(:cost_association, 'budget_id')
register_on_journal_formatter(:ignore_non_working_days, 'ignore_non_working_days')
# Joined
register_on_journal_formatter :named_association, :parent_id, :project_id,

@ -592,6 +592,10 @@ en:
end_insertion: "End of the insertion"
end_deletion: "End of the deletion"
ignore_non_working_days: "Ignore non working days"
include_non_working_days:
title: 'Working days'
false: 'working days only'
true: 'include non-working days'
parent: "Parent"
parent_issue: "Parent"
parent_work_package: "Parent"

@ -0,0 +1,45 @@
#-- copyright
# OpenProject is an open source project management software.
# Copyright (C) 2012-2022 the OpenProject GmbH
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
# Copyright (C) 2006-2013 Jean-Philippe Lang
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# See COPYRIGHT and LICENSE files for more details.
#++
class OpenProject::JournalFormatter::IgnoreNonWorkingDays < JournalFormatter::Base
def format_details(_key, values, _options = {})
result = if values.last
I18n.t('activerecord.attributes.work_package.include_non_working_days.true')
else
I18n.t('activerecord.attributes.work_package.include_non_working_days.false')
end
[label, nil, result]
end
private
def label
I18n.t('activerecord.attributes.work_package.include_non_working_days.title')
end
end

@ -0,0 +1,61 @@
#-- copyright
# OpenProject is an open source project management software.
# Copyright (C) 2012-2022 the OpenProject GmbH
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
# Copyright (C) 2006-2013 Jean-Philippe Lang
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# See COPYRIGHT and LICENSE files for more details.
#++
require File.expand_path("#{File.dirname(__FILE__)}/../../spec_helper.rb")
describe OpenProject::JournalFormatter::IgnoreNonWorkingDays do
let(:klass) { described_class }
let(:id) { 1 }
let(:journal) do
instance_double(Journal, journable: WorkPackage.new)
end
let(:instance) { klass.new(journal) }
let(:key) { :ignore_non_working_days }
describe '#render' do
context 'when setting the old value to false, and the new value to true' do
let(:expected) do
I18n.t(:text_journal_set_to,
label: "<strong>Working days</strong>",
value: "<i title=\"include non-working days\">include non-working days</i>")
end
it { expect(instance.render(key, [false, true])).to eq(expected) }
end
context 'when setting the old value to true, and the new value to false' do
let(:expected) do
I18n.t(:text_journal_set_to,
label: "<strong>Working days</strong>",
value: "<i title=\"working days only\">working days only</i>")
end
it { expect(instance.render(key, [true, false])).to eq(expected) }
end
end
end
Loading…
Cancel
Save