Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package rubygem-virtus for openSUSE:Factory checked in at 2021-06-29 22:43:19 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/rubygem-virtus (Old) and /work/SRC/openSUSE:Factory/.rubygem-virtus.new.2625 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rubygem-virtus" Tue Jun 29 22:43:19 2021 rev:3 rq:902941 version:2.0.0 Changes: -------- --- /work/SRC/openSUSE:Factory/rubygem-virtus/rubygem-virtus.changes 2015-03-23 12:18:17.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.rubygem-virtus.new.2625/rubygem-virtus.changes 2021-06-29 22:43:56.758927983 +0200 @@ -1,0 +2,17 @@ +Thu Jun 24 18:07:58 UTC 2021 - Stephan Kulow <co...@suse.com> + +updated to version 2.0.0 + see installed Changelog.md + + # v2.0.0 2021-06-07 + + * [added] New method `Virtus::Atrribute::Collection#value_coerced?` (dslh) + * [changed] inflecto was replaced with dry-inflector (solnic) + * [changed] equalizer was replaced with the internal virtus/equalizer (solnic) + * [changed] `Virtus::Attribute#==` was revised (see ef57af319334a1d4f3e0860acbde7c6d6f0eb8ef) (novikserg) + * [fixed] Mass assignment bug fix (see #325) (novikserg) + + [Compare v1.0.5..v2.0.0](https://github.com/solnic/virtus/compare/v1.0.5...v2.0.0) + + +------------------------------------------------------------------- Old: ---- virtus-1.0.5.gem New: ---- virtus-2.0.0.gem ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ rubygem-virtus.spec ++++++ --- /var/tmp/diff_new_pack.TfvtL7/_old 2021-06-29 22:43:57.126928468 +0200 +++ /var/tmp/diff_new_pack.TfvtL7/_new 2021-06-29 22:43:57.126928468 +0200 @@ -1,7 +1,7 @@ # # spec file for package rubygem-virtus # -# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2021 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -12,7 +12,7 @@ # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# Please submit bugfixes or comments via http://bugs.opensuse.org/ +# Please submit bugfixes or comments via https://bugs.opensuse.org/ # @@ -24,16 +24,16 @@ # Name: rubygem-virtus -Version: 1.0.5 +Version: 2.0.0 Release: 0 %define mod_name virtus %define mod_full_name %{mod_name}-%{version} BuildRoot: %{_tmppath}/%{name}-%{version}-build +BuildRequires: %{ruby >= 2.0} BuildRequires: %{rubygem gem2rpm} -BuildRequires: %{ruby} BuildRequires: ruby-macros >= 5 -Url: https://github.com/solnic/virtus -Source: http://rubygems.org/gems/%{mod_full_name}.gem +URL: https://github.com/solnic/virtus +Source: https://rubygems.org/gems/%{mod_full_name}.gem Source1: gem2rpm.yml Summary: Attributes on Steroids for Plain Old Ruby Objects License: MIT ++++++ virtus-1.0.5.gem -> virtus-2.0.0.gem ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/.ruby-version new/.ruby-version --- old/.ruby-version 2015-03-18 12:49:02.000000000 +0100 +++ new/.ruby-version 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -2.1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/.travis.yml new/.travis.yml --- old/.travis.yml 2015-03-18 12:49:02.000000000 +0100 +++ new/.travis.yml 2021-06-07 15:26:58.000000000 +0200 @@ -1,22 +1,21 @@ +sudo: false language: ruby -before_install: gem install bundler bundler_args: --without tools -script: "bundle exec rake spec" -env: - - CODECLIMATE_REPO_TOKEN=2b66fbb7c7c72503eb7841a479c0ad923f691729f4109b4aa8c9b4def1ebb42d +cache: bundler rvm: - - 1.9 - 2.0 - 2.1 - 2.2 + - 2.3 + - 2.4 + - 2.5 + - 2.6 + - 2.7 + - 3.0 - jruby - - rbx - - ruby-head -matrix: - allow_failures: - - rvm: ruby-head - - rvm: rbx -notifications: - email: - - piotr.soln...@gmail.com - - dan.k...@gmail.com +before_script: + - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter + - chmod +x ./cc-test-reporter + - ./cc-test-reporter before-build +after_script: + - ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Changelog.md new/Changelog.md --- old/Changelog.md 2015-03-18 12:49:02.000000000 +0100 +++ new/Changelog.md 2021-06-07 15:26:58.000000000 +0200 @@ -1,3 +1,13 @@ +# v2.0.0 2021-06-07 + +* [added] New method `Virtus::Atrribute::Collection#value_coerced?` (dslh) +* [changed] inflecto was replaced with dry-inflector (solnic) +* [changed] equalizer was replaced with the internal virtus/equalizer (solnic) +* [changed] `Virtus::Attribute#==` was revised (see ef57af319334a1d4f3e0860acbde7c6d6f0eb8ef) (novikserg) +* [fixed] Mass assignment bug fix (see #325) (novikserg) + +[Compare v1.0.5..v2.0.0](https://github.com/solnic/virtus/compare/v1.0.5...v2.0.0) + # v1.0.5 2015-03-18 * [feature] Support for :nullify_blank option when configuring a virtus module (lucasmazza) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Gemfile new/Gemfile --- old/Gemfile 2015-03-18 12:49:02.000000000 +0100 +++ new/Gemfile 2021-06-07 15:26:58.000000000 +0200 @@ -2,20 +2,9 @@ gemspec -gem 'bogus', '~> 0.1' -gem 'inflecto', '~> 0.0.2' -gem 'rspec', '~> 3.1' +gem 'dry-inflector' +gem 'rspec' +gem 'bogus' +gem 'simplecov', platform: :ruby gem "codeclimate-test-reporter", group: :test, require: false - -group :tools do - gem 'guard' - gem 'guard-rspec' - - gem 'rubocop' - - platform :mri do - gem 'mutant' - gem 'mutant-rspec' - end -end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/README.md new/README.md --- old/README.md 2015-03-18 12:49:02.000000000 +0100 +++ new/README.md 2021-06-07 15:26:58.000000000 +0200 @@ -1,18 +1,21 @@ [gem]: https://rubygems.org/gems/virtus [travis]: https://travis-ci.org/solnic/virtus -[gemnasium]: https://gemnasium.com/solnic/virtus [codeclimate]: https://codeclimate.com/github/solnic/virtus [coveralls]: https://coveralls.io/r/solnic/virtus [inchpages]: http://inch-ci.org/github/solnic/virtus/ +DISCONTINUED +------------ + +> Working on virtus taught me a lot about handling data in Ruby, which involves coercions, type safety and validation (amongst other things). Even though the project has been successful, and serving well for many people, I decided to build something better. As a result, [dry-types](https://github.com/dry-rb/dry-types), [dry-struct](https://github.com/dry-rb/dry-struct) and [dry-schema](https://github.com/dry-rb/dry-schema) were born. These projects should be considered as virtus' successors, with better separation of concerns and better features. If you're interested in a modern take on same problems that virtus tried to solve, please check out these projects! +> +> @solnic + Virtus ====== -# Ruby Object Mapper - [][gem] [][travis] -[][gemnasium] [][codeclimate] [][codeclimate] [][inchpages] @@ -61,7 +64,7 @@ end user = User.new(:name => 'Piotr', :age => 31) -user.attributes # => { :name => "Piotr", :age => 31 } +user.attributes # => { :name => "Piotr", :age => 31, :birthday => nil } user.name # => "Piotr" @@ -579,6 +582,13 @@ Post.attribute_set[:blog].type.primitive # => Blog ``` +## Plugins / Extensions + +List of plugins/extensions that add features to Virtus: + +* [virtus-localized](https://github.com/XescuGC/virtus-localized): Localize the attributes +* [virtus-relations](https://github.com/smanolloff/virtus-relations): Add relations to Virtus objects + Ruby version support -------------------- Binary files old/checksums.yaml.gz and new/checksums.yaml.gz differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/virtus/attribute/builder.rb new/lib/virtus/attribute/builder.rb --- old/lib/virtus/attribute/builder.rb 2015-03-18 12:49:02.000000000 +0100 +++ new/lib/virtus/attribute/builder.rb 2021-06-07 15:26:58.000000000 +0200 @@ -25,13 +25,7 @@ # @api private def determine_type if type.include?('::') - # TODO: wrap it up in Virtus.constantize and use feature-detection to - # pick up either Inflecto or ActiveSupport, whateve is available - if defined?(Inflecto) - Inflecto.constantize(type) - else - raise NotImplementedError, 'Virtus needs inflecto gem to constantize namespaced constant names' - end + Virtus.constantize(type) else Object.const_get(type) end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/virtus/attribute/collection.rb new/lib/virtus/attribute/collection.rb --- old/lib/virtus/attribute/collection.rb 2015-03-18 12:49:02.000000000 +0100 +++ new/lib/virtus/attribute/collection.rb 2021-06-07 15:26:58.000000000 +0200 @@ -80,6 +80,11 @@ end end + # @api public + def value_coerced?(value) + super && value.all? { |item| member_type.value_coerced? item } + end + # @api private def finalize return self if finalized? diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/virtus/attribute/default_value.rb new/lib/virtus/attribute/default_value.rb --- old/lib/virtus/attribute/default_value.rb 2015-03-18 12:49:02.000000000 +0100 +++ new/lib/virtus/attribute/default_value.rb 2021-06-07 15:26:58.000000000 +0200 @@ -7,6 +7,8 @@ class DefaultValue extend DescendantsTracker + include Equalizer.new(inspect) << :value + # Builds a default value instance # # @return [Virtus::Attribute::DefaultValue] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/virtus/attribute.rb new/lib/virtus/attribute.rb --- old/lib/virtus/attribute.rb 2015-03-18 12:49:02.000000000 +0100 +++ new/lib/virtus/attribute.rb 2021-06-07 15:26:58.000000000 +0200 @@ -13,12 +13,12 @@ # # strict mode # attr = Virtus::Attribute.build(Integer, :strict => true) # attr.coerce('not really coercible') - # # => Virtus::CoercionError: Failed to coerce "fsafa" into Integer + # # => Virtus::CoercionError: Failed to coerce "not really coercible" into Integer # class Attribute extend DescendantsTracker, Options, TypeLookup - include ::Equalizer.new(:type, :options) + include Equalizer.new(inspect) << :type << :options accept_options :primitive, :accessor, :default, :lazy, :strict, :required, :finalize, :nullify_blank diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/virtus/builder.rb new/lib/virtus/builder.rb --- old/lib/virtus/builder.rb 2015-03-18 12:49:02.000000000 +0100 +++ new/lib/virtus/builder.rb 2021-06-07 15:26:58.000000000 +0200 @@ -120,11 +120,7 @@ # @api private def extensions - super + [ - Extensions::AllowedWriterMethods, - ValueObject::AllowedWriterMethods, - ValueObject::InstanceMethods - ] + super << ValueObject::AllowedWriterMethods << ValueObject::InstanceMethods end # @api private diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/virtus/class_inclusions.rb new/lib/virtus/class_inclusions.rb --- old/lib/virtus/class_inclusions.rb 2015-03-18 12:49:02.000000000 +0100 +++ new/lib/virtus/class_inclusions.rb 2021-06-07 15:26:58.000000000 +0200 @@ -13,7 +13,6 @@ def self.included(descendant) super descendant.extend(ClassMethods) - descendant.extend(Extensions::AllowedWriterMethods) descendant.class_eval { include Methods } descendant.class_eval { include InstanceMethods } descendant.class_eval { include InstanceMethods::Constructor } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/virtus/coercer.rb new/lib/virtus/coercer.rb --- old/lib/virtus/coercer.rb 2015-03-18 12:49:02.000000000 +0100 +++ new/lib/virtus/coercer.rb 2021-06-07 15:26:58.000000000 +0200 @@ -3,6 +3,7 @@ # Abstract coercer class # class Coercer + include Equalizer.new(inspect) << :primitive << :type # @api private attr_reader :primitive, :type diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/virtus/extensions.rb new/lib/virtus/extensions.rb --- old/lib/virtus/extensions.rb 2015-03-18 12:49:02.000000000 +0100 +++ new/lib/virtus/extensions.rb 2021-06-07 15:26:58.000000000 +0200 @@ -18,7 +18,6 @@ object.instance_eval do extend Methods extend InstanceMethods - extend AllowedWriterMethods extend InstanceMethods::MassAssignment end end @@ -72,26 +71,9 @@ def values(&block) private :attributes= if instance_methods.include?(:attributes=) yield - include(::Equalizer.new(*attribute_set.map(&:name))) + include(Equalizer.new(name, attribute_set.map(&:name))) end - private - - # Return an attribute set for that instance - # - # @return [AttributeSet] - # - # @api private - def attribute_set - @attribute_set - end - - end # Methods - - module AllowedWriterMethods - WRITER_METHOD_REGEXP = /=\z/.freeze - INVALID_WRITER_METHODS = %w[ == != === []= attributes= ].to_set.freeze - # The list of writer methods that can be mass-assigned to in #attributes= # # @return [Set] @@ -106,8 +88,18 @@ end end - end # AllowedWriterMethods + private - end # module Extensions + # Return an attribute set for that instance + # + # @return [AttributeSet] + # + # @api private + def attribute_set + @attribute_set + end + end # Methods + + end # module Extensions end # module Virtus diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/virtus/instance_methods.rb new/lib/virtus/instance_methods.rb --- old/lib/virtus/instance_methods.rb 2015-03-18 12:49:02.000000000 +0100 +++ new/lib/virtus/instance_methods.rb 2021-06-07 15:26:58.000000000 +0200 @@ -14,7 +14,7 @@ # # @api private def initialize(attributes = nil) - self.class.attribute_set.set(self, attributes) if attributes + attribute_set.set(self, attributes) if attributes set_default_attributes end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/virtus/model.rb new/lib/virtus/model.rb --- old/lib/virtus/model.rb 2015-03-18 12:49:02.000000000 +0100 +++ new/lib/virtus/model.rb 2021-06-07 15:26:58.000000000 +0200 @@ -31,7 +31,7 @@ descendant.extend(Extensions::Methods) descendant.extend(InstanceMethods) end - private_class_method :included + private_class_method :extended end # Core @@ -51,7 +51,6 @@ # @api private def self.included(descendant) super - descendant.extend(Extensions::AllowedWriterMethods) descendant.send(:include, InstanceMethods::MassAssignment) end private_class_method :included @@ -59,7 +58,6 @@ # @api private def self.extended(descendant) super - descendant.extend(Extensions::AllowedWriterMethods) descendant.extend(InstanceMethods::MassAssignment) end private_class_method :extended diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/virtus/support/options.rb new/lib/virtus/support/options.rb --- old/lib/virtus/support/options.rb 2015-03-18 12:49:02.000000000 +0100 +++ new/lib/virtus/support/options.rb 2021-06-07 15:26:58.000000000 +0200 @@ -37,7 +37,7 @@ # Defines which options are valid for a given attribute class # # @example - # class MyAttribute < Virtus::Attribute::Object + # class MyAttribute < Virtus::Attribute # accept_options :foo, :bar # end # diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/virtus/version.rb new/lib/virtus/version.rb --- old/lib/virtus/version.rb 2015-03-18 12:49:02.000000000 +0100 +++ new/lib/virtus/version.rb 2021-06-07 15:26:58.000000000 +0200 @@ -1,3 +1,3 @@ module Virtus - VERSION = '1.0.5'.freeze + VERSION = '2.0.0'.freeze end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/virtus.rb new/lib/virtus.rb --- old/lib/virtus.rb 2015-03-18 12:49:02.000000000 +0100 +++ new/lib/virtus.rb 2021-06-07 15:26:58.000000000 +0200 @@ -207,6 +207,25 @@ @configuration ||= Configuration.new end + # @api private + def self.constantize(type) + inflector.constantize(type) + end + + # @api private + def self.inflector + @inflector ||= + begin + require 'dry/inflector' + Dry::Inflector.new + rescue LoadError + raise( + NotImplementedError, + 'Virtus needs dry-inflector gem to constantize namespaced constant names' + ) + end + end + # Finalize pending attributes # # @example @@ -241,7 +260,6 @@ end # module Virtus require 'descendants_tracker' -require 'equalizer' require 'axiom-types' require 'coercible' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/metadata new/metadata --- old/metadata 2015-03-18 12:49:02.000000000 +0100 +++ new/metadata 2021-06-07 15:26:58.000000000 +0200 @@ -1,14 +1,14 @@ --- !ruby/object:Gem::Specification name: virtus version: !ruby/object:Gem::Version - version: 1.0.5 + version: 2.0.0 platform: ruby authors: - Piotr Solnica -autorequire: +autorequire: bindir: bin cert_chain: [] -date: 2015-03-18 00:00:00.000000000 Z +date: 2021-06-07 00:00:00.000000000 Z dependencies: - !ruby/object:Gem::Dependency name: descendants_tracker @@ -31,26 +31,6 @@ - !ruby/object:Gem::Version version: 0.0.3 - !ruby/object:Gem::Dependency - name: equalizer - requirement: !ruby/object:Gem::Requirement - requirements: - - - "~>" - - !ruby/object:Gem::Version - version: '0.0' - - - ">=" - - !ruby/object:Gem::Version - version: 0.0.9 - type: :runtime - prerelease: false - version_requirements: !ruby/object:Gem::Requirement - requirements: - - - "~>" - - !ruby/object:Gem::Version - version: '0.0' - - - ">=" - - !ruby/object:Gem::Version - version: 0.0.9 -- !ruby/object:Gem::Dependency name: coercible requirement: !ruby/object:Gem::Requirement requirements: @@ -106,7 +86,6 @@ - ".pelusa.yml" - ".rspec" - ".ruby-gemset" -- ".ruby-version" - ".travis.yml" - ".yardopts" - CONTRIBUTING.md @@ -151,6 +130,7 @@ - lib/virtus/support/type_lookup.rb - lib/virtus/value_object.rb - lib/virtus/version.rb +- spec/integration/attributes_attribute_spec.rb - spec/integration/building_module_spec.rb - spec/integration/collection_member_coercion_spec.rb - spec/integration/custom_attributes_spec.rb @@ -183,6 +163,8 @@ - spec/unit/virtus/attribute/coercible_predicate_spec.rb - spec/unit/virtus/attribute/collection/class_methods/build_spec.rb - spec/unit/virtus/attribute/collection/coerce_spec.rb +- spec/unit/virtus/attribute/collection/value_coerced_predicate_spec.rb +- spec/unit/virtus/attribute/comparison_spec.rb - spec/unit/virtus/attribute/custom_collection_spec.rb - spec/unit/virtus/attribute/defined_spec.rb - spec/unit/virtus/attribute/embedded_value/class_methods/build_spec.rb @@ -222,7 +204,7 @@ licenses: - MIT metadata: {} -post_install_message: +post_install_message: rdoc_options: [] require_paths: - lib @@ -230,16 +212,15 @@ requirements: - - ">=" - !ruby/object:Gem::Version - version: '0' + version: '2.0' required_rubygems_version: !ruby/object:Gem::Requirement requirements: - - ">=" - !ruby/object:Gem::Version version: '0' requirements: [] -rubyforge_project: -rubygems_version: 2.4.5 -signing_key: +rubygems_version: 3.2.15 +signing_key: specification_version: 4 summary: Attributes on Steroids for Plain Old Ruby Objects test_files: [] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec/integration/attributes_attribute_spec.rb new/spec/integration/attributes_attribute_spec.rb --- old/spec/integration/attributes_attribute_spec.rb 1970-01-01 01:00:00.000000000 +0100 +++ new/spec/integration/attributes_attribute_spec.rb 2021-06-07 15:26:58.000000000 +0200 @@ -0,0 +1,28 @@ +require 'spec_helper' + +describe "Adding attribute called 'attributes'" do + + context "when mass assignment is disabled" do + before do + module Examples + class User + include Virtus.model(mass_assignment: false) + + attribute :attributes + end + end + end + + it "allows model to use `attributes` attribute" do + user = Examples::User.new + expect(user.attributes).to eq(nil) + user.attributes = "attributes string" + expect(user.attributes).to eq("attributes string") + end + + it "doesn't accept `attributes` key in initializer" do + user = Examples::User.new(attributes: 'attributes string') + expect(user.attributes).to eq(nil) + end + end +end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec/spec_helper.rb new/spec/spec_helper.rb --- old/spec/spec_helper.rb 2015-03-18 12:49:02.000000000 +0100 +++ new/spec/spec_helper.rb 2021-06-07 15:26:58.000000000 +0200 @@ -1,12 +1,11 @@ -if RUBY_ENGINE == "rbx" - require "codeclimate-test-reporter" - CodeClimate::TestReporter.start +if RUBY_ENGINE == 'ruby' && RUBY_VERSION >= '3.0' + require 'simplecov' + SimpleCov.start end require 'rspec' require 'bogus/rspec' require 'virtus' -require 'inflecto' # for resolving namespaced constant names module Virtus def self.warn(*) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec/unit/virtus/attribute/collection/value_coerced_predicate_spec.rb new/spec/unit/virtus/attribute/collection/value_coerced_predicate_spec.rb --- old/spec/unit/virtus/attribute/collection/value_coerced_predicate_spec.rb 1970-01-01 01:00:00.000000000 +0100 +++ new/spec/unit/virtus/attribute/collection/value_coerced_predicate_spec.rb 2021-06-07 15:26:58.000000000 +0200 @@ -0,0 +1,31 @@ +require 'spec_helper' +require 'set' + +describe Virtus::Attribute::Collection, '#value_coerced?' do + subject { object.value_coerced?(input) } + + let(:object) { described_class.build(Array[Integer]) } + + context 'when input has correctly typed members' do + let(:input) { [1, 2, 3] } + + it { is_expected.to be(true) } + end + + context 'when input has incorrectly typed members' do + let(:input) { [1, 2, '3'] } + + it { is_expected.to be(false) } + end + + context 'when the collection type is incorrect' do + let(:input) { Set[1, 2, 3] } + + it { is_expected.to be(false) } + end + + context 'when the input is empty' do + let(:input) { [] } + it { is_expected.to be(true) } + end +end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec/unit/virtus/attribute/comparison_spec.rb new/spec/unit/virtus/attribute/comparison_spec.rb --- old/spec/unit/virtus/attribute/comparison_spec.rb 1970-01-01 01:00:00.000000000 +0100 +++ new/spec/unit/virtus/attribute/comparison_spec.rb 2021-06-07 15:26:58.000000000 +0200 @@ -0,0 +1,20 @@ +require 'spec_helper' + +describe Virtus::Attribute, '#== (defined by including Virtus::Equalizer)' do + let(:attribute) { described_class.build(String, :name => :name) } + + it 'returns true when attributes have same type and options' do + equal_attribute = described_class.build(String, :name => :name) + expect(attribute == equal_attribute).to be_truthy + end + + it 'returns false when attributes have different type' do + different_attribute = described_class.build(Integer, :name => :name) + expect(attribute == different_attribute).to be_falsey + end + + it 'returns false when attributes have different options' do + different_attribute = described_class.build(Integer, :name => :name_two) + expect(attribute == different_attribute).to be_falsey + end +end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec/unit/virtus/attribute_set/append_spec.rb new/spec/unit/virtus/attribute_set/append_spec.rb --- old/spec/unit/virtus/attribute_set/append_spec.rb 2015-03-18 12:49:02.000000000 +0100 +++ new/spec/unit/virtus/attribute_set/append_spec.rb 2021-06-07 15:26:58.000000000 +0200 @@ -38,10 +38,10 @@ it { is_expected.to equal(object) } - it 'replaces the original attribute' do - expect { subject }.to change { object.to_a }. - from(attributes). - to([ attribute ]) + it "replaces the original attribute object" do + expect { subject }.to change { object.to_a.map(&:__id__) }. + from(attributes.map(&:__id__)). + to([attribute.__id__]) end end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec/unit/virtus/attribute_set/element_set_spec.rb new/spec/unit/virtus/attribute_set/element_set_spec.rb --- old/spec/unit/virtus/attribute_set/element_set_spec.rb 2015-03-18 12:49:02.000000000 +0100 +++ new/spec/unit/virtus/attribute_set/element_set_spec.rb 2021-06-07 15:26:58.000000000 +0200 @@ -37,20 +37,28 @@ it { is_expected.to equal(attribute) } - it 'replaces the original attribute' do - expect { subject }.to change { object.to_a }.from(attributes).to([ attribute ]) + it "replaces the original attribute object" do + expect { subject }.to change { object.to_a.map(&:__id__) }. + from(attributes.map(&:__id__)). + to([attribute.__id__]) end - it 'allows #[] to access the attribute with a symbol' do - expect { subject }.to change { object['name'] }.from(original).to(attribute) + it 'allows #[] to access the attribute with a string' do + expect { subject }.to change { object['name'].__id__ }. + from(original.__id__). + to(attribute.__id__) end - it 'allows #[] to access the attribute with a string' do - expect { subject }.to change { object[:name] }.from(original).to(attribute) + it 'allows #[] to access the attribute with a symbol' do + expect { subject }.to change { object[:name].__id__ }. + from(original.__id__). + to(attribute.__id__) end it 'allows #reset to track overridden attributes' do - expect { subject }.to change { object.reset.to_a }.from(attributes).to([ attribute ]) + expect { subject }.to change { object.reset.to_a.map(&:__id__) }. + from(attributes.map(&:__id__)). + to([attribute.__id__]) end end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec/unit/virtus/attribute_set/merge_spec.rb new/spec/unit/virtus/attribute_set/merge_spec.rb --- old/spec/unit/virtus/attribute_set/merge_spec.rb 2015-03-18 12:49:02.000000000 +0100 +++ new/spec/unit/virtus/attribute_set/merge_spec.rb 2021-06-07 15:26:58.000000000 +0200 @@ -21,12 +21,14 @@ context 'with a duplicate attribute' do let(:attributes) { [Virtus::Attribute.build(String, :name => name)] } - let(:attribute) { Virtus::Attribute.build(String, :name => name) } + let(:attribute) { Virtus::Attribute.build(String, :name => name) } it { is_expected.to equal(object) } - it 'replaces the original attribute' do - expect { subject }.to change { object.to_a }.from(attributes).to([attribute]) + it "replaces the original attribute object" do + expect { subject }.to change { object.to_a.map(&:__id__) }. + from(attributes.map(&:__id__)). + to([attribute.__id__]) end end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/virtus.gemspec new/virtus.gemspec --- old/virtus.gemspec 2015-03-18 12:49:02.000000000 +0100 +++ new/virtus.gemspec 2021-06-07 15:26:58.000000000 +0200 @@ -18,9 +18,9 @@ gem.extra_rdoc_files = %w[LICENSE README.md TODO.md] gem.add_dependency('descendants_tracker', '~> 0.0', '>= 0.0.3') - gem.add_dependency('equalizer', '~> 0.0', '>= 0.0.9') gem.add_dependency('coercible', '~> 1.0') gem.add_dependency('axiom-types', '~> 0.1') gem.add_development_dependency 'rake' + gem.required_ruby_version = '>= 2.0' end