diff -Nru ruby-enumerize-2.3.1/CHANGELOG.md ruby-enumerize-2.4.0/CHANGELOG.md --- ruby-enumerize-2.3.1/CHANGELOG.md 2019-05-06 13:59:05.000000000 +0000 +++ ruby-enumerize-2.4.0/CHANGELOG.md 2021-01-29 00:09:33.000000000 +0000 @@ -1,9 +1,18 @@ -## master +## 2.4.0 (December 12, 2020) ### enhancements +* Show warning when enumerized value name conflicts with existing object's methods. (by [@aki77](https://github.com/aki77)) +* Add RSpec support for shallow scopes. (by [@nashby](https://github.com/nashby)) +* Drop support for Ruby older than 2.5. Support only Ruby 2.5+. (by [@nashby](https://github.com/nashby)) +* Drop support for Rails 4. Support only Rails 5.2+. (by [@nashby](https://github.com/nashby)) +* Add support for Rails 6.1 (by [@y-yagi](https://github.com/y-yagi)) + ### bug fix +* Fix exception when using predicate methods on enumerized value transformed into invalid value. (by [@guigs](https://github.com/guigs)) +* Fix issue with RSpec#with_predicates matcher when custom values are used as attribute. (by [@nashby](https://github.com/nashby)) + ## 2.3.1 (May 2, 2019) ### enhancements diff -Nru ruby-enumerize-2.3.1/debian/changelog ruby-enumerize-2.4.0/debian/changelog --- ruby-enumerize-2.3.1/debian/changelog 2020-09-09 20:54:51.000000000 +0000 +++ ruby-enumerize-2.4.0/debian/changelog 2021-11-29 03:15:23.000000000 +0000 @@ -1,3 +1,18 @@ +ruby-enumerize (2.4.0-1) unstable; urgency=medium + + * Team upload. + * New upstream release. + - Add Rails 6.1 support. + * d/control (Standards-Version): Bump to 4.6.0. + * d/copyright: Add Upstream-Contact field. + (Copyright): Add team. + * d/rules: Install upstream changelog. + * d/patches/disable_some_tests.patch: Adjust patch. + - Remove test failing with Ruby 3.0 (upstream issue #383). + * d/upstream/metadata: Update Changelog URL. + + -- Daniel Leidert Mon, 29 Nov 2021 04:15:23 +0100 + ruby-enumerize (2.3.1-1) unstable; urgency=medium [ Utkarsh Gupta ] diff -Nru ruby-enumerize-2.3.1/debian/control ruby-enumerize-2.4.0/debian/control --- ruby-enumerize-2.3.1/debian/control 2020-09-09 20:54:51.000000000 +0000 +++ ruby-enumerize-2.4.0/debian/control 2021-11-29 03:15:23.000000000 +0000 @@ -10,7 +10,7 @@ rake, ruby-sequel, ruby-sqlite3 -Standards-Version: 4.5.0 +Standards-Version: 4.6.0 Vcs-Git: https://salsa.debian.org/ruby-team/ruby-enumerize.git Vcs-Browser: https://salsa.debian.org/ruby-team/ruby-enumerize Homepage: https://github.com/brainspec/enumerize @@ -24,7 +24,6 @@ Depends: ${misc:Depends}, ${ruby:Depends}, ${shlibs:Depends}, - ruby-activesupport (>= 3.2), ruby-i18n Description: enumerated attributes with internationalisation This library implements enumerated attributes, with internationalisation diff -Nru ruby-enumerize-2.3.1/debian/copyright ruby-enumerize-2.4.0/debian/copyright --- ruby-enumerize-2.3.1/debian/copyright 2020-09-09 20:54:51.000000000 +0000 +++ ruby-enumerize-2.4.0/debian/copyright 2021-11-29 03:15:23.000000000 +0000 @@ -1,5 +1,6 @@ Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: enumerize +Upstream-Contact: https://github.com/brainspec/enumerize/issues Source: https://github.com/brainspec/enumerize Files: * @@ -9,8 +10,9 @@ Files: debian/* Copyright: 2015 Cédric Boutillier + 2021 Debian Ruby Extras Maintainers License: Expat -Comment: the Debian packaging is licensed under the same terms as the original package. +Comment: The Debian packaging is licensed under the same terms as the source. License: Expat Permission is hereby granted, free of charge, to any person obtaining diff -Nru ruby-enumerize-2.3.1/debian/patches/disable_some_tests.patch ruby-enumerize-2.4.0/debian/patches/disable_some_tests.patch --- ruby-enumerize-2.3.1/debian/patches/disable_some_tests.patch 2020-09-09 20:54:51.000000000 +0000 +++ ruby-enumerize-2.4.0/debian/patches/disable_some_tests.patch 2021-11-29 03:15:23.000000000 +0000 @@ -1,13 +1,24 @@ -Description: disable tests using simple_form or formtastic gems - Here we just prevent these gems to be loaded. The actual exclusion happens in - debian/ruby-tests.rake. -Author: Cédric Boutillier +From: Cédric Boutillier +Date: Thu, 23 Apr 2015 10:34:34 +0200 +Subject: disable tests using simple_form or formtastic gems + +Here we just prevent these gems to be loaded. The actual exclusion happens in +debian/ruby-tests.rake. + +The last patch is for Ruby 3.0 and taken from upstream. + +Origin: https://github.com/brainspec/enumerize/commit/a05018bb9bc96bd0588e681ccc5072025423622e.patch Forwarded: not-needed -Last-Update: 2020-09-09 +--- + test/test_helper.rb | 6 +----- + test/value_test.rb | 6 ------ + 2 files changed, 1 insertion(+), 11 deletions(-) +diff --git a/test/test_helper.rb b/test/test_helper.rb +index df6a698..a9b4ba1 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb -@@ -4,6 +4,7 @@ +@@ -4,6 +4,7 @@ require 'minitest/autorun' require 'minitest/spec' require 'active_support/core_ext/kernel/reporting' require 'active_model' @@ -15,7 +26,7 @@ require 'rails' begin require 'mongoid' -@@ -13,11 +14,6 @@ +@@ -13,11 +14,6 @@ end module RailsAdmin end @@ -27,3 +38,20 @@ module EnumerizeTest class Application < Rails::Application config.active_support.deprecation = :stderr +diff --git a/test/value_test.rb b/test/value_test.rb +index 68a43fe..e39b8d9 100644 +--- a/test/value_test.rb ++++ b/test/value_test.rb +@@ -85,12 +85,6 @@ describe Enumerize::Value do + end + end + +- it 'returns nil if value was modified' do +- store_translations(:en, :enumerize => {:attribute_name => {:test_value => "Common translation"}}) do +- modified_val = val.upcase +- modified_val.text.must_be_nil +- end +- end + end + + describe 'boolean methods comparison' do diff -Nru ruby-enumerize-2.3.1/debian/rules ruby-enumerize-2.4.0/debian/rules --- ruby-enumerize-2.3.1/debian/rules 2020-09-09 20:54:51.000000000 +0000 +++ ruby-enumerize-2.4.0/debian/rules 2021-11-29 03:15:23.000000000 +0000 @@ -5,3 +5,6 @@ %: dh $@ --buildsystem=ruby --with ruby + +override_dh_installchangelogs: + dh_installchangelogs CHANGELOG.md diff -Nru ruby-enumerize-2.3.1/debian/salsa-ci.yml ruby-enumerize-2.4.0/debian/salsa-ci.yml --- ruby-enumerize-2.3.1/debian/salsa-ci.yml 1970-01-01 00:00:00.000000000 +0000 +++ ruby-enumerize-2.4.0/debian/salsa-ci.yml 2021-11-29 03:15:23.000000000 +0000 @@ -0,0 +1,4 @@ +--- +include: + - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/salsa-ci.yml + - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/pipeline-jobs.yml diff -Nru ruby-enumerize-2.3.1/debian/upstream/metadata ruby-enumerize-2.4.0/debian/upstream/metadata --- ruby-enumerize-2.3.1/debian/upstream/metadata 2020-09-09 20:54:51.000000000 +0000 +++ ruby-enumerize-2.4.0/debian/upstream/metadata 2021-11-29 03:15:23.000000000 +0000 @@ -2,6 +2,6 @@ Archive: GitHub Bug-Database: https://github.com/brainspec/enumerize/issues Bug-Submit: https://github.com/brainspec/enumerize/issues/new -Changelog: https://github.com/brainspec/enumerize/tags +Changelog: https://github.com/brainspec/enumerize/blob/master/CHANGELOG.md Repository: https://github.com/brainspec/enumerize.git Repository-Browse: https://github.com/brainspec/enumerize diff -Nru ruby-enumerize-2.3.1/Gemfile ruby-enumerize-2.4.0/Gemfile --- ruby-enumerize-2.3.1/Gemfile 2019-05-06 13:59:05.000000000 +0000 +++ ruby-enumerize-2.4.0/Gemfile 2021-01-29 00:09:33.000000000 +0000 @@ -1,7 +1,6 @@ eval_gemfile('Gemfile.global') gem 'minitest', '~> 5.8' -gem 'rails', '5.1.4', require: false -gem 'activerecord-jdbcsqlite3-adapter', '~> 51.0', platform: :jruby -gem 'activerecord-jdbcpostgresql-adapter', '~> 51.0', platform: :jruby +gem 'rails', '~> 5.2.4', require: false gem 'mongoid' +gem 'sqlite3', '~> 1.3.6', :platform => [:ruby, :mswin, :mingw] diff -Nru ruby-enumerize-2.3.1/Gemfile.global ruby-enumerize-2.4.0/Gemfile.global --- ruby-enumerize-2.3.1/Gemfile.global 2019-05-06 13:59:05.000000000 +0000 +++ ruby-enumerize-2.4.0/Gemfile.global 2021-01-29 00:09:33.000000000 +0000 @@ -5,8 +5,7 @@ gem 'rake' gem 'rspec', :require => false -gem 'sqlite3', '~> 1.3.6', :platform => [:ruby, :mswin, :mingw] -gem 'pg', '~> 0.21.0', :platform => [:ruby, :mswin, :mingw] +gem 'pg', '~> 1.2.3', :platform => [:ruby, :mswin, :mingw] gem 'sequel' platforms :rbx do diff -Nru ruby-enumerize-2.3.1/Gemfile.mongo_mapper ruby-enumerize-2.4.0/Gemfile.mongo_mapper --- ruby-enumerize-2.3.1/Gemfile.mongo_mapper 2019-05-06 13:59:05.000000000 +0000 +++ ruby-enumerize-2.4.0/Gemfile.mongo_mapper 2021-01-29 00:09:33.000000000 +0000 @@ -1,7 +1,6 @@ eval_gemfile('Gemfile.global') gem 'minitest', '~> 5.8' -gem 'rails', '4.2.8', :require => false -gem 'activerecord-jdbcsqlite3-adapter', '~> 1.3.0', platform: :jruby -gem 'activerecord-jdbcpostgresql-adapter', '~> 1.3.0', platform: :jruby +gem 'rails', '~> 5.2.4', :require => false gem 'mongo_mapper' +gem 'sqlite3', '~> 1.3.6', :platform => [:ruby, :mswin, :mingw] diff -Nru ruby-enumerize-2.3.1/Gemfile.rails42 ruby-enumerize-2.4.0/Gemfile.rails42 --- ruby-enumerize-2.3.1/Gemfile.rails42 2019-05-06 13:59:05.000000000 +0000 +++ ruby-enumerize-2.4.0/Gemfile.rails42 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -eval_gemfile('Gemfile.global') - -gem 'minitest', '~> 5.8' -gem 'rails', '4.2.8', :require => false -gem 'activerecord-jdbcsqlite3-adapter', '~> 1.3.0', platform: :jruby -gem 'activerecord-jdbcpostgresql-adapter', '~> 1.3.0', platform: :jruby -gem 'mongoid', '~> 5.0' diff -Nru ruby-enumerize-2.3.1/Gemfile.rails50 ruby-enumerize-2.4.0/Gemfile.rails50 --- ruby-enumerize-2.3.1/Gemfile.rails50 2019-05-06 13:59:05.000000000 +0000 +++ ruby-enumerize-2.4.0/Gemfile.rails50 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -eval_gemfile('Gemfile.global') - -gem 'minitest', '~> 5.8' -gem 'rails', '5.0.6', require: false -gem 'activerecord-jdbcsqlite3-adapter', '~> 51.0', platform: :jruby -gem 'activerecord-jdbcpostgresql-adapter', '~> 51.0', platform: :jruby -gem 'mongoid' diff -Nru ruby-enumerize-2.3.1/Gemfile.rails52 ruby-enumerize-2.4.0/Gemfile.rails52 --- ruby-enumerize-2.3.1/Gemfile.rails52 2019-05-06 13:59:05.000000000 +0000 +++ ruby-enumerize-2.4.0/Gemfile.rails52 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -eval_gemfile('Gemfile.global') - -gem 'minitest', '~> 5.8' -gem 'rails', '5.2.0.rc1', require: false -gem 'activerecord-jdbcsqlite3-adapter', github: 'jruby/activerecord-jdbc-adapter', branch: 'master', platform: :jruby -gem 'activerecord-jdbcpostgresql-adapter', github: 'jruby/activerecord-jdbc-adapter', branch: 'master', platform: :jruby -gem 'mongoid', github: 'mongodb/mongoid' diff -Nru ruby-enumerize-2.3.1/Gemfile.rails60 ruby-enumerize-2.4.0/Gemfile.rails60 --- ruby-enumerize-2.3.1/Gemfile.rails60 1970-01-01 00:00:00.000000000 +0000 +++ ruby-enumerize-2.4.0/Gemfile.rails60 2021-01-29 00:09:33.000000000 +0000 @@ -0,0 +1,6 @@ +eval_gemfile('Gemfile.global') + +gem 'minitest', '~> 5.8' +gem 'rails', '~> 6.0.0', require: false +gem 'mongoid', github: 'mongodb/mongoid' +gem 'sqlite3', :platform => [:ruby, :mswin, :mingw] diff -Nru ruby-enumerize-2.3.1/Gemfile.rails61 ruby-enumerize-2.4.0/Gemfile.rails61 --- ruby-enumerize-2.3.1/Gemfile.rails61 1970-01-01 00:00:00.000000000 +0000 +++ ruby-enumerize-2.4.0/Gemfile.rails61 2021-01-29 00:09:33.000000000 +0000 @@ -0,0 +1,6 @@ +eval_gemfile('Gemfile.global') + +gem 'minitest', '~> 5.8' +gem 'rails', github: 'rails/rails', branch: '6-1-stable', require: false +gem 'mongoid', github: 'mongodb/mongoid' +gem 'sqlite3', :platform => [:ruby, :mswin, :mingw] diff -Nru ruby-enumerize-2.3.1/lib/enumerize/activerecord.rb ruby-enumerize-2.4.0/lib/enumerize/activerecord.rb --- ruby-enumerize-2.3.1/lib/enumerize/activerecord.rb 2019-05-06 13:59:05.000000000 +0000 +++ ruby-enumerize-2.4.0/lib/enumerize/activerecord.rb 2021-01-29 00:09:33.000000000 +0000 @@ -21,8 +21,14 @@ require 'enumerize/hooks/uniqueness' unless options[:multiple] - decorate_attribute_type(name, :enumerize) do |subtype| - Type.new(enumerized_attributes[name], subtype) + if ::ActiveRecord.version >= ::Gem::Version.new("6.1.0.alpha") + decorate_attribute_type(name.to_s) do |subtype| + Type.new(enumerized_attributes[name], subtype) + end + else + decorate_attribute_type(name, :enumerize) do |subtype| + Type.new(enumerized_attributes[name], subtype) + end end end end diff -Nru ruby-enumerize-2.3.1/lib/enumerize/attribute.rb ruby-enumerize-2.4.0/lib/enumerize/attribute.rb --- ruby-enumerize-2.3.1/lib/enumerize/attribute.rb 2019-05-06 13:59:05.000000000 +0000 +++ ruby-enumerize-2.4.0/lib/enumerize/attribute.rb 2021-01-29 00:09:33.000000000 +0000 @@ -172,7 +172,7 @@ def #{name}=(values) @_#{name}_enumerized_set = Enumerize::Set.new(self, self.class.enumerized_attributes[:#{name}], values) - raw_values = #{name}.values.map(&:value) + raw_values = self.#{name}.values.map(&:value) if defined?(super) super raw_values @@ -184,7 +184,7 @@ _enumerized_values_for_validation['#{name}'] = values.respond_to?(:map) ? values.reject(&:blank?).map(&:to_s) : values - #{name} + self.#{name} end RUBY end diff -Nru ruby-enumerize-2.3.1/lib/enumerize/integrations/rspec/matcher.rb ruby-enumerize-2.4.0/lib/enumerize/integrations/rspec/matcher.rb --- ruby-enumerize-2.3.1/lib/enumerize/integrations/rspec/matcher.rb 2019-05-06 13:59:05.000000000 +0000 +++ ruby-enumerize-2.4.0/lib/enumerize/integrations/rspec/matcher.rb 2021-01-29 00:09:33.000000000 +0000 @@ -110,7 +110,7 @@ def matches_predicates? if expected_predicates.is_a?(TrueClass) - subject.respond_to?("#{sorted_values.first}?") + subject.respond_to?("#{enumerized_values.first}?") else subject.respond_to?("#{expected_attr}_#{attributes.values.first}?") end @@ -121,8 +121,11 @@ end def matches_scope? - if expected_scope.is_a?(TrueClass) + case expected_scope + when TrueClass subject_class.respond_to?("with_#{expected_attr}") + when :shallow + enumerized_values.all? { |value| subject_class.respond_to?(value) } else subject_class.respond_to?(expected_scope[:scope]) end diff -Nru ruby-enumerize-2.3.1/lib/enumerize/predicatable.rb ruby-enumerize-2.4.0/lib/enumerize/predicatable.rb --- ruby-enumerize-2.3.1/lib/enumerize/predicatable.rb 2019-05-06 13:59:05.000000000 +0000 +++ ruby-enumerize-2.4.0/lib/enumerize/predicatable.rb 2021-01-29 00:09:33.000000000 +0000 @@ -17,7 +17,7 @@ end def predicate_method?(method) - method[-1] == '?' && @attr.values.include?(method[0..-2]) + method[-1] == '?' && @attr && @attr.values.include?(method[0..-2]) end end end diff -Nru ruby-enumerize-2.3.1/lib/enumerize/value.rb ruby-enumerize-2.4.0/lib/enumerize/value.rb --- ruby-enumerize-2.3.1/lib/enumerize/value.rb 2019-05-06 13:59:05.000000000 +0000 +++ ruby-enumerize-2.4.0/lib/enumerize/value.rb 2021-01-29 00:09:33.000000000 +0000 @@ -1,6 +1,7 @@ # frozen_string_literal: true require 'i18n' +require 'active_support/inflector' module Enumerize class Value < String @@ -9,6 +10,10 @@ attr_reader :value def initialize(attr, name, value=nil) + if self.class.method_defined?("#{name}?") + warn("It's not recommended to use `#{name}` as a field value since `#{name}?` is defined. (#{attr.klass.name}##{attr.name})") + end + @attr = attr @value = value.nil? ? name.to_s : value @@ -17,12 +22,12 @@ @i18n_keys = @attr.i18n_scopes.map { |s| :"#{s}.#{self}" } @i18n_keys << :"enumerize.defaults.#{@attr.name}.#{self}" @i18n_keys << :"enumerize.#{@attr.name}.#{self}" - @i18n_keys << self.underscore.humanize # humanize value if there are no translations + @i18n_keys << ActiveSupport::Inflector.humanize(ActiveSupport::Inflector.underscore(self)) # humanize value if there are no translations @i18n_keys end def text - I18n.t(@i18n_keys[0], :default => @i18n_keys[1..-1]) + I18n.t(@i18n_keys[0], :default => @i18n_keys[1..-1]) if @i18n_keys end def ==(other) diff -Nru ruby-enumerize-2.3.1/lib/enumerize/version.rb ruby-enumerize-2.4.0/lib/enumerize/version.rb --- ruby-enumerize-2.3.1/lib/enumerize/version.rb 2019-05-06 13:59:05.000000000 +0000 +++ ruby-enumerize-2.4.0/lib/enumerize/version.rb 2021-01-29 00:09:33.000000000 +0000 @@ -1,5 +1,5 @@ # frozen_string_literal: true module Enumerize - VERSION = '2.3.1' + VERSION = '2.4.0' end diff -Nru ruby-enumerize-2.3.1/lib/enumerize.rb ruby-enumerize-2.4.0/lib/enumerize.rb --- ruby-enumerize-2.3.1/lib/enumerize.rb 2019-05-06 13:59:05.000000000 +0000 +++ ruby-enumerize-2.4.0/lib/enumerize.rb 2021-01-29 00:09:33.000000000 +0000 @@ -1,6 +1,7 @@ # frozen_string_literal: true require 'active_support/concern' +require 'active_support/core_ext/object/blank' require 'enumerize/version' module Enumerize diff -Nru ruby-enumerize-2.3.1/README.md ruby-enumerize-2.4.0/README.md --- ruby-enumerize-2.3.1/README.md 2019-05-06 13:59:05.000000000 +0000 +++ ruby-enumerize-2.4.0/README.md 2021-01-29 00:09:33.000000000 +0000 @@ -1,4 +1,4 @@ -# Enumerize [![TravisCI](https://secure.travis-ci.org/brainspec/enumerize.svg?branch=master)](http://travis-ci.org/brainspec/enumerize) [![Gemnasium](https://gemnasium.com/brainspec/enumerize.svg)](https://gemnasium.com/brainspec/enumerize) +# Enumerize [![TravisCI](https://secure.travis-ci.org/brainspec/enumerize.svg?branch=master)](http://travis-ci.org/brainspec/enumerize) Enumerated attributes with I18n and ActiveRecord/Mongoid/MongoMapper/Sequel support @@ -17,8 +17,8 @@ $ gem install enumerize ## Supported Versions -- Ruby 2.2+ -- Rails 4.2+ +- Ruby 2.5+ +- Rails 5.2+ ## Usage diff -Nru ruby-enumerize-2.3.1/spec/enumerize/integrations/rspec/matcher_spec.rb ruby-enumerize-2.4.0/spec/enumerize/integrations/rspec/matcher_spec.rb --- ruby-enumerize-2.3.1/spec/enumerize/integrations/rspec/matcher_spec.rb 2019-05-06 13:59:05.000000000 +0000 +++ ruby-enumerize-2.4.0/spec/enumerize/integrations/rspec/matcher_spec.rb 2021-01-29 00:09:33.000000000 +0000 @@ -13,6 +13,7 @@ t.string :sex t.string :role t.string :account_type + t.string :status end end @@ -22,6 +23,7 @@ enumerize :sex, :in => [:male, :female], scope: true enumerize :role, :in => [:user, :admin], scope: :having_role enumerize :account_type, :in => [:basic, :premium] + enumerize :status, :in => [:active, :disabled], scope: :shallow end RSpec.describe Enumerize::Integrations::RSpec::Matcher do @@ -41,7 +43,6 @@ end describe 'without qualifier' do - it 'accepts when has defined a enumerize' do model.enumerize(:sex, :in => [:male, :female]) expect(subject).to enumerize(:sex) @@ -56,9 +57,7 @@ end describe '#in' do - context 'defined as array' do - before do model.enumerize(:sex, :in => [:male, :female]) end @@ -91,7 +90,6 @@ end context 'defined as hash' do - before do model.enumerize(:sex, :in => { male: 0, female: 1 }) end @@ -130,7 +128,6 @@ end describe '#with_default' do - before do model.enumerize(:sex, :in => [:male, :female], default: :female) end @@ -161,9 +158,7 @@ end describe '#with_i18n_scope' do - context 'defined as string' do - before do model.enumerize(:sex, :in => [:male, :female], i18n_scope: 'sex') end @@ -200,7 +195,6 @@ end describe '#with_predicates' do - it 'accepts when predicates is defined as a boolean' do model.enumerize(:sex, :in => [:male, :female], predicates: true) expect(subject).to enumerize(:sex).in(:male, :female).with_predicates(true) @@ -211,6 +205,11 @@ expect(subject).to enumerize(:sex).in(:male, :female).with_predicates(prefix: true) end + it 'accepts when custom values are used as attribute' do + model.enumerize(:sex, :in => { male: 0, female: 1 }, predicates: true) + expect(subject).to enumerize(:sex).in(:male, :female).with_predicates(true) + end + it 'rejects when predicates is not defined' do model.enumerize(:sex, :in => [:male, :female]) message = 'Expected Model to define enumerize :sex in: "female", "male" predicates: true' @@ -221,7 +220,6 @@ end describe '#with_multiple' do - it 'accepts when has defined the multiple' do model.enumerize(:sex, :in => [:male, :female], multiple: true) expect(subject).to enumerize(:sex).in(:male, :female).with_multiple(true) @@ -237,7 +235,6 @@ end describe '#with_scope' do - subject do User.new end @@ -250,6 +247,10 @@ expect(subject).to enumerize(:role).in(:user, :admin).with_scope(scope: :having_role) end + it 'accepts shallow scope' do + expect(subject).to enumerize(:status).in(:active, :disabled).with_scope(:shallow) + end + it 'rejects when scope is not defined' do message = 'Expected User to define enumerize :account_type in: "basic", "premium" scope: true' expect do diff -Nru ruby-enumerize-2.3.1/test/activerecord_test.rb ruby-enumerize-2.4.0/test/activerecord_test.rb --- ruby-enumerize-2.3.1/test/activerecord_test.rb 2019-05-06 13:59:05.000000000 +0000 +++ ruby-enumerize-2.4.0/test/activerecord_test.rb 2021-01-29 00:09:33.000000000 +0000 @@ -180,7 +180,9 @@ User.delete_all User.create!(:sex => :male) - assert_equal ['id'], User.select(:id).first.attributes.keys + user = User.select(:id).first + user.attributes['role'].must_equal nil + user.attributes['lambda_role'].must_equal nil end it 'has default value with lambda' do @@ -616,4 +618,30 @@ sql.must_include 'LIKE \'%foo%\'' end + + if Rails::VERSION::MAJOR >= 6 + it 'supports AR#insert_all' do + User.delete_all + + User.insert_all([{ sex: :male }]) + User.insert_all([{ status: :active }]) + User.insert_all([{ interests: [:music, :sports] }]) + + User.exists?(sex: :male).must_equal true + User.exists?(status: :active).must_equal true + User.exists?(interests: [:music, :sports]).must_equal true + end + + it 'supports AR#upsert_all' do + User.delete_all + + User.upsert_all([{ sex: :male }]) + User.upsert_all([{ status: :active }]) + User.upsert_all([{ interests: [:music, :sports] }]) + + User.exists?(sex: :male).must_equal true + User.exists?(status: :active).must_equal true + User.exists?(interests: [:music, :sports]).must_equal true + end + end end diff -Nru ruby-enumerize-2.3.1/test/mongo_mapper_test.rb ruby-enumerize-2.4.0/test/mongo_mapper_test.rb --- ruby-enumerize-2.3.1/test/mongo_mapper_test.rb 2019-05-06 13:59:05.000000000 +0000 +++ ruby-enumerize-2.4.0/test/mongo_mapper_test.rb 2021-01-29 00:09:33.000000000 +0000 @@ -8,8 +8,7 @@ require 'mongo_mapper' end -MongoMapper.connection = Mongo::Connection.new('localhost', 27017) -MongoMapper.database = 'enumerize-test-suite-of-mongomapper' +MongoMapper.connection = Mongo::Client.new(['localhost:27017'], database: 'enumerize-test-suite-of-mongomapper') describe Enumerize do class MongoMapperUser diff -Nru ruby-enumerize-2.3.1/test/multiple_test.rb ruby-enumerize-2.4.0/test/multiple_test.rb --- ruby-enumerize-2.3.1/test/multiple_test.rb 2019-05-06 13:59:05.000000000 +0000 +++ ruby-enumerize-2.4.0/test/multiple_test.rb 2021-01-29 00:09:33.000000000 +0000 @@ -56,4 +56,10 @@ kklass.enumerize :foos, in: %w(a b c), multiple: true, scope: true end end + + it 'assign a name with the first letter capitalized' do + kklass.enumerize :Foos, in: %w(a b c), multiple: true + object.Foos = %w(a c) + object.Foos.must_equal %w(a c) + end end diff -Nru ruby-enumerize-2.3.1/test/support/view_test_helper.rb ruby-enumerize-2.4.0/test/support/view_test_helper.rb --- ruby-enumerize-2.3.1/test/support/view_test_helper.rb 2019-05-06 13:59:05.000000000 +0000 +++ ruby-enumerize-2.4.0/test/support/view_test_helper.rb 2021-01-29 00:09:33.000000000 +0000 @@ -7,10 +7,21 @@ ActionView::RoutingUrlFor.send(:include, ActionDispatch::Routing::UrlFor) end -module ViewTestHelper +module SetupAndTeardownHelper extend ActiveSupport::Concern include ActiveSupport::Testing::SetupAndTeardown + + included do + include ActiveSupport::Callbacks + define_callbacks :setup, :teardown + end +end + +module ViewTestHelper + extend ActiveSupport::Concern + + include SetupAndTeardownHelper include ActionView::TestCase::Behavior included do diff -Nru ruby-enumerize-2.3.1/test/value_test.rb ruby-enumerize-2.4.0/test/value_test.rb --- ruby-enumerize-2.3.1/test/value_test.rb 2019-05-06 13:59:05.000000000 +0000 +++ ruby-enumerize-2.4.0/test/value_test.rb 2021-01-29 00:09:33.000000000 +0000 @@ -4,10 +4,13 @@ require 'yaml' describe Enumerize::Value do - class Attr < Struct.new(:values, :name, :i18n_scopes) + class Model end - let(:attr) { Attr.new([], "attribute_name", []) } + class Attr < Struct.new(:values, :name, :i18n_scopes, :klass) + end + + let(:attr) { Attr.new([], "attribute_name", [], Model) } let(:val) { Enumerize::Value.new(attr, 'test_value', 1) } it 'is a string' do @@ -32,7 +35,6 @@ end describe 'translation' do - it 'uses common translation' do store_translations(:en, :enumerize => {:attribute_name => {:test_value => "Common translation"}}) do val.text.must_be :==, "Common translation" @@ -82,6 +84,13 @@ val.text.must_be :==, "Scope specific translation" end end + + it 'returns nil if value was modified' do + store_translations(:en, :enumerize => {:attribute_name => {:test_value => "Common translation"}}) do + modified_val = val.upcase + modified_val.text.must_be_nil + end + end end describe 'boolean methods comparison' do @@ -121,6 +130,14 @@ it "doesn't respond to a method for not existing value" do val.wont_respond_to :some_method? end + + it "doesn't respond to methods is value was modified" do + modified_value = val.upcase + + modified_value.upcase.wont_respond_to :some_method? + modified_value.upcase.wont_respond_to :test_value? + modified_value.upcase.wont_respond_to :other_value? + end end describe 'serialization' do @@ -135,4 +152,14 @@ Marshal.load(dump_value).must_equal 'test_value' end end + + describe 'initialize' do + it 'no output if undefined boolean method' do + assert_silent() { Enumerize::Value.new(attr, 'test_value') } + end + + it 'error output if defined boolean method' do + assert_output(nil, /`empty\?` is defined/) { Enumerize::Value.new(attr, 'empty') } + end + end end diff -Nru ruby-enumerize-2.3.1/.travis.yml ruby-enumerize-2.4.0/.travis.yml --- ruby-enumerize-2.3.1/.travis.yml 2019-05-06 13:59:05.000000000 +0000 +++ ruby-enumerize-2.4.0/.travis.yml 2021-01-29 00:09:33.000000000 +0000 @@ -1,26 +1,21 @@ +dist: focal language: ruby sudo: false services: - - postgresql - mongodb +addons: + postgresql: "13" gemfile: - Gemfile - - Gemfile.rails42 - - Gemfile.rails50 - - Gemfile.rails52 + - Gemfile.rails60 + - Gemfile.rails61 - Gemfile.mongo_mapper rvm: - - 2.2.9 - - 2.3.6 - - 2.4.3 - - 2.5.0 - - jruby-9.1.14.0 + - 2.5.8 + - 2.6.6 + - 2.7.1 before_install: - # Rubygems > 3.0.0 no longer supported rubies < 2.3 - - gem install "rubygems-update:<3.0.0" --no-document && update_rubygems - # Bundler 2.0 is not supported by Rails < 5 - - gem list -i bundler -v '>= 2.0.0' && rvm @global do gem uninstall bundler -x || true - - gem install bundler -v '< 2' + - gem install bundler env: global: - DB_USER=postgres @@ -30,8 +25,6 @@ - DB=postgresql matrix: fast_finish: true - allow_failures: - - rvm: jruby-9.1.14.0 exclude: - gemfile: Gemfile.mongo_mapper env: DB=postgresql