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: 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