riot-gear 0.0.11 → 0.0.12

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,5 +1,9 @@
1
1
  # @markup markdown
2
2
 
3
+ # 0.0.12
4
+
5
+ * Allow OPTIONS HTTP calls [rquinlivan]
6
+
3
7
  # 0.0.10
4
8
 
5
9
  * Defines a new setup block called `once`. Useful for running a single block before assertions, but only inside the context it was defined in [jaknowlden]
@@ -17,7 +21,7 @@ context ThingsMaker do
17
21
 
18
22
  context "makes no more things" do
19
23
  get "/things/2"
20
- asserts_status(404) # becuase the post didn't run again ... see ... yeah
24
+ asserts_status(404) # because the post didn't run again ... see ... yeah
21
25
  end
22
26
  end
23
27
  ```
@@ -1,7 +1,5 @@
1
1
  require 'riot/gear/context/once'
2
- require 'riot/gear/context/anything'
3
2
  require 'riot/gear/context/persist_cookie'
4
3
  require 'riot/gear/context/asserts_status'
5
4
  require 'riot/gear/context/asserts_header'
6
- require 'riot/gear/context/asserts_cookie'
7
5
  require 'riot/gear/context/asserts_json'
@@ -1,3 +1,5 @@
1
+ require 'open-uri'
2
+
1
3
  module Riot
2
4
  module Gear
3
5
  module AssertsHeader
@@ -45,15 +45,15 @@ private
45
45
  # Returns the list of methods that do something; like make a network call.
46
46
  #
47
47
  # @return [Array<Symbol>]
48
- def actionable_methods; [:get, :post, :put, :delete, :head]; end
48
+ def actionable_methods; [:get, :post, :put, :delete, :head, :options]; end
49
49
 
50
- # Returns the list of methods that configure actionable HTTParty methods. The {HTTParty.options} and
51
- # {HTTParty.default_options} methods are explicitly excluded from this list
50
+ # Returns the list of methods that configure actionable HTTParty methods. The
51
+ # {HTTParty.default_options} method is explicitly excluded from this list
52
52
  #
53
53
  # @return [Array<Symbol>]
54
54
  def proxiable_methods
55
55
  methods = HTTParty::ClassMethods.instance_methods.map { |m| m.to_s.to_sym }
56
- methods - actionable_methods - [:options, :default_options]
56
+ methods - actionable_methods - [:default_options]
57
57
  end
58
58
 
59
59
  # Bind the set of actionable methods to a given context.
@@ -81,10 +81,8 @@ private
81
81
  def proxy_action_methods(context)
82
82
  context_eigen = (class << context; self; end)
83
83
  actionable_methods.each do |method_name|
84
-
85
84
  context_eigen.__send__(:define_method, method_name) do |*args, &settings_block|
86
- #hookup do
87
- anything do
85
+ hookup do
88
86
  if settings_block
89
87
  name = args.first
90
88
  options = instance_eval(&settings_block)
@@ -93,12 +91,13 @@ private
93
91
  name = nil
94
92
  path, options = *args
95
93
  end
94
+ #debug_start = Time.now
96
95
  result = topic.__send__(method_name, path, options || {})
96
+ #puts "TIME #{(Time.now - debug_start) * 1000.0}ms #{topic.base_uri}#{path}"
97
97
  @saved_responses[name] = result
98
98
  @smoke_response = result # TODO remove this after it's certain no usages in the wild
99
99
  end
100
100
  end
101
-
102
101
  end # methods.each
103
102
  end
104
103
 
@@ -1,6 +1,5 @@
1
1
  module Riot
2
2
  module Gear
3
- VERSION = "0.0.11"
3
+ VERSION = "0.0.12"
4
4
  end
5
5
  end
6
-
@@ -0,0 +1,58 @@
1
+ require 'teststrap'
2
+
3
+ context "Sending an OPTIONS request with a base uri" do
4
+
5
+ context "without params" do
6
+ hookup do
7
+ stub_request(:options, 'http://test.local/foo').
8
+ with(:body => {"foo" => "bar"}.to_json).
9
+ to_return(:body => "Foo", :status => 200)
10
+ end
11
+
12
+ base_uri "http://test.local"
13
+ options "/foo", :body => {"foo" => "bar"}.to_json
14
+
15
+ asserts("status code") { response.code }.equals(200)
16
+ asserts("response body") { response.body }.equals("Foo")
17
+ end # without params
18
+
19
+ context "with params" do
20
+ hookup do
21
+ stub_request(:options, 'http://test.local/foo?bar=baz').
22
+ with(:body => {"goo" => "car"}.to_json).
23
+ to_return(:body => "", :status => 201)
24
+ end
25
+
26
+ context "through default_params" do
27
+ base_uri "http://test.local"
28
+ default_params({"bar" => "baz"})
29
+ options "/foo", :body => {"goo" => "car"}.to_json
30
+
31
+ asserts("status code") { response.code }.equals(201)
32
+ end # through default_params
33
+
34
+ context "through query string" do
35
+ base_uri "http://test.local"
36
+ options "/foo?bar=baz", :body => {"goo" => "car"}.to_json
37
+
38
+ asserts("status code") { response.code }.equals(201)
39
+ end # through query string
40
+ end # with params
41
+
42
+ context "while processing options from a block" do
43
+ hookup do
44
+ stub_request(:options, 'http://test.local/foo/bar').
45
+ with(:body => {"s" => "things"}.to_json).
46
+ to_return(:body => "", :status => 299)
47
+ end
48
+
49
+ base_uri "http://test.local"
50
+
51
+ options do
52
+ { :path => "/foo/bar", :body => {"s" => "things"}.to_json }
53
+ end
54
+
55
+ asserts("status code") { response.code }.equals(299)
56
+ end # while processing options from a block
57
+
58
+ end # Sending a POST request with a base uri
@@ -51,7 +51,7 @@ context "A Riot Gear context" do
51
51
 
52
52
  asserts("providing an invalid format") do
53
53
  topic.format :boogers
54
- end.raises(HTTParty::UnsupportedFormat, "':boogers' Must be one of: html, json, plain, xml")
54
+ end.raises(HTTParty::UnsupportedFormat, "':boogers' Must be one of: csv, html, json, plain, xml")
55
55
 
56
56
  debug_output StringIO.new
57
57
  asserts("default options for debug_output") do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: riot-gear
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.11
4
+ version: 0.0.12
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-12-03 00:00:00.000000000 Z
12
+ date: 2014-04-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: riot
@@ -60,8 +60,6 @@ files:
60
60
  - Rakefile
61
61
  - lib/riot/gear.rb
62
62
  - lib/riot/gear/context.rb
63
- - lib/riot/gear/context/anything.rb
64
- - lib/riot/gear/context/asserts_cookie.rb
65
63
  - lib/riot/gear/context/asserts_header.rb
66
64
  - lib/riot/gear/context/asserts_json.rb
67
65
  - lib/riot/gear/context/asserts_status.rb
@@ -73,6 +71,7 @@ files:
73
71
  - riot-gear.gemspec
74
72
  - test/actions/delete_test.rb
75
73
  - test/actions/get_test.rb
74
+ - test/actions/options_test.rb
76
75
  - test/actions/post_test.rb
77
76
  - test/actions/put_test.rb
78
77
  - test/assertions/asserts_json_test.rb
@@ -109,6 +108,7 @@ summary: Riot + HTTParty smoke testing framework.
109
108
  test_files:
110
109
  - test/actions/delete_test.rb
111
110
  - test/actions/get_test.rb
111
+ - test/actions/options_test.rb
112
112
  - test/actions/post_test.rb
113
113
  - test/actions/put_test.rb
114
114
  - test/assertions/asserts_json_test.rb
@@ -1,24 +0,0 @@
1
- class Riot::Gear::AnythingRunnable < Riot::RunnableBlock
2
- def initialize(description, &definition)
3
- super("[anything] #{description}", &definition)
4
- end
5
-
6
- # @param [Riot::Situation] situation An instance of a {Riot::Situation}
7
- # @return [Array<Symbol>]
8
- def run(situation)
9
- situation.evaluate(&definition)
10
- [:anything]
11
- end
12
- end
13
-
14
- module Riot::Gear::AnythingContextHelper
15
- # @param [String] description A description of what the block is for
16
- # @param [lambda] &definition The block that will be executed ...
17
- # @return [Riot::Gear::AnythingRunnable]
18
- def anything(description="", &definition)
19
- @assertions << Riot::Gear::AnythingRunnable.new(description, &definition)
20
- end
21
- end
22
-
23
- Riot::Context.instance_eval { include Riot::Gear::AnythingContextHelper }
24
-
@@ -1,20 +0,0 @@
1
- module Riot
2
- module Gear
3
- module AssertsCookie
4
-
5
- # Generates an assertion that retrieves the value of some cookie from the last response.
6
- #
7
- # asserts_cookie("ui_session").matches(/stuff/)
8
- #
9
- # @param [String] cookie-name the name of the cookie
10
- # @return [Riot::Assertion] an assertion block that macros can be applied to
11
- def asserts_cookie(cookie_name)
12
- asserts("set-cookie #{cookie_name}") { cookie_values[cookie_name] }
13
- end
14
-
15
- end # AssertsHeader
16
- end # Gear
17
- end # Riot
18
-
19
- Riot::Context.instance_eval { include Riot::Gear::AssertsCookie }
20
-