resource_spec 0.2.0 → 0.3.0

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: 9bb861e58b40cf18f77d6ce576d3d88f2d43e526
4
- data.tar.gz: 12e5208fed9ff5cfd9be32d10429f51990da34e2
3
+ metadata.gz: f24223641c435c6047cc51f7c4d0f15b5fa94ec4
4
+ data.tar.gz: 2caa858459101327e5077587ea4e6d3c3cba679a
5
5
  SHA512:
6
- metadata.gz: 459e7463835bb1d49b42316ddb43780dc71e7590cf3ee013b4e7f11a2a2e774f6e16c8bfa497acaac9bfeeedab6b184769cd8b4499f3f2d95e828d486e7dc274
7
- data.tar.gz: cc0b200afaa66ae59bb5a0340783c74d03e9d222343807c201f768b0c810ceda91dbf30ef5f682f61a1d5136e0611f6b894b25776d9847ea7d6f9d70a63ca939
6
+ metadata.gz: 88ee506f6398202e8d6422babc6b74c593bd46d122dac6d9acbfaa93dcd84c7cf2cb79e7efa41fb500625ebfe18b63c135ec2ed0e02ab5f148693f8cd9a58e01
7
+ data.tar.gz: d199d63ffcfb0dab3496f073472d874ea474f0f5408f61d7ba7dfc915d3ec8190c793e30dc89c282e9f3245046d14aba59fcfe7e7a22fa411b883d4c36c95c58
data/README.md CHANGED
@@ -109,6 +109,24 @@ include_context "ResourceSpec", User do
109
109
  end
110
110
  ```
111
111
 
112
+ ### XHR
113
+
114
+ ```ruby
115
+ include_context "ResourceSpec", User do
116
+ it_behaves_like "POST :create", xhr: true
117
+ it_behaves_like "PUT :update", xhr: true
118
+ it_behaves_like "DELETE :destroy", xhr: true
119
+ end
120
+ ```
121
+
122
+ ### Paranoia on destroy
123
+
124
+ ```ruby
125
+ include_context "ResourceSpec", User do
126
+ it_behaves_like "DELETE :destroy", paranoid: true
127
+ end
128
+ ```
129
+
112
130
  ## Installation
113
131
 
114
132
  Add this line to your application's Gemfile:
@@ -1,30 +1,39 @@
1
- RSpec.shared_examples "POST :create" do
1
+ RSpec.shared_examples "POST :create" do |options = {}|
2
2
  describe "POST :create" do
3
- include_examples "POST :create, success"
3
+ include_examples "POST :create, success", options
4
+ include_examples "POST :create, fail", options
4
5
  end
5
6
  end
6
7
 
7
- RSpec.shared_examples "POST :create, success" do
8
+ RSpec.shared_examples "send POST :create" do |options = {}|
9
+ before do
10
+ if options[:xhr]
11
+ xhr :post, :create, url_args
12
+ else
13
+ post :create, url_args
14
+ end
15
+ end
16
+ end
17
+
18
+ RSpec.shared_examples "POST :create, success" do |options = {}|
8
19
  context "success" do
9
20
  let(:url_args) { create_url_args }
10
21
  let(:redirect_url) { success_create_url }
11
22
 
12
- before { post :create, url_args }
13
-
14
- include_examples "responds 301"
23
+ include_examples "send POST :create", options
24
+ include_examples "responds with success", options
15
25
  include_examples "resource has no errors"
16
26
  include_examples "resource persisted"
17
27
  include_examples "resource has expected attributes"
18
28
  end
19
29
  end
20
30
 
21
- RSpec.shared_examples "POST :create, fail" do
31
+ RSpec.shared_examples "POST :create, fail" do |options = {}|
22
32
  context "fail" do
23
33
  let(:url_args) { invalid_create_url_args }
24
34
 
25
- before { post :create, url_args }
26
-
27
- include_examples "responds 200"
35
+ include_examples "send POST :create", options
36
+ include_examples "responds with failure", options
28
37
  include_examples "resource has errors"
29
38
  end
30
39
  end
@@ -1,15 +1,21 @@
1
- RSpec.shared_examples "DELETE :destroy" do |**kwargs|
1
+ RSpec.shared_examples "DELETE :destroy" do |options = {}|
2
2
  describe "DELETE :destroy" do
3
3
  context "success" do
4
4
  let(:url_args) { destroy_url_args }
5
5
  let(:redirect_url) { success_destroy_url }
6
6
 
7
- before { delete :destroy, url_args }
7
+ before do
8
+ if options[:xhr]
9
+ xhr :delete, :destroy, url_args
10
+ else
11
+ delete :destroy, url_args
12
+ end
13
+ end
8
14
 
9
- include_examples "responds 301"
15
+ include_examples "responds with success", options
10
16
 
11
17
  it "resource destroyed" do
12
- if kwargs[:paranoid]
18
+ if options[:paranoid]
13
19
  expect(resource.deleted_at).to be_present
14
20
  else
15
21
  expect { resource.reload }.to raise_error(
@@ -10,6 +10,28 @@ RSpec.shared_examples "responds 301" do
10
10
  end
11
11
  end
12
12
 
13
+ RSpec.shared_examples "responds with success" do |options = {}|
14
+ if options[:xhr]
15
+ include_examples "responds 200"
16
+ else
17
+ include_examples "responds 301"
18
+ end
19
+ end
20
+
21
+ RSpec.shared_examples "responds with failure" do |options = {}|
22
+ if options[:xhr]
23
+ include_examples "responds 422"
24
+ else
25
+ include_examples "responds 200"
26
+ end
27
+ end
28
+
29
+ RSpec.shared_examples "responds 422" do
30
+ it "responds 422" do
31
+ expect(response).to be_unprocessable
32
+ end
33
+ end
34
+
13
35
  RSpec.shared_examples "resource has no errors" do
14
36
  it "resource has no errors" do
15
37
  expect(resource.errors).to be_blank, "Given params: #{url_args} failed with errors: #{resource.errors.full_messages}"
@@ -1,30 +1,38 @@
1
- RSpec.shared_examples "PUT :update" do
1
+ RSpec.shared_examples "PUT :update" do |options = {}|
2
2
  describe "PUT :update" do
3
- include_examples "PUT :update, success"
4
- include_examples "PUT :update, fail"
3
+ include_examples "PUT :update, success", options
4
+ include_examples "PUT :update, fail", options
5
5
  end
6
6
  end
7
7
 
8
- RSpec.shared_examples "PUT :update, success" do
8
+ RSpec.shared_examples "send PUT :update" do |options = {}|
9
+ before do
10
+ if options[:xhr]
11
+ xhr :put, :update, url_args
12
+ else
13
+ put :update, url_args
14
+ end
15
+ end
16
+ end
17
+
18
+ RSpec.shared_examples "PUT :update, success" do |options = {}|
9
19
  context "success" do
10
20
  let(:url_args) { update_url_args }
11
21
  let(:redirect_url) { success_update_url }
12
22
 
13
- before { put :update, url_args }
14
-
15
- include_examples "responds 301"
23
+ include_examples "send PUT :update", options
24
+ include_examples "responds with success", options
16
25
  include_examples "resource has no errors"
17
26
  include_examples "resource has expected attributes"
18
27
  end
19
28
  end
20
29
 
21
- RSpec.shared_examples "PUT :update, fail" do
30
+ RSpec.shared_examples "PUT :update, fail" do |options = {}|
22
31
  context "fail" do
23
32
  let(:url_args) { invalid_update_url_args }
24
33
 
25
- before { post :update, url_args }
26
-
27
- include_examples "responds 200"
34
+ include_examples "send PUT :update", options
35
+ include_examples "responds with failure", options
28
36
  include_examples "resource has errors"
29
37
  end
30
38
  end
@@ -1,3 +1,3 @@
1
1
  module ResourceSpec
2
- VERSION = "0.2.0"
2
+ VERSION = "0.3.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: resource_spec
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Victor Sokolov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-11-12 00:00:00.000000000 Z
11
+ date: 2015-11-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler