assignable_values 0.15.1 → 0.16.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8a7a9d96e5e738273b161df4a8cf85c5871122f909b6e50aad62fde7e7a21f14
4
- data.tar.gz: 9b09dd1a6d0e1270876676442eeda26ca6f03650954b104efc9738aba80b0770
3
+ metadata.gz: cc767440e4e60cd5e1d090edf24bbbe5750072010d72f8d871ff2fb3c5963aed
4
+ data.tar.gz: b50641114a05d2c0a25c969e5b845a952e84944b65f1664b4c77e446f209d096
5
5
  SHA512:
6
- metadata.gz: 3c040fd853c739f57b23698124e5e0087ddfdc3a40f0eb26b6162089ed740888c325248cb49c69d7bee230a4df2817c094f2179f72ae5b284a844a2a1cb34239
7
- data.tar.gz: 161e04475ee56b531af8ad5b1b8dc65ebc601ad3c2dbd02cc833b87e78d3efe7d595d9bf3b3165da771eec12fc25283be935247ed1e1c6d0eeaded4f9c725d0e
6
+ metadata.gz: 4b1825671839986101ae0068bee450028f40c77c58acb0b4972e9b37c75485d3e0cbbfb979edcee3d7430cc1e3ee16e1b70aa1d50288cabd5e27cf9250a0f7c5
7
+ data.tar.gz: 8b7fe509733f0f42b59726a29bcf21d26da7618b41c1295cb4d3830b57cd8fe7493323f89786c5623a7e5b86baa9e20931d199b89b2865e82c162aed0403c3ba
data/.travis.yml CHANGED
@@ -7,40 +7,40 @@ rvm:
7
7
  - 2.4.2
8
8
 
9
9
  gemfile:
10
- - gemfiles/Gemfile.2.3
11
- - gemfiles/Gemfile.3.2
12
- - gemfiles/Gemfile.4.2
13
- - gemfiles/Gemfile.5.0
14
- - gemfiles/Gemfile.5.1
15
- - gemfiles/Gemfile.5.1.pg
10
+ - Gemfile.2.3
11
+ - Gemfile.3.2
12
+ - Gemfile.4.2
13
+ - Gemfile.5.0
14
+ - Gemfile.5.1
15
+ - Gemfile.5.1.pg
16
16
 
17
17
  matrix:
18
18
  exclude:
19
- - gemfile: gemfiles/Gemfile.2.3
19
+ - gemfile: Gemfile.2.3
20
20
  rvm: 2.1.8
21
- - gemfile: gemfiles/Gemfile.2.3
21
+ - gemfile: Gemfile.2.3
22
22
  rvm: 2.3.1
23
- - gemfile: gemfiles/Gemfile.2.3
23
+ - gemfile: Gemfile.2.3
24
24
  rvm: 2.4.2
25
- - gemfile: gemfiles/Gemfile.3.2
25
+ - gemfile: Gemfile.3.2
26
26
  rvm: 2.3.1
27
- - gemfile: gemfiles/Gemfile.3.2
27
+ - gemfile: Gemfile.3.2
28
28
  rvm: 2.4.2
29
- - gemfile: gemfiles/Gemfile.4.2
29
+ - gemfile: Gemfile.4.2
30
30
  rvm: 1.8.7
31
- - gemfile: gemfiles/Gemfile.4.2
31
+ - gemfile: Gemfile.4.2
32
32
  rvm: 2.4.2
33
- - gemfile: gemfiles/Gemfile.5.0
33
+ - gemfile: Gemfile.5.0
34
34
  rvm: 2.1.8
35
- - gemfile: gemfiles/Gemfile.5.0
35
+ - gemfile: Gemfile.5.0
36
36
  rvm: 1.8.7
37
- - gemfile: gemfiles/Gemfile.5.1
37
+ - gemfile: Gemfile.5.1
38
38
  rvm: 2.1.8
39
- - gemfile: gemfiles/Gemfile.5.1
39
+ - gemfile: Gemfile.5.1
40
40
  rvm: 1.8.7
41
- - gemfile: gemfiles/Gemfile.5.1.pg
41
+ - gemfile: Gemfile.5.1.pg
42
42
  rvm: 2.1.8
43
- - gemfile: gemfiles/Gemfile.5.1.pg
43
+ - gemfile: Gemfile.5.1.pg
44
44
  rvm: 1.8.7
45
45
 
46
46
  sudo: false
data/Gemfile CHANGED
@@ -1 +1 @@
1
- ./gemfiles/Gemfile.4.2
1
+ ./Gemfile.4.2
@@ -13,4 +13,4 @@ gem 'rspec_candy'
13
13
  gem 'gemika'
14
14
 
15
15
  # Gem under test
16
- gem 'assignable_values', :path => '..'
16
+ gem 'assignable_values', :path => '.'
@@ -1,5 +1,5 @@
1
1
  PATH
2
- remote: ..
2
+ remote: .
3
3
  specs:
4
4
  assignable_values (0.15.1)
5
5
  activerecord (>= 2.3)
@@ -13,4 +13,4 @@ gem 'rspec_candy'
13
13
  gem 'gemika'
14
14
 
15
15
  # Gem under test
16
- gem 'assignable_values', :path => '..'
16
+ gem 'assignable_values', :path => '.'
@@ -1,5 +1,5 @@
1
1
  PATH
2
- remote: ..
2
+ remote: .
3
3
  specs:
4
4
  assignable_values (0.15.1)
5
5
  activerecord (>= 2.3)
@@ -13,4 +13,4 @@ gem 'rspec_candy'
13
13
  gem 'gemika'
14
14
 
15
15
  # Gem under test
16
- gem 'assignable_values', :path => '..'
16
+ gem 'assignable_values', :path => '.'
@@ -1,5 +1,5 @@
1
1
  PATH
2
- remote: ..
2
+ remote: .
3
3
  specs:
4
4
  assignable_values (0.15.1)
5
5
  activerecord (>= 2.3)
@@ -13,4 +13,4 @@ gem 'rspec_candy'
13
13
  gem 'gemika'
14
14
 
15
15
  # Gem under test
16
- gem 'assignable_values', :path => '..'
16
+ gem 'assignable_values', :path => '.'
@@ -1,5 +1,5 @@
1
1
  PATH
2
- remote: ..
2
+ remote: .
3
3
  specs:
4
4
  assignable_values (0.15.1)
5
5
  activerecord (>= 2.3)
@@ -13,4 +13,4 @@ gem 'rspec_candy'
13
13
  gem 'gemika'
14
14
 
15
15
  # Gem under test
16
- gem 'assignable_values', :path => '..'
16
+ gem 'assignable_values', :path => '.'
@@ -1,5 +1,5 @@
1
1
  PATH
2
- remote: ..
2
+ remote: .
3
3
  specs:
4
4
  assignable_values (0.15.1)
5
5
  activerecord (>= 2.3)
@@ -13,4 +13,4 @@ gem 'rspec_candy'
13
13
  gem 'gemika'
14
14
 
15
15
  # Gem under test
16
- gem 'assignable_values', :path => '..'
16
+ gem 'assignable_values', :path => '.'
@@ -1,5 +1,5 @@
1
1
  PATH
2
- remote: ..
2
+ remote: .
3
3
  specs:
4
4
  assignable_values (0.15.1)
5
5
  activerecord (>= 2.3)
data/Gemfile.lock CHANGED
@@ -1 +1 @@
1
- ./gemfiles/Gemfile.4.2.lock
1
+ ./Gemfile.4.2.lock
data/README.md CHANGED
@@ -353,12 +353,12 @@ There are tests in `spec`. We only accept PRs with tests. To run tests:
353
353
  - Create a local test database `assignable_values_test` in both MySQL and PostgreSQL
354
354
  - Copy `spec/support/database.sample.yml` to `spec/support/database.yml` and enter your local credentials for the test database
355
355
  - Install development dependencies using `bundle install`
356
- - Run tests using `bundle exec rspec`
356
+ - Run tests using `bundle exec current_rspec`
357
357
 
358
358
  We recommend to test large changes against multiple versions of Ruby and multiple dependency sets. Supported combinations are configured in `.travis.yml`. We provide some rake tasks to help with this:
359
359
 
360
- - Install development dependencies using `bundle matrix:install`
361
- - Run tests using `bundle matrix:spec`
360
+ - Install development dependencies using `bundle exec rake matrix:install`
361
+ - Run tests using `bundle exec rake matrix:spec`
362
362
 
363
363
  Note that we have configured Travis CI to automatically run tests in all supported Ruby versions and dependency sets after each push. We will only merge pull requests after a green Travis build.
364
364
 
@@ -240,7 +240,7 @@ module AssignableValues
240
240
  delegate = delegate(record)
241
241
  delegate.present? or raise DelegateUnavailable, "Cannot query a nil delegate for assignable values"
242
242
  delegate_query_method = :"assignable_#{model.name.underscore.gsub('/', '_')}_#{property.to_s.pluralize}"
243
- args = delegate.method(delegate_query_method).arity == 1 ? [record] : []
243
+ args = delegate.method(delegate_query_method).arity == 0 ? [] : [record]
244
244
  delegate.send(delegate_query_method, *args)
245
245
  end
246
246
 
@@ -1,3 +1,3 @@
1
1
  module AssignableValues
2
- VERSION = '0.15.1'
2
+ VERSION = '0.16.0'
3
3
  end
@@ -255,11 +255,11 @@ describe AssignableValues::ActiveRecord do
255
255
  context 'if the :message option is set to a string' do
256
256
 
257
257
  before :each do
258
- @klass = Song.disposable_copy do
259
- assignable_values_for :genre, :message => 'should be something different' do
260
- %w[pop rock]
261
- end
262
- end
258
+ @klass = Song.disposable_copy do
259
+ assignable_values_for :genre, :message => 'should be something different' do
260
+ %w[pop rock]
261
+ end
262
+ end
263
263
  end
264
264
 
265
265
  it 'should use this string as a custom error message' do
@@ -514,7 +514,11 @@ describe AssignableValues::ActiveRecord do
514
514
  klass = Song.disposable_copy do
515
515
  assignable_values_for :genre, :through => :delegate
516
516
  def delegate
517
- OpenStruct.new(:assignable_song_genres => %w[pop rock])
517
+ Class.new do
518
+ def assignable_song_genres
519
+ %w[pop rock]
520
+ end
521
+ end.new
518
522
  end
519
523
  end
520
524
  klass.new(:genre => 'pop').should be_valid
@@ -525,9 +529,14 @@ describe AssignableValues::ActiveRecord do
525
529
  klass = Song.disposable_copy do
526
530
  assignable_values_for :genre, :through => lambda { delegate }
527
531
  def delegate
528
- OpenStruct.new(:assignable_song_genres => %w[pop rock])
532
+ Class.new do
533
+ def assignable_song_genres
534
+ %w[pop rock]
535
+ end
536
+ end.new
529
537
  end
530
538
  end
539
+
531
540
  klass.new(:genre => 'pop').should be_valid
532
541
  klass.new(:genre => 'disallowed value').should_not be_valid
533
542
  end
@@ -536,7 +545,11 @@ describe AssignableValues::ActiveRecord do
536
545
  klass = Recording::Vinyl.disposable_copy do
537
546
  assignable_values_for :year, :through => :delegate
538
547
  def delegate
539
- OpenStruct.new(:assignable_recording_vinyl_years => [1977, 1980, 1983])
548
+ Class.new do
549
+ def assignable_recording_vinyl_years
550
+ [1977, 1980, 1983]
551
+ end
552
+ end.new
540
553
  end
541
554
  end
542
555
  klass.new.assignable_years.should == [1977, 1980, 1983]
@@ -926,7 +939,41 @@ describe AssignableValues::ActiveRecord do
926
939
  delegate = Object.new
927
940
  def delegate.assignable_song_genres(record)
928
941
  record_received(record)
929
- %w[pop rock]
942
+ %w[pop rock]
943
+ end
944
+ klass = Song.disposable_copy do
945
+ assignable_values_for :genre, :through => :delegate
946
+ define_method :delegate do
947
+ delegate
948
+ end
949
+ end
950
+ record = klass.new
951
+ delegate.should_receive(:record_received).with(record)
952
+ record.assignable_genres.should == %w[pop rock]
953
+ end
954
+
955
+ it "should call the given method on the delegate if the delegate's query method takes no arguments" do
956
+ delegate = Object.new
957
+ def delegate.assignable_song_genres
958
+ no_record_received
959
+ %w[pop rock]
960
+ end
961
+ klass = Song.disposable_copy do
962
+ assignable_values_for :genre, :through => :delegate
963
+ define_method :delegate do
964
+ delegate
965
+ end
966
+ end
967
+ record = klass.new
968
+ delegate.should_receive(:no_record_received)
969
+ record.assignable_genres.should == %w[pop rock]
970
+ end
971
+
972
+ it "should pass the record to the given method if the delegate's query method takes variable arguments" do
973
+ delegate = Object.new
974
+ def delegate.assignable_song_genres(*records)
975
+ record_received(*records)
976
+ %w[pop rock]
930
977
  end
931
978
  klass = Song.disposable_copy do
932
979
  assignable_values_for :genre, :through => :delegate
@@ -939,6 +986,21 @@ describe AssignableValues::ActiveRecord do
939
986
  record.assignable_genres.should == %w[pop rock]
940
987
  end
941
988
 
989
+ it "should raise an error if the delegate's query method takes more than one argument" do
990
+ delegate = Object.new
991
+ def delegate.assignable_song_genres(record, other_arg)
992
+ %w[pop rock]
993
+ end
994
+ klass = Song.disposable_copy do
995
+ assignable_values_for :genre, :through => :delegate
996
+ define_method :delegate do
997
+ delegate
998
+ end
999
+ end
1000
+ record = klass.new
1001
+ expect{record.assignable_genres}.to raise_error(ArgumentError)
1002
+ end
1003
+
942
1004
  it 'should raise an error if the given method returns nil' do
943
1005
  klass = Song.disposable_copy do
944
1006
  assignable_values_for :genre, :through => :delegate
@@ -948,11 +1010,7 @@ describe AssignableValues::ActiveRecord do
948
1010
  end
949
1011
  expect { klass.new.assignable_genres }.to raise_error(AssignableValues::DelegateUnavailable)
950
1012
  end
951
-
952
1013
  end
953
-
954
1014
  end
955
-
956
1015
  end
957
-
958
1016
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: assignable_values
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.15.1
4
+ version: 0.16.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Henning Koch
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-11-05 00:00:00.000000000 Z
11
+ date: 2019-02-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -36,23 +36,23 @@ files:
36
36
  - ".travis.yml"
37
37
  - CHANGELOG.md
38
38
  - Gemfile
39
+ - Gemfile.2.3
40
+ - Gemfile.2.3.lock
41
+ - Gemfile.3.2
42
+ - Gemfile.3.2.lock
43
+ - Gemfile.4.2
44
+ - Gemfile.4.2.lock
45
+ - Gemfile.5.0
46
+ - Gemfile.5.0.lock
47
+ - Gemfile.5.1
48
+ - Gemfile.5.1.lock
49
+ - Gemfile.5.1.pg
50
+ - Gemfile.5.1.pg.lock
39
51
  - Gemfile.lock
40
52
  - LICENSE
41
53
  - README.md
42
54
  - Rakefile
43
55
  - assignable_values.gemspec
44
- - gemfiles/Gemfile.2.3
45
- - gemfiles/Gemfile.2.3.lock
46
- - gemfiles/Gemfile.3.2
47
- - gemfiles/Gemfile.3.2.lock
48
- - gemfiles/Gemfile.4.2
49
- - gemfiles/Gemfile.4.2.lock
50
- - gemfiles/Gemfile.5.0
51
- - gemfiles/Gemfile.5.0.lock
52
- - gemfiles/Gemfile.5.1
53
- - gemfiles/Gemfile.5.1.lock
54
- - gemfiles/Gemfile.5.1.pg
55
- - gemfiles/Gemfile.5.1.pg.lock
56
56
  - lib/assignable_values.rb
57
57
  - lib/assignable_values/active_record.rb
58
58
  - lib/assignable_values/active_record/restriction/base.rb