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