factory_girl_remote_strategy 0.0.4 → 0.0.5
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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 72cebd14bfa457a7a13395abf5e114c89c13441b
|
4
|
+
data.tar.gz: 35bf3b4b9411cec46c1350b72318cc25cad1b4da
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 64112b9d37dc1fcf18ab261f775d1c502978130f73feb808b1ea56059b8463bdf894bccd61b7a0eb679b40fa9d13469b380f75036ba127a861fbcdd779d58695
|
7
|
+
data.tar.gz: 650a3c3de70d49a5dc90a0bd310fca16ebb073d122c7de4d0ee0ec0e0e5f8182da350e303d2e69cfd4e6f37b158202f9072c5ace20797ad188f2bcd87a1f65ab
|
@@ -24,6 +24,8 @@ module FactoryGirl
|
|
24
24
|
def result(evaluation)
|
25
25
|
@strategy.result(evaluation).tap do |e|
|
26
26
|
FakeWeb.register_uri(:get, self.class.entity_url(e), body: self.class.entity_hash(e).to_json)
|
27
|
+
remote_search(e, search: { :"#{e.class.primary_key}_eq" => e.public_send(e.class.primary_key) })
|
28
|
+
remote_search(e, search: { :"#{e.class.primary_key}_in" => [e.public_send(e.class.primary_key)] })
|
27
29
|
evaluation.notify(:after_remote, e) # runs after(:remote) callback
|
28
30
|
end
|
29
31
|
end
|
@@ -51,7 +53,7 @@ module FactoryGirl
|
|
51
53
|
attributes[k] = v.map { |e| entity_hash(e) }
|
52
54
|
end
|
53
55
|
end
|
54
|
-
{ entity.class.element_name => attributes, _metadata: { abilities: %w(update destroy) } }
|
56
|
+
{ entity.class.element_name => attributes, _metadata: { abilities: %w(update destroy) } }
|
55
57
|
end
|
56
58
|
|
57
59
|
def entity_url(entity)
|
@@ -71,4 +71,48 @@ describe FactoryGirl::RemoteStrategy do
|
|
71
71
|
memberships.should eq []
|
72
72
|
end
|
73
73
|
end
|
74
|
+
|
75
|
+
describe "Search by primary_key" do
|
76
|
+
context "primary_key is id" do
|
77
|
+
let!(:user) { remote(:user, id: 4) }
|
78
|
+
|
79
|
+
it "registers search url for equality <primary_key>_eq = <value>" do
|
80
|
+
expect { User.find(:first, params: { search: { id_eq: 4 } }) }.not_to raise_error
|
81
|
+
user = User.find(:first, params: { search: { id_eq: 4 } })
|
82
|
+
user.id.should == 4
|
83
|
+
end
|
84
|
+
|
85
|
+
it "registers search url for inclusion <primary_key>_in [<value>]" do
|
86
|
+
expect { User.find(:first, params: { search: { id_in: [4] } }) }.not_to raise_error
|
87
|
+
user = User.find(:first, params: { search: { id_in: [4] } })
|
88
|
+
user.id.should == 4
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
context "custom primary_key" do
|
93
|
+
let!(:postcode) { remote(:postcode, code: 'ABCD') }
|
94
|
+
|
95
|
+
it "registers search url for equality <primary_key>_eq = <value>" do
|
96
|
+
expect { Postcode.find(:first, params: { search: { code_eq: 'ABCD' } }) }.not_to raise_error
|
97
|
+
postcode = Postcode.find(:first, params: { search: { code_eq: 'ABCD' } })
|
98
|
+
postcode.code.should == 'ABCD'
|
99
|
+
end
|
100
|
+
|
101
|
+
it "registers search url for inclusion <primary_key>_in [<value>]" do
|
102
|
+
expect { Postcode.find(:first, params: { search: { code_in: ['ABCD'] } }) }.not_to raise_error
|
103
|
+
postcode = Postcode.find(:first, params: { search: { code_in: ['ABCD'] } })
|
104
|
+
postcode.code.should == 'ABCD'
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
context "custom primary_key" do
|
110
|
+
it "builds instance and registers get url with FakeWeb" do
|
111
|
+
FactoryGirl.remote(:postcode, code: 'FGH')
|
112
|
+
expect { Postcode.find('FGH') }.not_to raise_error
|
113
|
+
postcode = Postcode.find('FGH')
|
114
|
+
postcode.should be_kind_of Postcode
|
115
|
+
postcode.code.should == 'FGH'
|
116
|
+
end
|
117
|
+
end
|
74
118
|
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
require_relative "json_with_metadata_formatter"
|
2
|
+
|
3
|
+
class Postcode < ActiveResource::Base
|
4
|
+
self.element_name = "postcode"
|
5
|
+
self.collection_name = "postcodes"
|
6
|
+
self.format = JsonWithMetadataFormatter.new
|
7
|
+
self.site = "http://example.com"
|
8
|
+
self.prefix = "/api/v1/"
|
9
|
+
self.primary_key = 'code'
|
10
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: factory_girl_remote_strategy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Avoyants
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-06-
|
11
|
+
date: 2014-06-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -127,6 +127,7 @@ files:
|
|
127
127
|
- spec/factories/group.rb
|
128
128
|
- spec/factories/incident.rb
|
129
129
|
- spec/factories/membership.rb
|
130
|
+
- spec/factories/postcode.rb
|
130
131
|
- spec/factories/user.rb
|
131
132
|
- spec/factories/victim.rb
|
132
133
|
- spec/factory_girl_remote_strategy_spec.rb
|
@@ -135,6 +136,7 @@ files:
|
|
135
136
|
- spec/support/incident.rb
|
136
137
|
- spec/support/json_with_metadata_formatter.rb
|
137
138
|
- spec/support/membership.rb
|
139
|
+
- spec/support/postcode.rb
|
138
140
|
- spec/support/user.rb
|
139
141
|
- spec/support/victim.rb
|
140
142
|
homepage: ''
|
@@ -165,6 +167,7 @@ test_files:
|
|
165
167
|
- spec/factories/group.rb
|
166
168
|
- spec/factories/incident.rb
|
167
169
|
- spec/factories/membership.rb
|
170
|
+
- spec/factories/postcode.rb
|
168
171
|
- spec/factories/user.rb
|
169
172
|
- spec/factories/victim.rb
|
170
173
|
- spec/factory_girl_remote_strategy_spec.rb
|
@@ -173,5 +176,6 @@ test_files:
|
|
173
176
|
- spec/support/incident.rb
|
174
177
|
- spec/support/json_with_metadata_formatter.rb
|
175
178
|
- spec/support/membership.rb
|
179
|
+
- spec/support/postcode.rb
|
176
180
|
- spec/support/user.rb
|
177
181
|
- spec/support/victim.rb
|