rspec_rabl 0.0.3 → 0.0.4
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 +4 -4
- data/.travis.yml +8 -0
- data/README.md +48 -7
- data/lib/rspec/rabl/attribute_matcher.rb +11 -3
- data/lib/rspec/rabl/error.rb +7 -0
- data/lib/rspec/rabl/example_group.rb +1 -1
- data/lib/rspec_rabl.rb +1 -0
- data/lib/rspec_rabl/version.rb +1 -1
- data/rspec_rabl.gemspec +1 -1
- data/spec/functional/custom_matchers_spec.rb +35 -17
- data/spec/functional/render_object_spec.rb +6 -6
- metadata +42 -41
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0eb7b0f70a6a7a7667d50e4aa5de113475d21cc4
|
4
|
+
data.tar.gz: ac565a1fe7f0c7faa5eae3133a4e92853e9a6cd9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 27f25bff886dabb8d0d97661d5153f996da602c5be13428469e016a6798ced1cdf3c8b5b423222c846a396d22efc1cf8b45540d6dfe01438370de9797fba9734
|
7
|
+
data.tar.gz: 53f7c59978e2270fff20a2e2fd1a82b69f1ac3112c8767f4fffcea0931c4fb24451431df2f37ad7debe67328dfbfa5a258a1e8003c3ecd12a85322b0253cf37f
|
data/.travis.yml
ADDED
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# RspecRabl
|
2
2
|
|
3
|
-
|
3
|
+
A collection of convenient helpers for writing view specs with rabl templates.
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
@@ -8,17 +8,58 @@ Add this line to your application's Gemfile:
|
|
8
8
|
|
9
9
|
gem 'rspec_rabl'
|
10
10
|
|
11
|
-
|
11
|
+
## Usage
|
12
12
|
|
13
|
-
|
13
|
+
First make sure you configure rspec\_rabl in your spec\_helper.rb file (see Configuration below).
|
14
14
|
|
15
|
-
|
15
|
+
Now your templates can be rendered with whatever data you like for testing:
|
16
16
|
|
17
|
-
|
17
|
+
```ruby
|
18
|
+
describe "budgets/show/rabl" do # this tells us what template you want to test
|
19
|
+
let(:budget) { Budget.new }
|
20
|
+
rabl_data(:root => 'budget') { budget } # this tells us what data to use when rendering and what structure you expect the template to have (use root and object_root just like rabl)
|
18
21
|
|
19
|
-
|
22
|
+
it "renders valid json" do
|
23
|
+
expect {
|
24
|
+
JSON.parse(rendered_template) # rendered_template is the rendered string
|
25
|
+
}.not_to raise_error
|
26
|
+
end
|
27
|
+
|
28
|
+
it "renders the data in some specific way" do
|
29
|
+
expect(parsed_json['budget']['date']).to eq("1984") # parsed_json is the parsed out version of the rendered string
|
30
|
+
end
|
31
|
+
end
|
32
|
+
```
|
33
|
+
|
34
|
+
But most of the time you want to check some pretty common things like:
|
35
|
+
|
36
|
+
```ruby
|
37
|
+
describe "budgets/show.rabl" do
|
38
|
+
let(:budget) { Budget.new }
|
39
|
+
rabl_data(:root => 'budget') { budget }
|
40
|
+
|
41
|
+
it { should render_attribute(:amount) } # parsed_json['budget']['amount'] == budget.amount
|
42
|
+
it { should render_attribute(:amount).with(:friendly_amount) } # parsed_json['budget']['amount'] == budget.friendly_amount
|
43
|
+
it { should render_attribute(:amount).with_value("45.00") } # parsed_json['budget']['amount'] == "45.00"
|
44
|
+
end
|
45
|
+
|
46
|
+
describe "budgets/index.rabl" do
|
47
|
+
let(:budgets) { [ Budget.new ] }
|
48
|
+
rabl_data(:root => 'budgets', :object_root => 'budget') { budgets }
|
49
|
+
|
50
|
+
it { should render_attribute(:amount) } # parsed_json['budgets'].first['budget']['amount'] == budgets.first.amount
|
51
|
+
end
|
52
|
+
```
|
53
|
+
|
54
|
+
## Configuration
|
55
|
+
|
56
|
+
The easiest way to configure this is simple
|
57
|
+
|
58
|
+
```ruby
|
59
|
+
require 'rspec/rails_rabl'
|
60
|
+
```
|
20
61
|
|
21
|
-
|
62
|
+
For more detailed configuration just look at that file to see what configurations it is making.
|
22
63
|
|
23
64
|
## Contributing
|
24
65
|
|
@@ -70,14 +70,22 @@ module RSpec
|
|
70
70
|
|
71
71
|
def parse_collection_object
|
72
72
|
data = parsed
|
73
|
-
|
73
|
+
if opts[:root]
|
74
|
+
data = data.fetch(opts[:root]){ raise ::RSpec::Rabl::Error.new("Missing Root #{opts[:root]}") }
|
75
|
+
end
|
74
76
|
data = data.first
|
75
|
-
|
77
|
+
if opts[:object_root]
|
78
|
+
data = data.fetch(opts[:object_root]){ raise ::RSpec::Rabl::Error.new("Missing Object Root #{opts[:object_root]}") }
|
79
|
+
end
|
76
80
|
data
|
77
81
|
end
|
78
82
|
|
79
83
|
def parse_object
|
80
|
-
|
84
|
+
if opts[:root]
|
85
|
+
parsed.fetch(opts[:root]){ raise ::RSpec::Rabl::Error.new("Missing Object Root") }
|
86
|
+
else
|
87
|
+
parsed
|
88
|
+
end
|
81
89
|
end
|
82
90
|
|
83
91
|
def parsed
|
data/lib/rspec_rabl.rb
CHANGED
data/lib/rspec_rabl/version.rb
CHANGED
data/rspec_rabl.gemspec
CHANGED
@@ -21,6 +21,6 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.add_development_dependency "bundler", "~> 1.3"
|
22
22
|
spec.add_development_dependency "rake"
|
23
23
|
spec.add_development_dependency "pry-nav"
|
24
|
-
spec.add_runtime_dependency "rspec" , "
|
24
|
+
spec.add_runtime_dependency "rspec" , ">= 2.14"
|
25
25
|
spec.add_runtime_dependency "rabl", "~> 0.9"
|
26
26
|
end
|
@@ -5,42 +5,60 @@ describe "Customer Matchers" do
|
|
5
5
|
|
6
6
|
describe "user.rabl" do
|
7
7
|
rabl_data(:root => 'user'){ user }
|
8
|
-
it{
|
9
|
-
it{
|
10
|
-
it{
|
11
|
-
it{
|
12
|
-
it{
|
8
|
+
it{ expect(subject).to render_attribute(:guid) }
|
9
|
+
it{ expect(subject).to render_attribute(:first_name) }
|
10
|
+
it{ expect(subject).to render_attribute(:last_name) }
|
11
|
+
it{ expect(subject).to render_attribute(:email) }
|
12
|
+
it{ expect(subject).to_not render_attribute(:password) }
|
13
13
|
end
|
14
14
|
|
15
15
|
describe "user_aliases.rabl" do
|
16
16
|
rabl_data(:root => 'user'){ user }
|
17
|
-
it{
|
18
|
-
it{
|
17
|
+
it{ expect(subject).to render_attribute(:id).with(:guid) }
|
18
|
+
it{ expect(subject).to render_attribute(:team).with_value('Gorby Puff') }
|
19
19
|
end
|
20
20
|
|
21
21
|
describe "index.rabl" do
|
22
22
|
rabl_data(:root => 'users', :object_root => 'user'){ [user] }
|
23
|
-
it{
|
24
|
-
it{
|
25
|
-
it{
|
26
|
-
it{
|
27
|
-
it{
|
23
|
+
it{ expect(subject).to render_attribute(:guid) }
|
24
|
+
it{ expect(subject).to render_attribute(:first_name) }
|
25
|
+
it{ expect(subject).to render_attribute(:last_name) }
|
26
|
+
it{ expect(subject).to render_attribute(:email) }
|
27
|
+
it{ expect(subject).to_not render_attribute(:password) }
|
28
|
+
end
|
29
|
+
|
30
|
+
describe "index.rabl" do
|
31
|
+
rabl_data(:root => 'foobar'){ [user] }
|
32
|
+
it "gives an error specific for missing root" do
|
33
|
+
expect{
|
34
|
+
expect(subject).to render_attribute(:guid)
|
35
|
+
}.to raise_error(RSpec::Rabl::Error, /missing root/i)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
describe "index.rabl" do
|
40
|
+
rabl_data(:root => 'users', :object_root => "player"){ [user] }
|
41
|
+
it "gives an error specific for incorrect object_root" do
|
42
|
+
expect{
|
43
|
+
expect(subject).to render_attribute(:guid)
|
44
|
+
}.to raise_error(RSpec::Rabl::Error, /missing object root/i)
|
45
|
+
end
|
28
46
|
end
|
29
47
|
|
30
48
|
describe "rootless_index.rabl" do
|
31
49
|
rabl_data(:root => false, :object_root => 'user'){ [user] }
|
32
|
-
it{
|
33
|
-
it{
|
50
|
+
it{ expect(subject).to render_attribute(:guid) }
|
51
|
+
it{ expect(subject).to_not render_attribute(:password) }
|
34
52
|
end
|
35
53
|
|
36
54
|
describe "bare_index.rabl" do
|
37
55
|
rabl_data(:root => false, :object_root => false){ [user] }
|
38
|
-
it{
|
39
|
-
it{
|
56
|
+
it{ expect(subject).to render_attribute(:guid) }
|
57
|
+
it{ expect(subject).to_not render_attribute(:password) }
|
40
58
|
end
|
41
59
|
|
42
60
|
describe "nested/test.rabl" do
|
43
61
|
rabl_data(:root => 'test'){ user }
|
44
|
-
it{
|
62
|
+
it{ expect(subject).to render_attribute(:guid) }
|
45
63
|
end
|
46
64
|
end
|
@@ -5,19 +5,19 @@ describe "User Views" do
|
|
5
5
|
rabl_data{ user }
|
6
6
|
|
7
7
|
describe "user.rabl" do
|
8
|
-
it "
|
9
|
-
rendered_template.
|
8
|
+
it "makes the rendered template available" do
|
9
|
+
expect(rendered_template).to eq '{"user":{"guid":"abc","first_name":"gob","last_name":"bluth","email":"gob@bluth.com"}}'
|
10
10
|
end
|
11
11
|
|
12
|
-
it "
|
13
|
-
parsed_json.
|
12
|
+
it "makes the parsed template available" do
|
13
|
+
expect(parsed_json).to eq({
|
14
14
|
'user' => {
|
15
15
|
'guid' => user.guid,
|
16
16
|
'first_name' => user.first_name,
|
17
17
|
'last_name' => user.last_name,
|
18
18
|
'email' => user.email,
|
19
19
|
}
|
20
|
-
}
|
20
|
+
})
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
@@ -25,7 +25,7 @@ describe "User Views" do
|
|
25
25
|
rabl_config( {:view_paths => 'spec/fixtures/nested'} )
|
26
26
|
|
27
27
|
it "should allow us to override the Rabl config" do
|
28
|
-
parsed_json.
|
28
|
+
expect(parsed_json).to eq({'test' => {'guid' => user.guid}})
|
29
29
|
end
|
30
30
|
end
|
31
31
|
end
|
metadata
CHANGED
@@ -1,85 +1,85 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rspec_rabl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Ries
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-10-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
|
-
version_requirements: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ~>
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '1.3'
|
20
15
|
requirement: !ruby/object:Gem::Requirement
|
21
16
|
requirements:
|
22
|
-
- - ~>
|
17
|
+
- - "~>"
|
23
18
|
- !ruby/object:Gem::Version
|
24
19
|
version: '1.3'
|
25
|
-
prerelease: false
|
26
20
|
type: :development
|
27
|
-
|
28
|
-
name: rake
|
21
|
+
prerelease: false
|
29
22
|
version_requirements: !ruby/object:Gem::Requirement
|
30
23
|
requirements:
|
31
|
-
- -
|
24
|
+
- - "~>"
|
32
25
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
26
|
+
version: '1.3'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
34
29
|
requirement: !ruby/object:Gem::Requirement
|
35
30
|
requirements:
|
36
|
-
- -
|
31
|
+
- - ">="
|
37
32
|
- !ruby/object:Gem::Version
|
38
33
|
version: '0'
|
39
|
-
prerelease: false
|
40
34
|
type: :development
|
41
|
-
|
42
|
-
name: pry-nav
|
35
|
+
prerelease: false
|
43
36
|
version_requirements: !ruby/object:Gem::Requirement
|
44
37
|
requirements:
|
45
|
-
- -
|
38
|
+
- - ">="
|
46
39
|
- !ruby/object:Gem::Version
|
47
40
|
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: pry-nav
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
44
|
requirements:
|
50
|
-
- -
|
45
|
+
- - ">="
|
51
46
|
- !ruby/object:Gem::Version
|
52
47
|
version: '0'
|
53
|
-
prerelease: false
|
54
48
|
type: :development
|
55
|
-
|
56
|
-
name: rspec
|
49
|
+
prerelease: false
|
57
50
|
version_requirements: !ruby/object:Gem::Requirement
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - ">="
|
60
53
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
62
57
|
requirement: !ruby/object:Gem::Requirement
|
63
58
|
requirements:
|
64
|
-
- -
|
59
|
+
- - ">="
|
65
60
|
- !ruby/object:Gem::Version
|
66
61
|
version: '2.14'
|
67
|
-
prerelease: false
|
68
62
|
type: :runtime
|
69
|
-
|
70
|
-
name: rabl
|
63
|
+
prerelease: false
|
71
64
|
version_requirements: !ruby/object:Gem::Requirement
|
72
65
|
requirements:
|
73
|
-
- -
|
66
|
+
- - ">="
|
74
67
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
68
|
+
version: '2.14'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rabl
|
76
71
|
requirement: !ruby/object:Gem::Requirement
|
77
72
|
requirements:
|
78
|
-
- - ~>
|
73
|
+
- - "~>"
|
79
74
|
- !ruby/object:Gem::Version
|
80
75
|
version: '0.9'
|
81
|
-
prerelease: false
|
82
76
|
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0.9'
|
83
83
|
description: Provides a more declarative form of view testing for users of rabl
|
84
84
|
email:
|
85
85
|
- michael@riesd.com
|
@@ -87,12 +87,14 @@ executables: []
|
|
87
87
|
extensions: []
|
88
88
|
extra_rdoc_files: []
|
89
89
|
files:
|
90
|
-
- .gitignore
|
90
|
+
- ".gitignore"
|
91
|
+
- ".travis.yml"
|
91
92
|
- Gemfile
|
92
93
|
- LICENSE.txt
|
93
94
|
- README.md
|
94
95
|
- Rakefile
|
95
96
|
- lib/rspec/rabl/attribute_matcher.rb
|
97
|
+
- lib/rspec/rabl/error.rb
|
96
98
|
- lib/rspec/rabl/example_group.rb
|
97
99
|
- lib/rspec/rabl/helpers.rb
|
98
100
|
- lib/rspec/rabl/matchers.rb
|
@@ -114,24 +116,24 @@ homepage: ''
|
|
114
116
|
licenses:
|
115
117
|
- MIT
|
116
118
|
metadata: {}
|
117
|
-
post_install_message:
|
119
|
+
post_install_message:
|
118
120
|
rdoc_options: []
|
119
121
|
require_paths:
|
120
122
|
- lib
|
121
123
|
required_ruby_version: !ruby/object:Gem::Requirement
|
122
124
|
requirements:
|
123
|
-
- -
|
125
|
+
- - ">="
|
124
126
|
- !ruby/object:Gem::Version
|
125
127
|
version: '0'
|
126
128
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
127
129
|
requirements:
|
128
|
-
- -
|
130
|
+
- - ">="
|
129
131
|
- !ruby/object:Gem::Version
|
130
132
|
version: '0'
|
131
133
|
requirements: []
|
132
|
-
rubyforge_project:
|
133
|
-
rubygems_version: 2.
|
134
|
-
signing_key:
|
134
|
+
rubyforge_project:
|
135
|
+
rubygems_version: 2.2.2
|
136
|
+
signing_key:
|
135
137
|
specification_version: 4
|
136
138
|
summary: Provides a more declarative form of view testing for users of rabl
|
137
139
|
test_files:
|
@@ -145,4 +147,3 @@ test_files:
|
|
145
147
|
- spec/functional/render_object_spec.rb
|
146
148
|
- spec/spec_helper.rb
|
147
149
|
- spec/support/user_context.rb
|
148
|
-
has_rdoc:
|