From 14608fa8028f58c42c90d946d212f8853c0dc0f4 Mon Sep 17 00:00:00 2001 From: jack5505 Date: Thu, 8 Oct 2026 09:11:06 +0200 Subject: [PATCH] #1425: unwrap the PMP levels in bylaws, so anger, love and paranoia from Fbe.pmp are accepted --- lib/fbe/bylaws.rb | 2 ++ test/fbe/test_bylaws.rb | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/lib/fbe/bylaws.rb b/lib/fbe/bylaws.rb index c76ccf72..1a95849d 100644 --- a/lib/fbe/bylaws.rb +++ b/lib/fbe/bylaws.rb @@ -3,6 +3,7 @@ # SPDX-FileCopyrightText: Copyright (c) 2024-2026 Zerocracy # SPDX-License-Identifier: MIT +require 'delegate' require 'liquid' require_relative '../fbe' @@ -48,6 +49,7 @@ # # \"deduct ${fee} points\") # # )" def Fbe.bylaws(anger: 2, love: 2, paranoia: 2) + anger, love, paranoia = [anger, love, paranoia].map { |v| v.is_a?(Delegator) ? v.__getobj__ : v } raise(Fbe::Error, "The 'anger' must be an Integer: #{anger.inspect}") unless anger.is_a?(Integer) raise(Fbe::Error, "The 'anger' must be in the [0..4] interval: #{anger.inspect}") unless !anger.negative? && anger < 5 raise(Fbe::Error, "The 'love' must be an Integer: #{love.inspect}") unless love.is_a?(Integer) diff --git a/test/fbe/test_bylaws.rb b/test/fbe/test_bylaws.rb index b3326055..09e76d9e 100644 --- a/test/fbe/test_bylaws.rb +++ b/test/fbe/test_bylaws.rb @@ -3,10 +3,13 @@ # SPDX-FileCopyrightText: Copyright (c) 2024-2026 Zerocracy # SPDX-License-Identifier: MIT +require 'factbase' +require 'judges/options' require 'loog' require 'tmpdir' require_relative '../../lib/fbe/award' require_relative '../../lib/fbe/bylaws' +require_relative '../../lib/fbe/pmp' require_relative '../test__helper' # Test. @@ -236,4 +239,20 @@ def test_rejects_non_integer_levels end end end + + def test_accepts_levels_from_pmp + fb = Factbase.new + { 'hr' => ['anger', 4], 'cost' => ['love', 1], 'quality' => ['paranoia', 3] }.each do |area, (name, value)| + f = fb.insert + f.what = 'pmp' + f.area = area + f.public_send(:"#{name}=", value) + end + pmp = Fbe.pmp(fb:, global: {}, options: Judges::Options.new, loog: Loog::NULL) + assert_equal( + Fbe.bylaws(anger: 4, love: 1, paranoia: 3), + Fbe.bylaws(anger: pmp.hr.anger, love: pmp.cost.love, paranoia: pmp.quality.paranoia), + 'the levels from the PMP were not taken as Integers' + ) + end end