saharspec 0.0.1 → 0.0.2

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: 8ae684897f535577827bd53f103f7841c0925501
4
- data.tar.gz: 83ab9127597f72ad1aabc84d2eda3847f022f93a
3
+ metadata.gz: 69a3d4d52b75ffe4622413b927337a741b810c57
4
+ data.tar.gz: 7da973ac28887c0fbd3c65a7aaad6bb6a5140e63
5
5
  SHA512:
6
- metadata.gz: a69593a2bb4261748e2b2e14027109aa3926d9f5caa4780970a6808c34fab6d95093c57fc250fc315235af5cc75d25194f52ddf3c85dc0b9867732aed3093ef4
7
- data.tar.gz: 73d4d55c8b53c45640cf2dd1f1847396c03b1b1d40a8268762f7a0eaec49cddbf2dc723f41c9a0194d8d3f47a67ba83e69a123a229aa2b13b90bec03857346e4
6
+ metadata.gz: 02fb0e99a0b46ace2311deed7d21132582c11f8d5c04727d211f28d5725615eed36ce9e942ec7a31a9767b23b137918eac650598869ed6e01fce79bf503ab43a
7
+ data.tar.gz: b112f9ea6892c954de423ce07076c530f46c66549d2201d06fe4233b18f933a6505110f148ca4b14ad139e357c0ca3ef26fb106437749d9f23ca584f7be6c987
@@ -1,20 +1,12 @@
1
+ require_relative '../util'
2
+
1
3
  module Saharspec
2
4
  module Matchers
3
5
  # @private
4
6
  class EqMultiline < RSpec::Matchers::BuiltIn::Eq
7
+ include Util
5
8
  def initialize(expected)
6
- # 1. for all lines looking like "<spaces>|" -- remove this.
7
- # 2. remove trailing spaces
8
- # 3. preserve trailing spaces ending with "|", but remove the pipe
9
- # 4. remove one empty line before & after, allows prettier %Q{}
10
- # TODO: check if all lines start with "|"?
11
- super(
12
- expected
13
- .gsub(/^ *\|/, '')
14
- .gsub(/ +$/, '')
15
- .gsub(/\|$/, '')
16
- .gsub(/(\A *\n|\n *\z)/, '')
17
- )
9
+ super(multiline(expected))
18
10
  end
19
11
  end
20
12
  end
@@ -0,0 +1,60 @@
1
+ # TODO: PR to webmock itself?..
2
+ #
3
+ # RSpec::Matchers.define :request_webmock do |url, method: :get|
4
+ # match do |block|
5
+ # WebMock.reset!
6
+ # stub_request(method, url)
7
+ # .tap { |req| req.with(@with_options) if @with_options && !@with_block }
8
+ # .tap { |req| req.with(@with_options, &@with_block) if @with_block }
9
+ # .tap { |req| req.to_return(@response) if @response }
10
+ # block.call
11
+ # matcher = have_requested(method, url)
12
+ # .tap { |matcher| matcher.with(@with_options) if @with_options && !@with_block }
13
+ # .tap { |matcher| matcher.with(@with_options, &@with_block) if @with_block }
14
+ # expect(WebMock).to matcher
15
+ # end
16
+ #
17
+ # chain :with do |options = {}, &block|
18
+ # @with_options = options
19
+ # @with_block = block
20
+ # end
21
+ #
22
+ # chain :once do
23
+ # times(1)
24
+ # end
25
+ #
26
+ # chain :twice do
27
+ # times(2)
28
+ # end
29
+ #
30
+ # chain :times do |n|
31
+ # @times = n
32
+ # end
33
+ #
34
+ # chain :at_least_once do
35
+ # at_least_times(1)
36
+ # end
37
+ #
38
+ # chain :at_least_twice do
39
+ # at_least_times(2)
40
+ # end
41
+ #
42
+ # chain :at_least_times do |n|
43
+ # @at_least_times = n
44
+ # end
45
+ #
46
+ # chain :returning do |response|
47
+ # @response =
48
+ # case response
49
+ # when String
50
+ # {body: response}
51
+ # when Hash
52
+ # response
53
+ # else
54
+ # fail "Expected string or Hash of params, got #{response.inspect}"
55
+ # end
56
+ # end
57
+ #
58
+ # supports_block_expectations
59
+ # end
60
+ #
@@ -3,6 +3,7 @@ module Saharspec
3
3
  # @private
4
4
  class SendMessage
5
5
  include RSpec::Mocks::ExampleMethods
6
+ include RSpec::Matchers::Composable
6
7
 
7
8
  def initialize(target, method)
8
9
  @target = target
@@ -76,7 +77,7 @@ module Saharspec
76
77
  private
77
78
 
78
79
  def run(subject)
79
- @target.respond_to?(@method) or
80
+ @target.respond_to?(@method, true) or
80
81
  raise NoMethodError,
81
82
  "undefined method `#{@method}' for#{@target.inspect}:#{@target.class}"
82
83
  allow(@target).to allower
@@ -0,0 +1,16 @@
1
+ module Saharspec
2
+ module Util
3
+ def multiline(string)
4
+ # 1. for all lines looking like "<spaces>|" -- remove this.
5
+ # 2. remove trailing spaces
6
+ # 3. preserve trailing spaces ending with "|", but remove the pipe
7
+ # 4. remove one empty line before & after, allows prettier %Q{}
8
+ # TODO: check if all lines start with "|"?
9
+ string
10
+ .gsub(/^ *\|/, '')
11
+ .gsub(/ +$/, '')
12
+ .gsub(/\|$/, '')
13
+ .gsub(/(\A *\n|\n *\z)/, '')
14
+ end
15
+ end
16
+ end
data/lib/saharspec.rb CHANGED
@@ -7,3 +7,4 @@ end
7
7
 
8
8
  require_relative 'saharspec/its'
9
9
  require_relative 'saharspec/matchers'
10
+ require_relative 'saharspec/util'
data/saharspec.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'saharspec'
3
- s.version = '0.0.1'
3
+ s.version = '0.0.2'
4
4
  s.authors = ['Victor Shepelev']
5
5
  s.email = 'zverok.offline@gmail.com'
6
6
  s.homepage = 'https://github.com/zverok/saharspec'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: saharspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Victor Shepelev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-08-14 00:00:00.000000000 Z
11
+ date: 2017-09-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubocop
@@ -124,7 +124,9 @@ files:
124
124
  - lib/saharspec/its/map.rb
125
125
  - lib/saharspec/matchers.rb
126
126
  - lib/saharspec/matchers/eq_multiline.rb
127
+ - lib/saharspec/matchers/request_webmock.rb
127
128
  - lib/saharspec/matchers/send_message.rb
129
+ - lib/saharspec/util.rb
128
130
  - saharspec.gemspec
129
131
  homepage: https://github.com/zverok/saharspec
130
132
  licenses: