active_repository 0.5.0 → 0.5.1

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
  SHA1:
3
- metadata.gz: f77848a1b93e0ada4018bbbe7afe9337ffb8dc4a
4
- data.tar.gz: d014d4d6cab9da02be3cabeb82dd1b13cd03a41e
3
+ metadata.gz: d3682a06da966f35d1d173a4bfd20bf284fd6618
4
+ data.tar.gz: 842a9c142db9cbb0c31efcf5ac5cefaf6d21f79c
5
5
  SHA512:
6
- metadata.gz: ca45ee75a46da4e03b32551cfec96921fd96116803cde05488b2ff4dd333879c07b50df00460fd2856066b100147fc5a66aa21314911eea3bfe4ce394402f0e9
7
- data.tar.gz: 83d7295e9d5b4ee36eae6cab96bc66df7a651956b2cfe4d438e9e7f02a4f86aa6e1daf03fda2838698b6a63d34d41443df2de1e0240f38559a21e8769d82872b
6
+ metadata.gz: 6a27dda12a0ce272d9a187ed45c9b9c795e954156c41d366461b80729deeeef8a4318932699b05cf32358966b632800e31e0ec73bc933a62b62a9f75dd0ce963
7
+ data.tar.gz: 6879de80c9ce5aa1de0cc2094b5e6b506758db4f672198581a801de6afaba9b57cca0c086dc193aa54bc770bf3563f3923eecf403a8c2e8a0b81b87a61f6fdfc
@@ -15,10 +15,11 @@ module ActiveRepository
15
15
  def has_many(association_id, options = {})
16
16
  define_method(association_id) do
17
17
  options = {
18
- class_name: association_id.to_s.classify
18
+ class_name: association_id.to_s.classify,
19
+ foreign_key: self.class.to_s.foreign_key
19
20
  }.merge(options)
20
21
 
21
- foreign_key = self.class.to_s.foreign_key
22
+ foreign_key = options[:foreign_key]
22
23
  klass = options[:class_name].constantize
23
24
 
24
25
  klass.where(foreign_key => id)
@@ -28,7 +29,8 @@ module ActiveRepository
28
29
  # Defines "has one" type relation between ActiveRepository objects
29
30
  def has_one(association_id, options = {})
30
31
  options = {
31
- class_name: association_id.to_s.classify
32
+ class_name: association_id.to_s.classify,
33
+ foreign_key: self.to_s.foreign_key
32
34
  }.merge(options)
33
35
 
34
36
  has_one_methods(association_id, options)
@@ -61,7 +63,7 @@ module ActiveRepository
61
63
 
62
64
  def define_has_one_method(association_id, options)
63
65
  define_method(association_id) do
64
- foreign_key = self.class.to_s.foreign_key
66
+ foreign_key = options[:foreign_key]
65
67
  klass = options[:class_name].constantize
66
68
 
67
69
  klass.where(foreign_key => self.id).first
@@ -1,3 +1,3 @@
1
1
  module ActiveRepository
2
- VERSION = "0.5.0"
2
+ VERSION = "0.5.1"
3
3
  end
@@ -10,6 +10,25 @@ describe ActiveRepository::Base, "associations" do
10
10
  connection.create_table(:countries, :force => true) {}
11
11
  end
12
12
 
13
+ class CountryRepository < ActiveRepository::Base
14
+ self.persistence_class = Country
15
+ self.save_in_memory = false
16
+ end
17
+
18
+ class Mountain < ActiveRecord::Base
19
+ establish_connection :adapter => "sqlite3", :database => ":memory:"
20
+ connection.create_table(:mountains, :force => true) do |t|
21
+ t.integer :country_id
22
+ end
23
+ end
24
+
25
+ class President < ActiveRecord::Base
26
+ establish_connection :adapter => "sqlite3", :database => ":memory:"
27
+ connection.create_table(:presidents, :force => true) do |t|
28
+ t.integer :country_id
29
+ end
30
+ end
31
+
13
32
  class School < ActiveRecord::Base
14
33
  establish_connection :adapter => "sqlite3", :database => ":memory:"
15
34
  connection.create_table(:schools, :force => true) do |t|
@@ -43,6 +62,9 @@ describe ActiveRepository::Base, "associations" do
43
62
  Object.send :remove_const, :City
44
63
  Object.send :remove_const, :Author
45
64
  Object.send :remove_const, :Country
65
+ Object.send :remove_const, :CountryRepository
66
+ Object.send :remove_const, :Mountain
67
+ Object.send :remove_const, :President
46
68
  Object.send :remove_const, :School
47
69
  Object.send :remove_const, :Book
48
70
  end
@@ -90,6 +112,22 @@ describe ActiveRepository::Base, "associations" do
90
112
  end
91
113
  end
92
114
 
115
+ context "with ActiveRecord children but different naming scheme requiring foreign_key option" do
116
+ it "honors foreign_key option to properly fetch child records from has_many" do
117
+ CountryRepository.has_many :mountains, :foreign_key => "country_id"
118
+ country = Country.create :id => 1
119
+ mountain_1 = Mountain.create :country_id => 1, :id => 1
120
+ expect(CountryRepository.first.mountains).to eq([mountain_1])
121
+ end
122
+
123
+ it "honors foreign_key option to properly fetch child record from has_one" do
124
+ CountryRepository.has_one :president, :foreign_key => "country_id"
125
+ country = Country.create :id => 1
126
+ president_1 = President.create :country_id => 1, :id => 1
127
+ expect(CountryRepository.first.president).to eq(president_1)
128
+ end
129
+ end
130
+
93
131
  end
94
132
 
95
133
  describe "#belongs_to" do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_repository
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Caio Torres
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-22 00:00:00.000000000 Z
11
+ date: 2016-12-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: active_hash