Skip to content

Commit 6abb2b2

Browse files
authored
Enum Bang setter (#82)
Add a bang method to set enum values
1 parent cbdc2cc commit 6abb2b2

File tree

3 files changed

+9
-1
lines changed

3 files changed

+9
-1
lines changed

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,8 +109,10 @@ enum = Kredis.enum "myenum", values: %w[ one two three ], default: "one"
109109
true == enum.one? # => GET myenum
110110
enum.value = "two" # => SET myenum "two"
111111
"two" == enum.value # => GET myenum
112+
enum.three! # => SET myenum "three"
113+
"three" == enum.value # => GET myenum
112114
enum.value = "four"
113-
"two" == enum.value # => GET myenum
115+
"three" == enum.value # => GET myenum
114116
enum.reset # => DEL myenum
115117
"one" == enum.value # => GET myenum
116118

lib/kredis/types/enum.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ def reset
2828
def define_predicates_for_values
2929
values.each do |defined_value|
3030
define_singleton_method("#{defined_value}?") { value == defined_value }
31+
define_singleton_method("#{defined_value}!") { self.value = defined_value }
3132
end
3233
end
3334
end

test/types/enum_test.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,11 @@ class EnumTest < ActiveSupport::TestCase
1414
assert @enum.two?
1515

1616
assert_not @enum.three?
17+
18+
@enum.three!
19+
assert @enum.three?
20+
21+
assert_not @enum.two?
1722
end
1823

1924
test "validated value" do

0 commit comments

Comments
 (0)