factory_girl_remote_strategy 0.0.4 → 0.0.5
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:
|
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
|