factory_girl_remote_strategy 0.0.6 → 0.0.7

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: a1da2ce9b34391189b1ac43cd32de2a39a2a4c92
4
- data.tar.gz: c60a3580d849e86c768bf99fccd4b107ba62fa56
3
+ metadata.gz: ce58337e23b72366c09ab620b0d6c70ce38da4e7
4
+ data.tar.gz: f7882563ab29647fcb1409f99359ca4b8f4aa45c
5
5
  SHA512:
6
- metadata.gz: fd350cf6b42a8774bc7e4e35bababb7819b4d49fa7f196b70653b1e8774a8e27f7ea04143a89675820aa479dab04993320e921945261172bf753f4c2ec432764
7
- data.tar.gz: 6f5ecd9152aed7283bcb5de63972ea32d055fcc2436f81ba695340247798ef0c34d50d073d32b2fa4383df9b75b3dd45f34b393ce59f020e9ca8a3b83e381d4d
6
+ metadata.gz: 77531f5ee48247c23d5b8ae304988d1dad2e2d1a76e07ffc0a69a80c2b0c0f2ef04f7fa070f6a0fc247da726523355b3b5cdf16843210b14d2f28de4f69ce4c1
7
+ data.tar.gz: cc7d8714e9c337663e87d775564e1974c6be33e481d5939e73d66c10789e168e4b020c3c2e99efe3f8d8adfbc708cf732e078e7d3ca2adf1278d1c9c2f0c1342
@@ -1,3 +1,3 @@
1
1
  module FactoryGirlRemoteStrategy
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.7"
3
3
  end
@@ -61,14 +61,27 @@ module FactoryGirl
61
61
  "#{entity.class.site}#{entity.class.prefix}#{entity.class.collection_name}/#{entity.id}.json"
62
62
  end
63
63
 
64
- def collection_url(collection)
65
- (collection.first.is_a?(Class) ? collection.first : collection.first.class).instance_eval { "#{site}#{prefix}#{collection_name}.json" }
64
+ def collection_url(collection, params = {})
65
+ (collection.first.is_a?(Class) ? collection.first : collection.first.class).instance_eval { "#{site}#{prefix}#{collection_name}.json#{'?' if params.any?}#{params.to_query}" }
66
+ end
67
+ end
68
+ end
69
+
70
+ class RemoteNotFoundStrategy < RemoteStrategy
71
+ def result(evaluation)
72
+ @strategy.result(evaluation).tap do |e|
73
+ body = { errors: [{ code: 'resource_not_found',
74
+ message: "Couldn't find #{e.class} with #{e.class.primary_key}=#{e.public_send(e.class.primary_key)}" } ] }.to_json
75
+ FakeWeb.register_uri(:get, self.class.entity_url(e), body: body, status: 404)
76
+ remote_search(e.class, search: { :"#{e.class.primary_key}_eq" => e.public_send(e.class.primary_key) }) # empty search
77
+ remote_search(e.class, search: { :"#{e.class.primary_key}_in" => [e.public_send(e.class.primary_key)] }) # empty search
66
78
  end
67
79
  end
68
80
  end
69
81
  end
70
82
 
71
83
  FactoryGirl.register_strategy(:remote, FactoryGirl::RemoteStrategy)
84
+ FactoryGirl.register_strategy(:remote_not_found, FactoryGirl::RemoteNotFoundStrategy)
72
85
 
73
86
  ##
74
87
  # Helper method for register search url with provided params and serialized collection as response.
@@ -76,6 +89,6 @@ FactoryGirl.register_strategy(:remote, FactoryGirl::RemoteStrategy)
76
89
  def remote_search(*args)
77
90
  params = args.extract_options!
78
91
  collection = args.flatten
79
- FakeWeb.register_uri(:get, "#{FactoryGirl::RemoteStrategy.collection_url(collection)}?#{params.to_query}",
92
+ FakeWeb.register_uri(:get, FactoryGirl::RemoteStrategy.collection_url(collection, params),
80
93
  body: (collection.first.is_a?(Class) ? "[]" : collection.map { |e| FactoryGirl::RemoteStrategy.entity_hash(e) }.to_json))
81
94
  end
@@ -0,0 +1,19 @@
1
+ require "spec_helper"
2
+
3
+ describe FactoryGirl::RemoteNotFoundStrategy do
4
+ before { FactoryGirl.remote_not_found(:incident, id: 1) }
5
+
6
+ it "registers 404 get url with FakeWeb" do
7
+ expect { Incident.find(1) }.to raise_error ActiveResource::ResourceNotFound
8
+ end
9
+
10
+ it "registers search by id as one in array request with empty array" do
11
+ incident = Incident.find(:first, params: { search: { id_in: [1] } })
12
+ expect(incident).to be_nil
13
+ end
14
+
15
+ it "registers search by id as exact value request with empty array" do
16
+ incident = Incident.find(:first, params: { search: { id_eq: 1 } })
17
+ expect(incident).to be_nil
18
+ end
19
+ 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.6
4
+ version: 0.0.7
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-08-30 00:00:00.000000000 Z
11
+ date: 2014-11-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -130,6 +130,7 @@ files:
130
130
  - spec/factories/postcode.rb
131
131
  - spec/factories/user.rb
132
132
  - spec/factories/victim.rb
133
+ - spec/factory_girl_remote_not_found_strategy_spec.rb
133
134
  - spec/factory_girl_remote_strategy_spec.rb
134
135
  - spec/spec_helper.rb
135
136
  - spec/support/group.rb
@@ -170,6 +171,7 @@ test_files:
170
171
  - spec/factories/postcode.rb
171
172
  - spec/factories/user.rb
172
173
  - spec/factories/victim.rb
174
+ - spec/factory_girl_remote_not_found_strategy_spec.rb
173
175
  - spec/factory_girl_remote_strategy_spec.rb
174
176
  - spec/spec_helper.rb
175
177
  - spec/support/group.rb