rspec_rabl 0.0.3 → 0.0.4

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: 2fde63cce810cb15be320f70d85ed90b9b341834
4
- data.tar.gz: b82e65fbea0f00f17978fccc1fadd9303f5e105b
3
+ metadata.gz: 0eb7b0f70a6a7a7667d50e4aa5de113475d21cc4
4
+ data.tar.gz: ac565a1fe7f0c7faa5eae3133a4e92853e9a6cd9
5
5
  SHA512:
6
- metadata.gz: d90331737609848be50b7986d3a5ebb572762abbb60dc5d3809b62b03ede36683941ef33f51f8bd178e9db28bfce1718c3ccb2e22f79d2be959a1f6013e67a84
7
- data.tar.gz: 3b94f096140eeb449a97a68f66158a15fd4e1c2557864f1fa155353dcc56ac5a3b7102d2c9fd013809f0b1a8c37d22d12deb40750172c613e8cb7bfd6a506b3e
6
+ metadata.gz: 27f25bff886dabb8d0d97661d5153f996da602c5be13428469e016a6798ced1cdf3c8b5b423222c846a396d22efc1cf8b45540d6dfe01438370de9797fba9734
7
+ data.tar.gz: 53f7c59978e2270fff20a2e2fd1a82b69f1ac3112c8767f4fffcea0931c4fb24451431df2f37ad7debe67328dfbfa5a258a1e8003c3ecd12a85322b0253cf37f
@@ -0,0 +1,8 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9
4
+ - 2.0
5
+ - 2.1
6
+ - jruby
7
+ script:
8
+ - bundle exec rspec
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # RspecRabl
2
2
 
3
- TODO: Write a gem description
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
- And then execute:
11
+ ## Usage
12
12
 
13
- $ bundle
13
+ First make sure you configure rspec\_rabl in your spec\_helper.rb file (see Configuration below).
14
14
 
15
- Or install it yourself as:
15
+ Now your templates can be rendered with whatever data you like for testing:
16
16
 
17
- $ gem install rspec_rabl
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
- ## Usage
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
- TODO: Write usage instructions here
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
- data = data[opts[:root]] if opts[:root]
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
- data = data[opts[:object_root]] if opts[:object_root]
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
- opts[:root] ? parsed[opts[:root]] : parsed
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
@@ -0,0 +1,7 @@
1
+ module RSpec
2
+ module Rabl
3
+ class Error < ::RuntimeError
4
+
5
+ end
6
+ end
7
+ end
@@ -35,7 +35,7 @@ module RSpec
35
35
  end
36
36
 
37
37
  def _rabl_template
38
- example.metadata[:example_group][:description]
38
+ RSpec.current_example.metadata[:example_group][:description]
39
39
  end
40
40
  end
41
41
  end
@@ -1,5 +1,6 @@
1
1
  require 'rspec'
2
2
  require "rspec_rabl/version"
3
+ require "rspec/rabl/error"
3
4
 
4
5
  # helpers to access the rendered template and parsed template
5
6
  require 'rspec/rabl/example_group'
@@ -1,3 +1,3 @@
1
1
  module RspecRabl
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -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" , "~> 2.14"
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{ should render_attribute(:guid) }
9
- it{ should render_attribute(:first_name) }
10
- it{ should render_attribute(:last_name) }
11
- it{ should render_attribute(:email) }
12
- it{ should_not render_attribute(:password) }
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{ should render_attribute(:id).with(:guid) }
18
- it{ should render_attribute(:team).with_value('Gorby Puff') }
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{ should render_attribute(:guid) }
24
- it{ should render_attribute(:first_name) }
25
- it{ should render_attribute(:last_name) }
26
- it{ should render_attribute(:email) }
27
- it{ should_not render_attribute(:password) }
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{ should render_attribute(:guid) }
33
- it{ should_not render_attribute(:password) }
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{ should render_attribute(:guid) }
39
- it{ should_not render_attribute(:password) }
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{ should render_attribute(:guid) }
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 "should make the rendered template available" do
9
- rendered_template.should == '{"user":{"guid":"abc","first_name":"gob","last_name":"bluth","email":"gob@bluth.com"}}'
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 "should make the parsed template available" do
13
- parsed_json.should == {
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.should == {'test' => {'guid' => user.guid}}
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.3
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-01-07 00:00:00.000000000 Z
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
- - !ruby/object:Gem::Dependency
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: '0'
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
- - !ruby/object:Gem::Dependency
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
- - !ruby/object:Gem::Dependency
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: '2.14'
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
- - !ruby/object:Gem::Dependency
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: '0.9'
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.1.9
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: