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: a11565e338f6f597a19aafe78517124f014ce3e5
4
- data.tar.gz: ff58b428e9d9d117c8ebd9ab22e841c4f60dbe80
3
+ metadata.gz: 72cebd14bfa457a7a13395abf5e114c89c13441b
4
+ data.tar.gz: 35bf3b4b9411cec46c1350b72318cc25cad1b4da
5
5
  SHA512:
6
- metadata.gz: 578e1c26d6c3ef56b1b1769a98e8a9adf82621c51e22406bd9b9b0c1c70eeee69dfa5aba96a9b40f4b86e51f0fd18e8e841800f5f24d2ec5da8fe147a0683d4c
7
- data.tar.gz: db2715f4edb076ec0bfc3e1e241db6bca3e517eba5ac6975fe4529af349c9a91c8714ebf305a42eef6eea0c10ed255b4cbd1f8ecbeac01a9eb09bf472a8fa957
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)
@@ -1,3 +1,3 @@
1
1
  module FactoryGirlRemoteStrategy
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
@@ -0,0 +1,4 @@
1
+ FactoryGirl.define do
2
+ factory :postcode do
3
+ end
4
+ end
@@ -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
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-12 00:00:00.000000000 Z
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