bc-rspec-matchers 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.
- data/LICENSE +1 -1
- data/README.md +26 -13
- data/lib/bc-rspec-matchers.rb +1 -0
- data/lib/bc-rspec-matchers/content_type.rb +43 -0
- data/lib/bc-rspec-matchers/data_structure.rb +0 -2
- data/lib/bc-rspec-matchers/version.rb +1 -1
- data/spec/unit/content_type_spec.rb +29 -0
- data/spec/unit/data_structure_spec.rb +16 -1
- metadata +7 -4
data/LICENSE
CHANGED
data/README.md
CHANGED
@@ -1,24 +1,42 @@
|
|
1
1
|
# Bc::Rspec::Matchers
|
2
2
|
|
3
|
-
|
3
|
+
This projects aims to be an open source effort to collect all the RSpec custom matchers & macros used across Byclosure projects.
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
7
7
|
Add this line to your application's Gemfile:
|
8
8
|
|
9
|
-
gem 'bc-rspec-matchers'
|
9
|
+
gem 'bc-rspec-matchers', "~> 0.0.3"
|
10
10
|
|
11
11
|
And then execute:
|
12
12
|
|
13
|
+
$ bundle install
|
14
|
+
|
15
|
+
Go to your RSpec configuration files and add:
|
16
|
+
|
17
|
+
RSpec.configure do |c|
|
18
|
+
c.include Bc::RSpec::Matchers
|
19
|
+
end
|
20
|
+
|
21
|
+
## Development & Improvment of bc-rspec-matchers
|
22
|
+
|
13
23
|
$ bundle
|
14
24
|
|
15
|
-
Or install it yourself as:
|
16
25
|
|
17
|
-
|
26
|
+
To run specs in autotest enable just run: `bundle exec autotest`.
|
27
|
+
|
28
|
+
To run specs, just run: `bundle exec rake spec`
|
18
29
|
|
19
|
-
## Usage
|
20
30
|
|
21
|
-
|
31
|
+
## Add new gem dependencies
|
32
|
+
|
33
|
+
*Atention:* Do not use Gemfile for that, Gemfile will automatically be created for you.
|
34
|
+
|
35
|
+
Steps:
|
36
|
+
|
37
|
+
1. Go to bc-rspec-matchers.gem
|
38
|
+
2. See and use the `gem.add_development_dependency` (that works the same way as Gemfile depencies)
|
39
|
+
3. run `bundle`
|
22
40
|
|
23
41
|
## Contributing
|
24
42
|
|
@@ -34,13 +52,8 @@ See: http://railscasts.com/episodes/245-new-gem-with-bundler?view=asciicast
|
|
34
52
|
|
35
53
|
### Update & Release
|
36
54
|
|
37
|
-
|
38
|
-
|
39
|
-
or
|
40
|
-
|
41
|
-
1. Update `lib/bc-rspec-matchers/version.rb` version.rb
|
42
|
-
2. gem build
|
43
|
-
3. gem push
|
55
|
+
1. Update gem version: `lib/bc-rspec-matchers/version.rb`
|
56
|
+
2. Run `bundle exec rake release`
|
44
57
|
|
45
58
|
# Relevant blog posts
|
46
59
|
* http://eggsonbread.com/2010/03/28/my-rspec-best-practices-and-tips/
|
data/lib/bc-rspec-matchers.rb
CHANGED
@@ -0,0 +1,43 @@
|
|
1
|
+
module Bc
|
2
|
+
module RSpec
|
3
|
+
module Matchers
|
4
|
+
class ContentType
|
5
|
+
@@sym_to_regexp = {
|
6
|
+
:json => /application\/json\s*;\s*charset=utf-8/
|
7
|
+
}
|
8
|
+
|
9
|
+
attr_reader :symbol, :header
|
10
|
+
def initialize(content_type_symbol)
|
11
|
+
@symbol = content_type_symbol.to_sym
|
12
|
+
end
|
13
|
+
|
14
|
+
def matches?(actual)
|
15
|
+
@header = actual
|
16
|
+
content_type(actual) =~ sym_to_regexp(symbol)
|
17
|
+
end
|
18
|
+
|
19
|
+
def failure_message_for_should
|
20
|
+
"Content-Type was #{content_type(header).inspect}, expecting type #{symbol} (#{sym_to_regexp(symbol).inspect})"
|
21
|
+
end
|
22
|
+
|
23
|
+
def failure_message_for_should_not
|
24
|
+
"Content-Type (#{content_type(header).inspect}) should not match #{symbol} (#{sym_to_regexp(symbol).inspect})"
|
25
|
+
end
|
26
|
+
|
27
|
+
def description
|
28
|
+
"have Content-Type of type #{symbol}"
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
def content_type(header)
|
33
|
+
raise(ArgumentError.new("Expecting #{header.inspect} to be an header (type Hash)")) unless header.is_a?(Hash)
|
34
|
+
header["Content-Type"]
|
35
|
+
end
|
36
|
+
|
37
|
+
def sym_to_regexp(symbol)
|
38
|
+
@@sym_to_regexp[symbol] || raise(ArgumentError.new("Symbol (#{symbol}) Found"))
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
require "bc-rspec-matchers/content_type"
|
4
|
+
|
5
|
+
describe Bc::RSpec::Matchers::ContentType do
|
6
|
+
shared_examples_for "format" do |format, options|
|
7
|
+
it { should match_to("Content-Type" => "application/#{format}; charset=utf-8") }
|
8
|
+
it { should match_to("Content-Type" => "application/#{format};charset=utf-8") }
|
9
|
+
|
10
|
+
wrong_formats = options && options[:wrong_formats]
|
11
|
+
wrong_formats && wrong_formats.each do |wrong_format|
|
12
|
+
it { should_not match_to("Content-Type" => "application/#{wrong_format}; charset=utlf-8") }
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe "created with :json" do
|
17
|
+
subject do
|
18
|
+
Bc::RSpec::Matchers::ContentType.new(:json)
|
19
|
+
end
|
20
|
+
it_should_behave_like "format", "json", :wrong_formats => ["xml"]
|
21
|
+
end
|
22
|
+
|
23
|
+
describe "created with 'json'" do
|
24
|
+
subject do
|
25
|
+
Bc::RSpec::Matchers::ContentType.new('json')
|
26
|
+
end
|
27
|
+
it_should_behave_like "format", "json", :wrong_formats => ["xml"]
|
28
|
+
end
|
29
|
+
end
|
@@ -83,7 +83,7 @@ describe Bc::RSpec::Matchers::DataStructure do
|
|
83
83
|
Bc::RSpec::Matchers::DataStructure.new(["string"])
|
84
84
|
end
|
85
85
|
|
86
|
-
it { should match_to(["string"]) }
|
86
|
+
it { should match_to(["string"]) }
|
87
87
|
it { should_not match_to([:symbol, "string"]) }
|
88
88
|
it { should_not match_to(["string", :symbol]) }
|
89
89
|
it { should_not match_to([:string]) }
|
@@ -104,5 +104,20 @@ describe Bc::RSpec::Matchers::DataStructure do
|
|
104
104
|
it { should match_to({:every => "hash"}) }
|
105
105
|
it { should_not match_to([]) }
|
106
106
|
it { should_not match_to(nil) }
|
107
|
+
|
108
|
+
its(:description) { should == "match to {}" }
|
109
|
+
end
|
110
|
+
|
111
|
+
describe "created with {:key => 'value'}" do
|
112
|
+
subject do
|
113
|
+
Bc::RSpec::Matchers::DataStructure.new({:key => 'value'})
|
114
|
+
end
|
115
|
+
|
116
|
+
it { should match_to({:key => 'value'}) }
|
117
|
+
it { should match_to({:key => 'value', :key2 => 'value2'}) }
|
118
|
+
it { should_not match_to({}) }
|
119
|
+
it { should_not match_to(nil) }
|
120
|
+
|
121
|
+
its(:description) { should == "match to #{{:key => 'value'}.inspect}" }
|
107
122
|
end
|
108
123
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bc-rspec-matchers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 4
|
10
|
+
version: 0.0.4
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Byclosure
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2012-
|
18
|
+
date: 2012-10-07 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
version_requirements: &id001 !ruby/object:Gem::Requirement
|
@@ -91,9 +91,11 @@ files:
|
|
91
91
|
- Rakefile
|
92
92
|
- bc-rspec-matchers.gemspec
|
93
93
|
- lib/bc-rspec-matchers.rb
|
94
|
+
- lib/bc-rspec-matchers/content_type.rb
|
94
95
|
- lib/bc-rspec-matchers/data_structure.rb
|
95
96
|
- lib/bc-rspec-matchers/version.rb
|
96
97
|
- spec/spec_helper.rb
|
98
|
+
- spec/unit/content_type_spec.rb
|
97
99
|
- spec/unit/data_structure_spec.rb
|
98
100
|
homepage: http://github.com/Byclosure/bc-rspec-matchers
|
99
101
|
licenses: []
|
@@ -130,4 +132,5 @@ specification_version: 3
|
|
130
132
|
summary: Collection of rspec matchers to improve spec writing performance
|
131
133
|
test_files:
|
132
134
|
- spec/spec_helper.rb
|
135
|
+
- spec/unit/content_type_spec.rb
|
133
136
|
- spec/unit/data_structure_spec.rb
|