assignable_values 0.15.1 → 0.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|