mirror of
https://github.com/opf/openproject.git
synced 2026-06-13 19:20:00 +00:00
encorporate dombesz proposals
This commit is contained in:
@@ -53,8 +53,8 @@ module Admin
|
||||
form.check_box(
|
||||
name: :active,
|
||||
label: object.class.human_attribute_name(:active),
|
||||
data: { action: "admin--enumerations#lockstepDefault",
|
||||
"admin--enumerations-target": "active" }
|
||||
disabled: object.is_default,
|
||||
data: { "admin--enumerations-target": "active" }
|
||||
)
|
||||
|
||||
if object.class.can_have_default_value?
|
||||
|
||||
@@ -37,6 +37,7 @@ class Enumeration < ApplicationRecord
|
||||
acts_as_tree order: "position ASC"
|
||||
|
||||
before_save :unmark_old_default_value, if: :became_default_value?
|
||||
before_save :ensure_activated, if: -> { self.class.can_have_default_value? && is_default? }
|
||||
before_destroy :check_integrity
|
||||
|
||||
validates :name, presence: true
|
||||
@@ -44,7 +45,6 @@ class Enumeration < ApplicationRecord
|
||||
uniqueness: { scope: %i(type project_id),
|
||||
case_sensitive: false }
|
||||
validates :name, length: { maximum: 256 }
|
||||
validate :default_is_active, if: -> { self.class.can_have_default_value? }
|
||||
|
||||
scope :shared, -> { where(project_id: nil) }
|
||||
scope :active, -> { where(active: true) }
|
||||
@@ -175,9 +175,7 @@ class Enumeration < ApplicationRecord
|
||||
raise "Can't delete enumeration" if in_use?
|
||||
end
|
||||
|
||||
def default_is_active
|
||||
if is_default? && !active?
|
||||
errors.add(:is_default, :active_required)
|
||||
end
|
||||
def ensure_activated
|
||||
self.active = true
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1463,10 +1463,6 @@ en:
|
||||
only_one_trial: "Only one trial token can be active. Please delete the previous trial token before adding another."
|
||||
unreadable: "can't be read. Are you sure it is a support token?"
|
||||
already_added: "This token has already been added."
|
||||
enumeration:
|
||||
attributes:
|
||||
active:
|
||||
active_required: "needs the 'Active' property to be true."
|
||||
grids/grid:
|
||||
overlaps: "overlap."
|
||||
outside: "is outside of the grid."
|
||||
|
||||
@@ -44,12 +44,9 @@ export default class EnumerationsController extends Controller {
|
||||
public lockstepActive() {
|
||||
if (this.defaultTarget.checked) {
|
||||
this.activeTarget.checked = true;
|
||||
}
|
||||
}
|
||||
|
||||
public lockstepDefault() {
|
||||
if (!this.activeTarget.checked && this.hasDefaultTarget) {
|
||||
this.defaultTarget.checked = false;
|
||||
this.activeTarget.disabled = true;
|
||||
} else {
|
||||
this.activeTarget.disabled = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -55,7 +55,7 @@ RSpec.describe TimeEntryActivity do
|
||||
end
|
||||
end
|
||||
|
||||
it_behaves_like "enumeration validation", false do
|
||||
let(:enumeration) { build_stubbed(:time_entry_activity) }
|
||||
it_behaves_like "enumeration#active handling", false do
|
||||
let(:enumeration) { described_class.new(attributes_for(:time_entry_activity)) }
|
||||
end
|
||||
end
|
||||
|
||||
@@ -61,7 +61,7 @@ RSpec.describe DocumentCategory do
|
||||
end.to change { old_default.is_default? }.from(true).to(false)
|
||||
end
|
||||
|
||||
it_behaves_like "enumeration validation", true do
|
||||
let(:enumeration) { build_stubbed(:document_category) }
|
||||
it_behaves_like "enumeration#active handling", true do
|
||||
let(:enumeration) { described_class.new(attributes_for(:document_category)) }
|
||||
end
|
||||
end
|
||||
|
||||
@@ -30,22 +30,37 @@
|
||||
|
||||
require "spec_helper"
|
||||
|
||||
RSpec.shared_context "enumeration validation" do |default_supported| # rubocop:disable RSpec/ContextWording
|
||||
RSpec.shared_context "enumeration#active handling" do |default_supported| # rubocop:disable RSpec/ContextWording
|
||||
let(:enumeration) do
|
||||
super()
|
||||
rescue NoMethodError
|
||||
raise "'enumeration' let needs to be set"
|
||||
end
|
||||
|
||||
describe "#valid?" do
|
||||
describe "#active" do
|
||||
if default_supported
|
||||
context "with the enumeration being inactive and default" do
|
||||
it "is invalid", :aggregate_failures do
|
||||
context "with the enumeration being inactive and default before saving" do
|
||||
it "sets the enumeration to be active", :aggregate_failures do
|
||||
enumeration.active = false
|
||||
enumeration.is_default = true
|
||||
|
||||
expect(enumeration.valid?).to be false
|
||||
expect(enumeration.errors.symbols_for(:is_default)).to contain_exactly(:active_required)
|
||||
enumeration.save
|
||||
|
||||
expect(enumeration).to be_persisted
|
||||
expect(enumeration.active).to be true
|
||||
end
|
||||
end
|
||||
|
||||
context "with the enumeration being inactive and not default before saving" do
|
||||
it "keeps the value of active", :aggregate_failures do
|
||||
enumeration.active = false
|
||||
enumeration.is_default = false
|
||||
|
||||
enumeration.save
|
||||
|
||||
expect(enumeration).to be_persisted
|
||||
expect(enumeration.active).to be false
|
||||
expect(enumeration.is_default).to be false
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -37,8 +37,8 @@ RSpec.describe IssuePriority do
|
||||
|
||||
let(:stubbed_priority) { build_stubbed(:priority) }
|
||||
|
||||
it_behaves_like "enumeration validation", true do
|
||||
let(:enumeration) { build_stubbed(:priority) }
|
||||
it_behaves_like "enumeration#active handling", true do
|
||||
let(:enumeration) { described_class.new(attributes_for(:priority)) }
|
||||
end
|
||||
|
||||
describe ".ancestors" do
|
||||
|
||||
Reference in New Issue
Block a user