From 1f43e0d4d89fad3643dbdb5515db0b89cf83e91a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristijan=20Novoseli=C4=87?= Date: Tue, 17 Mar 2015 14:15:41 +0100 Subject: [PATCH 1/3] Got rid of deprecation messages due to usage of be_true and be_false --- .../enum/validators/multiple_validator_spec.rb | 16 ++++++++-------- spec/mongoid/enum_spec.rb | 8 ++++---- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/spec/mongoid/enum/validators/multiple_validator_spec.rb b/spec/mongoid/enum/validators/multiple_validator_spec.rb index 7791dc3..d47c605 100644 --- a/spec/mongoid/enum/validators/multiple_validator_spec.rb +++ b/spec/mongoid/enum/validators/multiple_validator_spec.rb @@ -16,14 +16,14 @@ describe Mongoid::Enum::Validators::MultipleValidator do context "and value is nil" do before(:each) { validator.validate_each(record, attribute, nil) } it "validates" do - expect(record.errors[attribute].empty?).to be_true + expect(record.errors[attribute].empty?).to be true end end context "and value is []" do before(:each) { validator.validate_each(record, attribute, []) } it "validates" do - expect(record.errors[attribute].empty?).to be_true + expect(record.errors[attribute].empty?).to be true end end end @@ -32,14 +32,14 @@ describe Mongoid::Enum::Validators::MultipleValidator do context "and value is nil" do before(:each) { validator.validate_each(record, attribute, nil) } it "won't validate" do - expect(record.errors[attribute].any?).to be_true + expect(record.errors[attribute].any?).to be true expect(record.errors[attribute]).to eq ["is not in #{values.join ", "}"] end end context "and value is []" do before(:each) { validator.validate_each(record, attribute, []) } it "won't validate" do - expect(record.errors[attribute].any?).to be_true + expect(record.errors[attribute].any?).to be true expect(record.errors[attribute]).to eq ["is not in #{values.join ", "}"] end end @@ -49,7 +49,7 @@ describe Mongoid::Enum::Validators::MultipleValidator do let(:allow_nil) { rand(2).zero? } before(:each) { validator.validate_each(record, attribute, [values.sample]) } it "validates" do - expect(record.errors[attribute].empty?).to be_true + expect(record.errors[attribute].empty?).to be true end end @@ -57,7 +57,7 @@ describe Mongoid::Enum::Validators::MultipleValidator do let(:allow_nil) { rand(2).zero? } before(:each) { validator.validate_each(record, attribute, [:amet]) } it "won't validate" do - expect(record.errors[attribute].any?).to be_true + expect(record.errors[attribute].any?).to be true end end @@ -65,7 +65,7 @@ describe Mongoid::Enum::Validators::MultipleValidator do let(:allow_nil) { rand(2).zero? } before(:each) { validator.validate_each(record, attribute, [values.first, values.last]) } it "validates" do - expect(record.errors[attribute].empty?).to be_true + expect(record.errors[attribute].empty?).to be true end end @@ -73,7 +73,7 @@ describe Mongoid::Enum::Validators::MultipleValidator do let(:allow_nil) { rand(2).zero? } before(:each) { validator.validate_each(record, attribute, [values.first, values.last, :amet]) } it "won't validate" do - expect(record.errors[attribute].any?).to be_true + expect(record.errors[attribute].any?).to be true end end end diff --git a/spec/mongoid/enum_spec.rb b/spec/mongoid/enum_spec.rb index 84e752d..6d49ceb 100644 --- a/spec/mongoid/enum_spec.rb +++ b/spec/mongoid/enum_spec.rb @@ -56,7 +56,7 @@ describe Mongoid::Enum do end end - describe "accessors"do + describe "accessors" do context "when singular" do describe "{{value}}!" do it "sets the value" do @@ -111,15 +111,15 @@ describe Mongoid::Enum do instance.save instance.author! instance.editor! - expect(instance.editor?).to be_true - expect(instance.author?).to be_true + expect(instance.editor?).to be true + expect(instance.author?).to be true end end context "when {{enum}} does not contain {{value}}" do it "returns false" do instance.save - expect(instance.author?).to be_false + expect(instance.author?).to be false end end end From 5a956c67e23a11942f8b4b338579176a4f725868 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristijan=20Novoseli=C4=87?= Date: Tue, 17 Mar 2015 14:47:46 +0100 Subject: [PATCH 2/3] Field prefix is now configurable --- lib/mongoid/enum.rb | 3 ++- lib/mongoid/enum/configuration.rb | 19 +++++++++++++++++ spec/mongoid/configuration_spec.rb | 11 ++++++++++ spec/mongoid/enum_spec.rb | 33 ++++++++++++++++++++++++++++++ 4 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 lib/mongoid/enum/configuration.rb create mode 100644 spec/mongoid/configuration_spec.rb diff --git a/lib/mongoid/enum.rb b/lib/mongoid/enum.rb index ac9a5f0..19b78b1 100644 --- a/lib/mongoid/enum.rb +++ b/lib/mongoid/enum.rb @@ -1,5 +1,6 @@ require "mongoid/enum/version" require "mongoid/enum/validators/multiple_validator" +require "mongoid/enum/configuration" module Mongoid module Enum @@ -7,7 +8,7 @@ module Mongoid module ClassMethods def enum(name, values, options = {}) - field_name = :"_#{name}" + field_name = :"#{Mongoid::Enum.configuration.field_name_prefix}#{name}" options = default_options(values).merge(options) set_values_constant name, values diff --git a/lib/mongoid/enum/configuration.rb b/lib/mongoid/enum/configuration.rb new file mode 100644 index 0000000..63a2e82 --- /dev/null +++ b/lib/mongoid/enum/configuration.rb @@ -0,0 +1,19 @@ +module Mongoid + module Enum + class Configuration + attr_accessor :field_name_prefix + + def initialize + self.field_name_prefix = '_' + end + end + + def self.configuration + @configuration ||= Configuration.new + end + + def self.configure + yield(configuration) if block_given? + end + end +end diff --git a/spec/mongoid/configuration_spec.rb b/spec/mongoid/configuration_spec.rb new file mode 100644 index 0000000..9ce7987 --- /dev/null +++ b/spec/mongoid/configuration_spec.rb @@ -0,0 +1,11 @@ +require 'spec_helper' + +describe Mongoid::Enum::Configuration do + subject { Mongoid::Enum::Configuration.new } + + describe "field_name_prefix" do + it "has '_' as default value" do + expect(subject.field_name_prefix).to eq '_' + end + end +end diff --git a/spec/mongoid/enum_spec.rb b/spec/mongoid/enum_spec.rb index 6d49ceb..1b70998 100644 --- a/spec/mongoid/enum_spec.rb +++ b/spec/mongoid/enum_spec.rb @@ -1,4 +1,5 @@ require 'spec_helper' +require 'mongoid/enum/configuration' class User include Mongoid::Document @@ -21,6 +22,23 @@ describe Mongoid::Enum do expect(klass).to have_field(field_name) end + it "uses prefix defined in configuration" do + old_field_name_prefix = Mongoid::Enum.configuration.field_name_prefix + Mongoid::Enum.configure do |config| + config.field_name_prefix = '___' + end + UserWithoutPrefix = Class.new do + include Mongoid::Document + include Mongoid::Enum + + enum :status, [:awaiting_approval, :approved, :banned] + end + expect(UserWithoutPrefix).to have_field '___status' + Mongoid::Enum.configure do |config| + config.field_name_prefix = old_field_name_prefix + end + end + it "is aliased" do expect(instance).to respond_to alias_name expect(instance).to respond_to :"#{alias_name}=" @@ -174,4 +192,19 @@ describe Mongoid::Enum do end end end + + describe ".configuration" do + it "returns Configuration object" do + expect(Mongoid::Enum.configuration).to be_instance_of Mongoid::Enum::Configuration + end + it "returns same object when called multiple times" do + expect(Mongoid::Enum.configuration).to be Mongoid::Enum.configuration + end + end + + describe ".configure" do + it "yields configuration if block is given" do + expect { |b| Mongoid::Enum.configure &b }.to yield_with_args Mongoid::Enum.configuration + end + end end From c2f9bfda27a344af2afe0f6ad289f58cf3313020 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristijan=20Novoseli=C4=87?= Date: Tue, 17 Mar 2015 15:11:50 +0100 Subject: [PATCH 3/3] Fixed formatting issues --- lib/mongoid/enum/configuration.rb | 2 +- spec/mongoid/configuration_spec.rb | 2 +- spec/mongoid/enum_spec.rb | 10 ++++++---- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/lib/mongoid/enum/configuration.rb b/lib/mongoid/enum/configuration.rb index 63a2e82..ed45df4 100644 --- a/lib/mongoid/enum/configuration.rb +++ b/lib/mongoid/enum/configuration.rb @@ -4,7 +4,7 @@ module Mongoid attr_accessor :field_name_prefix def initialize - self.field_name_prefix = '_' + self.field_name_prefix = "_" end end diff --git a/spec/mongoid/configuration_spec.rb b/spec/mongoid/configuration_spec.rb index 9ce7987..db04d68 100644 --- a/spec/mongoid/configuration_spec.rb +++ b/spec/mongoid/configuration_spec.rb @@ -5,7 +5,7 @@ describe Mongoid::Enum::Configuration do describe "field_name_prefix" do it "has '_' as default value" do - expect(subject.field_name_prefix).to eq '_' + expect(subject.field_name_prefix).to eq "_" end end end diff --git a/spec/mongoid/enum_spec.rb b/spec/mongoid/enum_spec.rb index 1b70998..e551df2 100644 --- a/spec/mongoid/enum_spec.rb +++ b/spec/mongoid/enum_spec.rb @@ -25,7 +25,7 @@ describe Mongoid::Enum do it "uses prefix defined in configuration" do old_field_name_prefix = Mongoid::Enum.configuration.field_name_prefix Mongoid::Enum.configure do |config| - config.field_name_prefix = '___' + config.field_name_prefix = "___" end UserWithoutPrefix = Class.new do include Mongoid::Document @@ -33,7 +33,7 @@ describe Mongoid::Enum do enum :status, [:awaiting_approval, :approved, :banned] end - expect(UserWithoutPrefix).to have_field '___status' + expect(UserWithoutPrefix).to have_field "___status" Mongoid::Enum.configure do |config| config.field_name_prefix = old_field_name_prefix end @@ -195,7 +195,8 @@ describe Mongoid::Enum do describe ".configuration" do it "returns Configuration object" do - expect(Mongoid::Enum.configuration).to be_instance_of Mongoid::Enum::Configuration + expect(Mongoid::Enum.configuration) + .to be_instance_of Mongoid::Enum::Configuration end it "returns same object when called multiple times" do expect(Mongoid::Enum.configuration).to be Mongoid::Enum.configuration @@ -204,7 +205,8 @@ describe Mongoid::Enum do describe ".configure" do it "yields configuration if block is given" do - expect { |b| Mongoid::Enum.configure &b }.to yield_with_args Mongoid::Enum.configuration + expect { |b| Mongoid::Enum.configure &b } + .to yield_with_args Mongoid::Enum.configuration end end end