polymorphic_integer_type 2.1.1 → 2.2.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
- SHA1:
3
- metadata.gz: 11fbd6f9c602a576f371e3229014f93c51c656d2
4
- data.tar.gz: 7de5bd1c342aaf386ef9cd3defe7cb2791e1bda4
2
+ SHA256:
3
+ metadata.gz: a821ba758df6177c1f89d6f147bedd24e5a96874b65e9bff7c348b04f5a60013
4
+ data.tar.gz: 23f8a6196d1523ef46d58af66612646a910744e511f959ff783af977e8ea56a6
5
5
  SHA512:
6
- metadata.gz: f266a00a2d64233c9362f344c2d9077ffbf0fd4df12bb3dd99734b239b9c0d2867dbe7b741e36c0348adc19f9e181204e534e70c307fa711e3323c6e2958f835
7
- data.tar.gz: 31355ff1e141213dd72935588ae45cb64ff4787407ce80ee0b242d76c7e04a41a665b432675a45b3f3d25259c44ed5c87f0fe6e3ddac13797950f703b9d689a0
6
+ metadata.gz: 0a4e980b7f71e2fd78f030fcd8053cb12923775075e1f9425ee999c24e65d017b30e248bfa484e5a1df7ee300afdf71c1ea03c8260663b475fc477431f81536e
7
+ data.tar.gz: 5e7be692212675c3f346d10b18328d9b35a0fc5bfc68fbfe19dfea1e0be112ad8d9410b6429b2986b212d64cf94e8825d2aa27d1aed29197625cdf8d45b5e81b
data/.gitignore CHANGED
@@ -17,3 +17,5 @@ spec/support/active_record.rb
17
17
  test/tmp
18
18
  test/version_tmp
19
19
  tmp
20
+ .byebug_history
21
+ polymorphic_integer_type_test
@@ -0,0 +1,20 @@
1
+ module PolymorphicIntegerType
2
+ module PolymorphicArrayValueExtension
3
+ def type_to_ids_mapping
4
+ super.tap do |result|
5
+ association = @associated_table.send(:association)
6
+ klass = association.active_record
7
+ name = association.name
8
+
9
+ if klass.respond_to?("#{name}_type_mapping")
10
+ result.transform_keys! do |key|
11
+ klass.send("#{name}_type_mapping").key(key)
12
+ end
13
+ end
14
+ result
15
+ end
16
+ end
17
+ end
18
+ end
19
+
20
+ ActiveRecord::PredicateBuilder::PolymorphicArrayValue.prepend(PolymorphicIntegerType::PolymorphicArrayValueExtension)
@@ -1,3 +1,3 @@
1
1
  module PolymorphicIntegerType
2
- VERSION = "2.1.1"
2
+ VERSION = "2.2.0"
3
3
  end
@@ -1,5 +1,6 @@
1
1
  require "polymorphic_integer_type/version"
2
2
  require "polymorphic_integer_type/extensions"
3
3
  require "polymorphic_integer_type/mapping"
4
+ require "polymorphic_integer_type/polymorphic_array_value_extension"
4
5
 
5
6
  module PolymorphicIntegerType; end
@@ -18,10 +18,10 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_development_dependency "bundler", "~> 1.2"
21
+ spec.add_dependency "activerecord"
22
+ spec.add_development_dependency "bundler"
22
23
  spec.add_development_dependency "rake"
23
24
  spec.add_development_dependency "rspec"
24
- spec.add_development_dependency "activerecord", "4.2.0"
25
- spec.add_development_dependency "mysql2", "0.3.16"
25
+ spec.add_development_dependency "sqlite3"
26
26
  spec.add_development_dependency "byebug"
27
27
  end
@@ -24,6 +24,17 @@ describe PolymorphicIntegerType do
24
24
  end
25
25
  end
26
26
 
27
+ context "when querying the associations" do
28
+ let(:source) { cat }
29
+ let(:target) { nil }
30
+ it "properly finds the object with a where" do
31
+ expect(Link.where(source: source, id: link.id).first).to eql link
32
+ end
33
+ it "properly finds the object with a find_by" do
34
+ expect(Link.find_by(source: source, id: link.id)).to eql link
35
+ end
36
+ end
37
+
27
38
  shared_examples "proper source" do
28
39
  it "should have the proper id, type and object for the source" do
29
40
  expect(link.source_id).to eql source.id
@@ -47,12 +58,12 @@ describe PolymorphicIntegerType do
47
58
 
48
59
  context "and the link is accessed through the associations" do
49
60
  before { link }
50
-
61
+
51
62
  it "should have the proper source" do
52
63
  expect(source.source_links[0].source).to eql source
53
64
  end
54
65
  end
55
-
66
+
56
67
  end
57
68
  context "When a link is given polymorphic record" do
58
69
  let(:link) { Link.create(source: source) }
@@ -137,7 +148,7 @@ describe PolymorphicIntegerType do
137
148
 
138
149
 
139
150
  end
140
-
151
+
141
152
  context "when the association is an STI table" do
142
153
  let(:link) { Link.create(source: source, target: whiskey) }
143
154
  let(:source) { Dog.create(name: "Bela", kind: "Dog", owner: owner) }
@@ -147,7 +158,7 @@ describe PolymorphicIntegerType do
147
158
  expect(link.source).to eql source
148
159
  end
149
160
  end
150
-
161
+
151
162
  context "when mapping is given inline in the belongs_to model" do
152
163
  class InlineLink < ActiveRecord::Base
153
164
  include PolymorphicIntegerType::Extensions
@@ -187,7 +198,7 @@ describe PolymorphicIntegerType do
187
198
  include_examples "proper target"
188
199
 
189
200
  it "creates foreign_type mapping method" do
190
- expect(Link.source_type_mapping).to eq({0 => "Person", 1 => "Animal"})
201
+ expect(Link.source_type_mapping).to eq({1 => "Person", 2 => "Animal"})
191
202
  expect(InlineLink.source_type_mapping).to eq({10 => "Person", 11 => "InlineAnimal"})
192
203
  end
193
204
 
data/spec/spec_helper.rb CHANGED
@@ -13,6 +13,7 @@ RSpec.configure do |config|
13
13
  config.before(:suite) do
14
14
  database_config = YAML.load(File.open("#{File.dirname(__FILE__)}/support/database.yml"))
15
15
  ActiveRecord::Base.establish_connection(database_config)
16
+ ActiveRecord::MigrationContext.new("#{File.dirname(__FILE__)}/support/migrations").migrate
16
17
  end
17
18
 
18
19
  config.around do |example|
@@ -1,4 +1,4 @@
1
1
  PolymorphicIntegerType::Mapping.configuration do |config|
2
- config.add :source, {0 => "Person", 1 => "Animal"}
3
- config.add :target, {0 => "Food", 1 => "Drink"}
2
+ config.add :source, {1 => "Person", 2 => "Animal"}
3
+ config.add :target, {1 => "Food", 2 => "Drink"}
4
4
  end
@@ -1,5 +1,5 @@
1
1
  ---
2
- :adapter: mysql2
2
+ :adapter: sqlite3
3
3
  :host: localhost
4
4
  :database: polymorphic_integer_type_test
5
5
  :username: root
@@ -1,4 +1,4 @@
1
- class CreateLinkTable < ActiveRecord::Migration
1
+ class CreateLinkTable < ActiveRecord::Migration[5.2]
2
2
 
3
3
  def up
4
4
  create_table :links do |t|
@@ -1,4 +1,4 @@
1
- class CreateAnimalTable < ActiveRecord::Migration
1
+ class CreateAnimalTable < ActiveRecord::Migration[5.2]
2
2
 
3
3
  def up
4
4
  create_table :animals do |t|
@@ -1,4 +1,4 @@
1
- class CreatePersonTable < ActiveRecord::Migration
1
+ class CreatePersonTable < ActiveRecord::Migration[5.2]
2
2
 
3
3
  def up
4
4
  create_table :people do |t|
@@ -1,4 +1,4 @@
1
- class CreateFoodTable < ActiveRecord::Migration
1
+ class CreateFoodTable < ActiveRecord::Migration[5.2]
2
2
 
3
3
  def up
4
4
  create_table :foods do |t|
@@ -1,4 +1,4 @@
1
- class CreateDrinkTable < ActiveRecord::Migration
1
+ class CreateDrinkTable < ActiveRecord::Migration[5.2]
2
2
 
3
3
  def up
4
4
  create_table :drinks do |t|
metadata CHANGED
@@ -1,31 +1,31 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: polymorphic_integer_type
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.1
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kyle d'Oliveira
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-05-04 00:00:00.000000000 Z
11
+ date: 2019-06-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: bundler
14
+ name: activerecord
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.2'
20
- type: :development
19
+ version: '0'
20
+ type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '1.2'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rake
28
+ name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
@@ -39,7 +39,7 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: rspec
42
+ name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
@@ -53,33 +53,33 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: activerecord
56
+ name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: 4.2.0
61
+ version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '='
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: 4.2.0
68
+ version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: mysql2
70
+ name: sqlite3
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '='
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
- version: 0.3.16
75
+ version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - '='
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
- version: 0.3.16
82
+ version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: byebug
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -111,6 +111,7 @@ files:
111
111
  - lib/polymorphic_integer_type.rb
112
112
  - lib/polymorphic_integer_type/extensions.rb
113
113
  - lib/polymorphic_integer_type/mapping.rb
114
+ - lib/polymorphic_integer_type/polymorphic_array_value_extension.rb
114
115
  - lib/polymorphic_integer_type/version.rb
115
116
  - polymorphic_integer_type.gemspec
116
117
  - spec/polymorphic_integer_type_spec.rb
@@ -147,8 +148,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
147
148
  - !ruby/object:Gem::Version
148
149
  version: '0'
149
150
  requirements: []
150
- rubyforge_project:
151
- rubygems_version: 2.6.14
151
+ rubygems_version: 3.0.3
152
152
  signing_key:
153
153
  specification_version: 4
154
154
  summary: Use integers rather than strings for the _type field