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 +4 -4
- data/.travis.yml +19 -19
- data/Gemfile +1 -1
- data/{gemfiles/Gemfile.2.3 → Gemfile.2.3} +1 -1
- data/{gemfiles/Gemfile.2.3.lock → Gemfile.2.3.lock} +1 -1
- data/{gemfiles/Gemfile.3.2 → Gemfile.3.2} +1 -1
- data/{gemfiles/Gemfile.3.2.lock → Gemfile.3.2.lock} +1 -1
- data/{gemfiles/Gemfile.4.2 → Gemfile.4.2} +1 -1
- data/{gemfiles/Gemfile.4.2.lock → Gemfile.4.2.lock} +1 -1
- data/{gemfiles/Gemfile.5.0 → Gemfile.5.0} +1 -1
- data/{gemfiles/Gemfile.5.0.lock → Gemfile.5.0.lock} +1 -1
- data/{gemfiles/Gemfile.5.1 → Gemfile.5.1} +1 -1
- data/{gemfiles/Gemfile.5.1.lock → Gemfile.5.1.lock} +1 -1
- data/{gemfiles/Gemfile.5.1.pg → Gemfile.5.1.pg} +1 -1
- data/{gemfiles/Gemfile.5.1.pg.lock → Gemfile.5.1.pg.lock} +1 -1
- data/Gemfile.lock +1 -1
- data/README.md +3 -3
- data/lib/assignable_values/active_record/restriction/base.rb +1 -1
- data/lib/assignable_values/version.rb +1 -1
- data/spec/assignable_values/active_record_spec.rb +71 -13
- metadata +14 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cc767440e4e60cd5e1d090edf24bbbe5750072010d72f8d871ff2fb3c5963aed
|
4
|
+
data.tar.gz: b50641114a05d2c0a25c969e5b845a952e84944b65f1664b4c77e446f209d096
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
-
|
11
|
-
-
|
12
|
-
-
|
13
|
-
-
|
14
|
-
-
|
15
|
-
-
|
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:
|
19
|
+
- gemfile: Gemfile.2.3
|
20
20
|
rvm: 2.1.8
|
21
|
-
- gemfile:
|
21
|
+
- gemfile: Gemfile.2.3
|
22
22
|
rvm: 2.3.1
|
23
|
-
- gemfile:
|
23
|
+
- gemfile: Gemfile.2.3
|
24
24
|
rvm: 2.4.2
|
25
|
-
- gemfile:
|
25
|
+
- gemfile: Gemfile.3.2
|
26
26
|
rvm: 2.3.1
|
27
|
-
- gemfile:
|
27
|
+
- gemfile: Gemfile.3.2
|
28
28
|
rvm: 2.4.2
|
29
|
-
- gemfile:
|
29
|
+
- gemfile: Gemfile.4.2
|
30
30
|
rvm: 1.8.7
|
31
|
-
- gemfile:
|
31
|
+
- gemfile: Gemfile.4.2
|
32
32
|
rvm: 2.4.2
|
33
|
-
- gemfile:
|
33
|
+
- gemfile: Gemfile.5.0
|
34
34
|
rvm: 2.1.8
|
35
|
-
- gemfile:
|
35
|
+
- gemfile: Gemfile.5.0
|
36
36
|
rvm: 1.8.7
|
37
|
-
- gemfile:
|
37
|
+
- gemfile: Gemfile.5.1
|
38
38
|
rvm: 2.1.8
|
39
|
-
- gemfile:
|
39
|
+
- gemfile: Gemfile.5.1
|
40
40
|
rvm: 1.8.7
|
41
|
-
- gemfile:
|
41
|
+
- gemfile: Gemfile.5.1.pg
|
42
42
|
rvm: 2.1.8
|
43
|
-
- gemfile:
|
43
|
+
- gemfile: Gemfile.5.1.pg
|
44
44
|
rvm: 1.8.7
|
45
45
|
|
46
46
|
sudo: false
|
data/Gemfile
CHANGED
@@ -1 +1 @@
|
|
1
|
-
./
|
1
|
+
./Gemfile.4.2
|
data/Gemfile.lock
CHANGED
@@ -1 +1 @@
|
|
1
|
-
./
|
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
|
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 ==
|
243
|
+
args = delegate.method(delegate_query_method).arity == 0 ? [] : [record]
|
244
244
|
delegate.send(delegate_query_method, *args)
|
245
245
|
end
|
246
246
|
|
@@ -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
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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.
|
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:
|
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
|