From fb7efc6acc7514f2e658e947f6709645e2a4c79d Mon Sep 17 00:00:00 2001 From: Damon Timm <damontimm@gmail.com> Date: Mon, 14 Dec 2020 17:19:23 -0500 Subject: [PATCH] Allow .find_enumbles to take an Enumbler::Enumble --- Gemfile.lock | 2 +- lib/enumbler/enabler.rb | 2 ++ lib/enumbler/version.rb | 2 +- spec/enumbler_spec.rb | 3 +++ 4 files changed, 7 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index c802fb9..e40ce6e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - enumbler (0.8.1) + enumbler (0.8.2) activerecord (>= 5.2.3, < 6.1) activesupport (>= 5.2.3, < 6.1) diff --git a/lib/enumbler/enabler.rb b/lib/enumbler/enabler.rb index 04a28d5..fc603f0 100644 --- a/lib/enumbler/enabler.rb +++ b/lib/enumbler/enabler.rb @@ -227,6 +227,8 @@ def find_enumbles(*args, case_sensitive: false, raise_error: false) enumble = if arg.is_a?(Symbol) @enumbled_model.enumbles.find { |e| e.enum == arg } + elsif arg.is_a?(Enumbler::Enumble) + @enumbled_model.enumbles.find { |e| e.enum == arg.enum } elsif arg.is_a?(String) @enumbled_model.enumbles.find do |e| if case_sensitive diff --git a/lib/enumbler/version.rb b/lib/enumbler/version.rb index 3324153..f81089c 100644 --- a/lib/enumbler/version.rb +++ b/lib/enumbler/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Enumbler - VERSION = '0.8.1' + VERSION = '0.8.2' end diff --git a/spec/enumbler_spec.rb b/spec/enumbler_spec.rb index 42b8cef..9bbacb4 100644 --- a/spec/enumbler_spec.rb +++ b/spec/enumbler_spec.rb @@ -322,11 +322,14 @@ class Sky < ApplicationRecord it 'returns the correct enumbles' do expect(Color.find_enumbles(1, 2)).to contain_exactly(Color.enumbles.first, Color.enumbles.second) expect(Color.find_enumble(1)).to eq Color.enumbles.first + expect(Color.find_enumble(Color.enumbles.first)).to eq Color.enumbles.first end + it 'can return an enumble based on a ActiveModel record' do color = Color.find(1) expect(Color.find_enumbles!(color)).to contain_exactly(color.enumble) end + it 'raises an error when something that is not an integer is passed' do expect { Color.find_enumbles('bob') }.not_to raise_error expect { Color.find_enumbles!('bob') }.to raise_error(Enumbler::Error, /bob/)