webstub 0.3.8 → 0.4.0

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: a8c0c009af8edd522251e559b40ae11e0e6fb9a3
4
- data.tar.gz: 2ac7163346730732434b3ccc5db48b1e07d5dd11
3
+ metadata.gz: 8b1fadc30394c28a2c70f47cdf1b3bb00fd53b25
4
+ data.tar.gz: 7a378b835765d1bc94256aac54c28ddb83692d9e
5
5
  SHA512:
6
- metadata.gz: 112358da3a63a4c8ad11637db9b92d0d3167d0a8982fc09fe49afb47db5085423071441321fe50b401eec3f2bdd5ef537ca9a4975eb7bdedf964f0092f813369
7
- data.tar.gz: 9fd9484b655dad804d5ba59eb4815372989c7d1e3070820954a29bc0adf9e8c751b92fe7f31fb48096dee1af6c74943def9869085b939c3cd460c70ce7f9ab5d
6
+ metadata.gz: 8c6e61d19d442611bf3ba6d94c20eff7aa50264073e6d5b4ca95f2f655b9e920dc87ddacdaea6f1a3f039c11a753dfd9f7cf8f1a3114028568c766d20ae282f5
7
+ data.tar.gz: 4b15563577dff7e90410f4709a30c098825425bbf21fe39bf2618cf8d6819d87bbcd228d76c1a61e9bbb417eb911ed99a4e12c596c03bc1a3f2628a0de888cf0
data/Gemfile CHANGED
@@ -8,3 +8,4 @@ gem 'guard-motion'
8
8
  gem 'rb-fsevent', '~> 0.9.1'
9
9
  gem 'coolline'
10
10
  gem 'terminal-notifier-guard'
11
+ gem 'rubygems-tasks'
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- WebStub [![Code Climate](https://codeclimate.com/github/mattgreen/webstub.png)](https://codeclimate.com/github/mattgreen/webstub) [![Travis](https://api.travis-ci.org/mattgreen/webstub.png)](https://travis-ci.org/mattgreen/webstub)
1
+ WebStub [![Code Climate](https://codeclimate.com/github/mattgreen/webstub.png)](https://codeclimate.com/github/mattgreen/webstub) [![Travis](https://api.travis-ci.org/mattgreen/webstub.png)](https://travis-ci.org/mattgreen/webstub) [![Gem Version](https://badge.fury.io/rb/webstub.png)](http://badge.fury.io/rb/webstub)
2
2
  ======
3
3
 
4
4
  What if [WebMock](https://github.com/bblimke/webmock) and [NSURLProtocol](https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSURLProtocol_Class/Reference/Reference.html) had a baby?
@@ -13,15 +13,9 @@ Features
13
13
 
14
14
  Installation
15
15
  ------------
16
- Please ensure you have the latest version of RubyMotion: (**WebStub requres version 1.24 or higher**)
17
-
18
- $ sudo motion update
19
-
20
- Also, if you haven't done so already, please [configure](http://thunderboltlabs.com/posts/using-bundler-with-rubymotion) your project to use Bundler.
21
-
22
16
  Update your Gemfile:
23
17
 
24
- gem "webstub", "~> 0.3.0"
18
+ gem "webstub", "~> 0.4.0"
25
19
 
26
20
  Bundle:
27
21
 
@@ -112,6 +106,26 @@ Conventions
112
106
  - `content_type`: sets the Content-Type when using the `body` parameter
113
107
  - `status_code`: sets the integer Status Code of the response. Defaults to `200`.
114
108
 
109
+ Expectations
110
+ -----------------
111
+ Sometimes, you may just want to check that the request has been made to a given URL. In this case, you can use the `requested?` method of the stub returned by `stub_request`:
112
+
113
+ ```ruby
114
+ describe Elevate::HTTP do
115
+ extend WebStub::SpecHelpers
116
+
117
+ describe ".get" do
118
+ it "synchronously issues a HTTP GET request" do
119
+ stub = stub_request(:get, "http://www.example.com/")
120
+
121
+ Elevate::HTTP.get("http://www.example.com/")
122
+
123
+ stub.should.be.requested
124
+ end
125
+ end
126
+ end
127
+ ```
128
+
115
129
  TODO
116
130
  ---------
117
131
  * Handle query params similarly to form data
data/Rakefile CHANGED
@@ -12,11 +12,13 @@ rescue LoadError
12
12
  end
13
13
 
14
14
  require 'bundler/setup'
15
- require 'bundler/gem_tasks'
16
15
 
17
16
  Bundler.setup
18
17
  Bundler.require
19
18
 
19
+ require 'rubygems/tasks'
20
+ Gem::Tasks.new
21
+
20
22
  Motion::Project::App.setup do |app|
21
23
  gemspec = Dir.glob(File.join(File.dirname(__FILE__), "*.gemspec")).first
22
24
  gem_name = File.basename(gemspec).gsub("\.gemspec", "")
data/lib/webstub/api.rb CHANGED
@@ -3,19 +3,27 @@ module WebStub
3
3
  extend self
4
4
 
5
5
  def disable_network_access!
6
- Protocol.disable_network_access!
6
+ protocol.disable_network_access!
7
7
  end
8
8
 
9
9
  def enable_network_access!
10
- Protocol.enable_network_access!
10
+ protocol.enable_network_access!
11
11
  end
12
12
 
13
13
  def stub_request(method, path)
14
- Protocol.add_stub(method, path)
14
+ protocol.add_stub(method, path)
15
15
  end
16
16
 
17
17
  def reset_stubs
18
- Protocol.reset_stubs
18
+ protocol.reset_stubs
19
+ end
20
+
21
+ private
22
+
23
+ def protocol
24
+ Dispatch.once { NSURLProtocol.registerClass(WebStub::Protocol) }
25
+
26
+ Protocol
19
27
  end
20
28
  end
21
29
  end
@@ -66,6 +66,8 @@ module WebStub
66
66
  return
67
67
  end
68
68
 
69
+ @stub.requests += 1
70
+
69
71
  @timer = NSTimer.scheduledTimerWithTimeInterval(@stub.response_delay, target:self, selector: :completeLoading, userInfo:nil, repeats:false)
70
72
  end
71
73
 
@@ -125,5 +127,3 @@ module WebStub
125
127
  end
126
128
  end
127
129
  end
128
-
129
- NSURLProtocol.registerClass(WebStub::Protocol)
data/lib/webstub/stub.rb CHANGED
@@ -5,6 +5,8 @@ module WebStub
5
5
  def initialize(method, url)
6
6
  @request_method = canonicalize_method(method)
7
7
  raise ArgumentError, "invalid method name" unless METHODS.include? @request_method
8
+
9
+ @requests = 0
8
10
 
9
11
  @request_url = canonicalize_url(url)
10
12
  @request_headers = nil
@@ -44,6 +46,12 @@ module WebStub
44
46
  true
45
47
  end
46
48
 
49
+ attr_accessor :requests
50
+
51
+ def requested?
52
+ @requests > 0
53
+ end
54
+
47
55
  attr_reader :response_body
48
56
  attr_reader :response_delay
49
57
  attr_reader :response_headers
@@ -1,3 +1,3 @@
1
1
  module WebStub
2
- VERSION = "0.3.8"
2
+ VERSION = "0.4.0"
3
3
  end
data/spec/api_spec.rb CHANGED
@@ -59,7 +59,7 @@ describe WebStub::API do
59
59
  describe "when a request matches a stub" do
60
60
  describe "and the request does include a body" do
61
61
  before do
62
- WebStub::API.stub_request(:get, @url).to_return(body:"hello", headers: {"Content-Type" => "text/plain"})
62
+ @stub = WebStub::API.stub_request(:get, @url).to_return(body:"hello", headers: {"Content-Type" => "text/plain"})
63
63
 
64
64
  @response = get @url
65
65
  end
@@ -79,6 +79,10 @@ describe WebStub::API do
79
79
  it "returns a 200 status code" do
80
80
  @response.status_code.should.be == 200
81
81
  end
82
+
83
+ it "marks the stub as requested" do
84
+ @stub.should.be.requested
85
+ end
82
86
  end
83
87
 
84
88
  describe "and the request includes a body" do
data/spec/stub_spec.rb CHANGED
@@ -84,6 +84,24 @@ describe WebStub::Stub do
84
84
  end
85
85
  end
86
86
 
87
+ describe "#requested?" do
88
+ describe "by default" do
89
+ it "returns false" do
90
+ @stub.should.not.be.requested
91
+ end
92
+ end
93
+
94
+ describe "after incrementing the request count" do
95
+ before do
96
+ @stub.requests += 1
97
+ end
98
+
99
+ it "returns true" do
100
+ @stub.should.be.requested
101
+ end
102
+ end
103
+ end
104
+
87
105
  describe "#response_body" do
88
106
  it "returns the response body" do
89
107
  @stub.response_body.should == ""
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: webstub
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.8
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Green
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-06-11 00:00:00.000000000 Z
11
+ date: 2013-06-24 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Easily stub out HTTP responses in RubyMotion specs
14
14
  email: