uat-matchers 0.0.1.pre
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 +15 -0
- data/.gitignore +9 -0
- data/.rspec +1 -0
- data/Gemfile +4 -0
- data/README.md +52 -0
- data/Rakefile +3 -0
- data/lib/uat/matchers.rb +1 -0
- data/lib/uat/matchers/api.rb +15 -0
- data/lib/uat/matchers/configuration.rb +11 -0
- data/lib/uat/matchers/rpc_helper.rb +32 -0
- data/lib/uat/matchers/version.rb +5 -0
- data/uat-matchers.gemspec +21 -0
- metadata +86 -0
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
Nzc3NWIwOTM4NjhhMGQwY2M1YzZkYzBmY2FkMzFjZGJlOGIzZWZlYQ==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
OWZjOTZjOTI0MzQ2M2NjOTA2YWMwMDJkYzk0ZWVhZjBkZjQ3MTZhYQ==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
YzFkMjkwMmEwMzQwZDBiMWFmOWU5YWQyYjYxNzIwMWE5Yjc5ZjcyNDcyY2Zm
|
10
|
+
NTJmMGE2ZTgzMjM4OWJlYzcwODM3MjE1NmRiZDkxYzE1YzkxNDdkMjEwMTQ4
|
11
|
+
ZjgyYjcwZTlhYmZiMWJkYjY4ODkwZTBkZDcxNjk0ZTc1MzBiMTM=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
NzY4MTk2NTM5ZmI2ODMzMmE1OGE2Nzc2OGI3Mjc5MzA5MzRhNzE1ZWE3NDZj
|
14
|
+
YjViOTBmMTExMDI3Y2JlODkyNmUwZWI2NjdlNWMyMDlkNWI4ZTMzZDg3ZjA0
|
15
|
+
M2IxNGY0OWRhZTNlOWVmYzZlZjk3NTQ1N2Q5YzUwNzA3ZjNjNTc=
|
data/.gitignore
ADDED
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--require spec_helper --format documentation --color true
|
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,52 @@
|
|
1
|
+
# UAT::Matchers
|
2
|
+
|
3
|
+
A gem providing matchers to aid in testing
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
gem 'uat-matchers'
|
11
|
+
```
|
12
|
+
|
13
|
+
And then execute:
|
14
|
+
|
15
|
+
$ bundle
|
16
|
+
|
17
|
+
Or install it yourself as:
|
18
|
+
|
19
|
+
$ gem install uat-matchers
|
20
|
+
|
21
|
+
## Usage
|
22
|
+
|
23
|
+
# uat
|
24
|
+
|
25
|
+
User Acceptance Test tooling
|
26
|
+
|
27
|
+
```
|
28
|
+
UAT::Matchers::RPCHelper
|
29
|
+
UAT::Matchers::RPCHelper#setup!(url)
|
30
|
+
sets the url used by instances that include this module
|
31
|
+
#make_rpc(rpc_class, method, request, response_class, &optional_block)
|
32
|
+
when the request is successful
|
33
|
+
performs an rspec expectation that the class of the response matches "response_class"
|
34
|
+
behaves like an rpc call
|
35
|
+
creates an instance of rpc_class using the "client" class method, passing a hash with the url parts
|
36
|
+
calls the "method" on the resulting rpc_client, passing in the request
|
37
|
+
registers a callback for success
|
38
|
+
registers a callback for failure
|
39
|
+
and if the rspec expectation fails
|
40
|
+
raises an exception
|
41
|
+
and if the rspec expectation passes
|
42
|
+
and a block is passed
|
43
|
+
calls the block, passing in the response
|
44
|
+
when the request is a failure
|
45
|
+
raises an exception
|
46
|
+
which is the result of calling inspect on the parameter in the on_error handler block (PENDING: Temporarily skipped with xit)
|
47
|
+
behaves like an rpc call
|
48
|
+
creates an instance of rpc_class using the "client" class method, passing a hash with the url parts
|
49
|
+
calls the "method" on the resulting rpc_client, passing in the request
|
50
|
+
registers a callback for success
|
51
|
+
registers a callback for failure
|
52
|
+
```
|
data/Rakefile
ADDED
data/lib/uat/matchers.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
Dir["#{File.dirname(__FILE__)}/matchers/**/*.rb"].each { |f| require(f) }
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module UAT
|
2
|
+
module Matchers
|
3
|
+
class API
|
4
|
+
# @param configuration [UAT::Matchers::Configuration]
|
5
|
+
def initialize(configuration)
|
6
|
+
@configuration = configuration
|
7
|
+
end
|
8
|
+
|
9
|
+
# @return [UAT::Matchers::RPCHelper]
|
10
|
+
def rpc_helper
|
11
|
+
RPCHelper.new(@configuration.rpc_service_url, @configuration.rspec_example)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module UAT
|
2
|
+
module Matchers
|
3
|
+
# DRY up protobuf RPC call expectations with RPCHelper
|
4
|
+
class RPCHelper
|
5
|
+
# @param rpc_service_url [URI::Generic]
|
6
|
+
def initialize(rpc_service_url, rspec_example)
|
7
|
+
@rpc_service_url = rpc_service_url
|
8
|
+
@rspec_example = rspec_example
|
9
|
+
end
|
10
|
+
|
11
|
+
# @param rpc_class [#client] an rpc class with a client class method
|
12
|
+
# @param method [Symbol] a symbol containing the method name to call
|
13
|
+
# @param request [Protobuf::Message] the request object
|
14
|
+
# @param response_class [Class<Protobuf::Message>] the expected response class
|
15
|
+
# @yield block_that_receives_vetted_response an optional block which will be passed the response as long as it is an instance of the expected response_class
|
16
|
+
# @yieldparam response [Protobuf::Message]
|
17
|
+
# @yieldreturn is not used
|
18
|
+
def make_rpc(rpc_class, method, request, response_class, &block_that_receives_vetted_response)
|
19
|
+
opts = {:host => @rpc_service_url.host,
|
20
|
+
:port => @rpc_service_url.port,
|
21
|
+
:base => @rpc_service_url.path}
|
22
|
+
rpc_class.client(opts).send(method, request) do |rpc_response_handler|
|
23
|
+
rpc_response_handler.on_success do |response|
|
24
|
+
@rspec_example.expect(response.class).to @rspec_example.be response_class
|
25
|
+
block_that_receives_vetted_response.call(response) unless block_that_receives_vetted_response.nil?
|
26
|
+
end
|
27
|
+
rpc_response_handler.on_failure {|err| raise err.inspect }
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'uat/matchers/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "uat-matchers"
|
8
|
+
spec.version = UAT::Matchers::VERSION
|
9
|
+
spec.authors = ["Tommy Sullivan", "Blaine Schanfeldt"]
|
10
|
+
spec.email = ["thomas.sullivan@lookout.com", "blaine.schanfeldt@lookout.com"]
|
11
|
+
|
12
|
+
spec.summary = "A gem providing matchers that aid user acceptance testing"
|
13
|
+
spec.homepage = "https://github.com/lookout/uat"
|
14
|
+
spec.license = 'MIT'
|
15
|
+
|
16
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
17
|
+
spec.require_paths = ["lib"]
|
18
|
+
|
19
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
20
|
+
spec.add_development_dependency "rspec", "~> 3.2.0"
|
21
|
+
end
|
metadata
ADDED
@@ -0,0 +1,86 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: uat-matchers
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1.pre
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Tommy Sullivan
|
8
|
+
- Blaine Schanfeldt
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2015-04-17 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rake
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - ~>
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: '10.0'
|
21
|
+
type: :development
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - ~>
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: '10.0'
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: rspec
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - ~>
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: 3.2.0
|
35
|
+
type: :development
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ~>
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: 3.2.0
|
42
|
+
description:
|
43
|
+
email:
|
44
|
+
- thomas.sullivan@lookout.com
|
45
|
+
- blaine.schanfeldt@lookout.com
|
46
|
+
executables: []
|
47
|
+
extensions: []
|
48
|
+
extra_rdoc_files: []
|
49
|
+
files:
|
50
|
+
- .gitignore
|
51
|
+
- .rspec
|
52
|
+
- Gemfile
|
53
|
+
- README.md
|
54
|
+
- Rakefile
|
55
|
+
- lib/uat/matchers.rb
|
56
|
+
- lib/uat/matchers/api.rb
|
57
|
+
- lib/uat/matchers/configuration.rb
|
58
|
+
- lib/uat/matchers/rpc_helper.rb
|
59
|
+
- lib/uat/matchers/version.rb
|
60
|
+
- uat-matchers.gemspec
|
61
|
+
homepage: https://github.com/lookout/uat
|
62
|
+
licenses:
|
63
|
+
- MIT
|
64
|
+
metadata: {}
|
65
|
+
post_install_message:
|
66
|
+
rdoc_options: []
|
67
|
+
require_paths:
|
68
|
+
- lib
|
69
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
70
|
+
requirements:
|
71
|
+
- - ! '>='
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: '0'
|
74
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
75
|
+
requirements:
|
76
|
+
- - ! '>'
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: 1.3.1
|
79
|
+
requirements: []
|
80
|
+
rubyforge_project:
|
81
|
+
rubygems_version: 2.4.5
|
82
|
+
signing_key:
|
83
|
+
specification_version: 4
|
84
|
+
summary: A gem providing matchers that aid user acceptance testing
|
85
|
+
test_files: []
|
86
|
+
has_rdoc:
|