encorporate dombesz proposals

This commit is contained in:
ulferts
2025-09-10 17:16:24 +02:00
parent 30fd5412fc
commit 52053c6971
8 changed files with 35 additions and 29 deletions
@@ -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?
+3 -5
View File
@@ -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
-4
View File
@@ -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
+2 -2
View File
@@ -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