soaspec 0.0.43 → 0.0.44

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: adb4b4d1bdf786fc03903155080a26907573ed1c
4
- data.tar.gz: 538b49176bbfeac2aec37227049826f245930ac1
3
+ metadata.gz: f697fff509cf16e29c1e5aebb5a22aa76fa54a21
4
+ data.tar.gz: c625f8572cb5f6bda2dd71f241a9422a43407aba
5
5
  SHA512:
6
- metadata.gz: 66ad518b6d17d50f0fe077d1c3f7c7565bbf82a786b22128733d8afc3370c2274dcac2a77a3404691adf1ee4d66da98507b388106ab3857cc7f6fbadbb35e4c4
7
- data.tar.gz: bd8d6f729d674a31e461f16e9de088dac4221be95bb62a0d099900c86a5e30e01158da97d66238db416ec9828358848ce241b84bff99bfa61cf5f171c483e509
6
+ metadata.gz: a82d977adcc9b8b903ed5180d7de79f021562110fde80f8d2a729b6b423299788f4e4ae22e857237f39832fdce563a59a4772587dc28064fde4f9c2627ea0f6b
7
+ data.tar.gz: 73daca5174aec68f34f64b4101289d9ebb68a5fb753ce148ebfd56b527ae4860641525525d51b1d7e0c775cf7e9802ebcc4b4f121558de76f303b580366ba84f
data/ChangeLog CHANGED
@@ -1,3 +1,9 @@
1
+ Version 0.0.44
2
+ * Enhancements
3
+ * Test Server log to logs/test_server.log
4
+ * Simplify ExchangeHandler storing and retrieving values (see soap/hash_spec.rb)
5
+ * Make setting SoapHandler operation and other params possible through object instantiation. Less code needed
6
+
1
7
  Version 0.0.43
2
8
  * Bug fix
3
9
  * Remove Environment namespace from 'soaspec-generate'
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- soaspec (0.0.43)
4
+ soaspec (0.0.44)
5
5
  jsonpath
6
6
  rest-client (>= 2.0)
7
7
  rspec (~> 3.0)
data/Rakefile CHANGED
@@ -33,6 +33,6 @@ CLOBBER.include 'logs/*'
33
33
 
34
34
  desc 'Start virtual web service'
35
35
  task :start_test_server do
36
- ENV['test_server_pid'] = Process.spawn('ruby', 'spec/test_server.rb', err: "/dev/null").to_s
36
+ ENV['test_server_pid'] = Process.spawn('ruby', 'spec/test_server.rb', err: %w[logs/test_server.log w]).to_s
37
37
  puts 'Running test server at pid ' + ENV['test_server_pid']
38
38
  end
data/Todo.md CHANGED
@@ -1,7 +1,8 @@
1
- * SoapHandler - define xhange method for each SOAP operation
2
- * exchange add fields to overide parameters to support cucumber steps. exchange[from_temp]
1
+ * SoapHandler - define exhange method for each SOAP operation
2
+ * exchange add fields to overide parameters to support cucumber steps. exchange[from_temp] =
3
+ * Demonstrate using Cucumber
3
4
  * Give examples and convenience methods for building classes for each SOAP or REST operation
4
- * Handle REST template (similar way to REST)
5
+ * Handle REST template (similar way to SOAP)
5
6
  * Potentially have in built use of 'vcr' and 'http_stub' gems
6
7
  * Handle proxies to record traffic for MiddleWare testing
7
8
  * Much more
@@ -44,29 +44,24 @@ require 'spec_helper'
44
44
 
45
45
  Soaspec.strip_namespaces = true # This allows namespace not to be used. Be careful with this
46
46
 
47
- hash_example = BLZService.new('Get Bank')
48
- hash_example.operation = :get_bank
49
-
50
47
  id = '70070010'
51
- #hash_example.template_name = 'soap_template' Use this instead of default_hash to use template approach
52
- hash_example.default_hash = { blz: id }
53
-
48
+ # BLZService.new(template_name: 'soap_template') Use this instead of default_hash to use template approach
54
49
 
55
50
  context 'Test Examples' do
56
- context hash_example do
51
+ context BLZService.new('Get Bank', operation: :get_bank, default_hash: { blz: id }) do
57
52
 
58
53
  describe Exchange.new(:default) do
59
54
  it { is_expected.to contain_value id }
60
55
  it { is_expected.to include_in_body id }
61
56
  it_behaves_like 'success scenario'
62
- after(:all) { hash_example.store(:bezeichnung, described_class['bezeichnung']) }
57
+ after(:all) { described_class.store(:title, 'bezeichnung') }
63
58
  end
64
59
 
65
60
  describe Exchange.new(:xpath_eg, blz: 100000) do
66
61
  its(['plz']) { is_expected.to eq '100000' }
67
62
  it { is_expected.to have_xpath_value '//ns1:bezeichnung' => 'Deutsche Bank' }
68
63
  context 'Handle retrieving stored value' do
69
- it { is_expected.to have_xpath_value 'bezeichnung' => hash_example.bezeichnung }
64
+ it { is_expected.to have_xpath_value 'bezeichnung' => described_class.retrieve(:title) }
70
65
  end
71
66
  end
72
67
 
@@ -224,7 +219,7 @@ test_wsdl_content = <<EOF
224
219
  EOF
225
220
 
226
221
  create_file(filename: 'Gemfile', content: gem_content)
227
- create_file(filename: 'Rakefile', content: rake__virtual_content)
222
+ create_file(filename: 'Rakefile', content: rake_virtual_content)
228
223
  create_file(filename: 'README.md', content: readme_content)
229
224
  create_folder 'lib'
230
225
  create_file(filename: 'lib/blz_service.rb', content: weather_web_service)
@@ -244,3 +239,4 @@ create_folder 'logs'
244
239
 
245
240
  puts "Run 'bundle install' to install necessary gems"
246
241
  puts "Run 'rake spec' to run the tests"
242
+ puts "Note: Setup runs Sinatra for Test Service on port 4567 by default. Change Rakefile 'start_test_server' task to update this"
@@ -42,6 +42,22 @@ class Exchange
42
42
  end
43
43
  end
44
44
 
45
+ # Stores a value in the api handler that can be accessed by the provided name
46
+ # @param [Symbol] name Name of method to use to access this value within handler
47
+ # @param [String] value Path to value to store
48
+ def store(name, value)
49
+ @api_class.store(name, self[value])
50
+ end
51
+
52
+ # Retrieve the stored value from the Api Handler
53
+ # @param [String, Symbol] name Name of value to retrieve
54
+ # @return [Object] value from the Api Handler stored previously
55
+ def retrieve(name)
56
+ method = '__stored_val__' + name.to_s
57
+ raise ArgumentError('Value not stored at ') unless api_class.respond_to? method
58
+ @api_class.send(method)
59
+ end
60
+
45
61
  # Name describing this class when used with `RSpec.describe`
46
62
  # This will make the request and store the response
47
63
  # @return [String] Name given when initializing
@@ -10,7 +10,7 @@ module Soaspec
10
10
  # Set instance variable name
11
11
  # @param [String, Symbol] name Name used when describing API test
12
12
  # @param [Hash] options Parameters defining handler. Used in descendants
13
- def initialize(name, options)
13
+ def initialize(name, options = {})
14
14
  use
15
15
  @name = name
16
16
  end
@@ -61,10 +61,17 @@ module Soaspec
61
61
  # @param [Symbol] name Name of method to use to access this value within handler
62
62
  # @param [String] value Value to store
63
63
  def store(name, value)
64
- define_singleton_method(name.to_s) do
64
+ define_singleton_method('__stored_val__' + name.to_s) do
65
65
  value
66
66
  end
67
67
  end
68
68
 
69
+ # Set instance variable and remove it from Hash
70
+ def set_remove_key(hash, key)
71
+ return unless hash.key? key
72
+ __send__("#{key}=", hash[key])
73
+ hash.delete key
74
+ end
75
+
69
76
  end
70
77
  end
@@ -71,12 +71,15 @@ module Soaspec
71
71
  # Setup object to handle communicating with a particular SOAP WSDL
72
72
  # @param [Hash] specific_options Options defining SOAP request. WSDL, authentication, see http://savonrb.com/version2/globals.html for list of options
73
73
  def initialize(name, specific_options = {})
74
+ @default_hash = {}
75
+ @request_option = :hash
76
+ set_remove_key(specific_options, :operation)
77
+ set_remove_key(specific_options, :default_hash)
78
+ set_remove_key(specific_options, :template_name)
74
79
  options = default_options.merge logging_options
75
80
  options.merge! savon_options
76
81
  options.merge!(specific_options)
77
82
  @client = Savon.client(options)
78
- @default_hash = {}
79
- @request_option = :hash
80
83
  super
81
84
  end
82
85
 
@@ -51,7 +51,7 @@ task :default => :spec # This runs the 'spec' task by default when no task is me
51
51
  RAKE
52
52
  end
53
53
 
54
- def rake__virtual_content
54
+ def rake_virtual_content
55
55
  <<-EOF
56
56
  # The list of task for a Rake file can be seen with `rake -T`
57
57
  require 'rspec/core/rake_task' # See See https://relishapp.com/rspec/rspec-core/docs/command-line/rake-task for details
@@ -70,7 +70,7 @@ task :default => :spec # This runs the 'spec' task by default when no task is me
70
70
 
71
71
  desc 'Start virtual web service'
72
72
  task :start_test_server do
73
- ENV['test_server_pid'] = Process.spawn('ruby', 'spec/test_server.rb').to_s #, err: "/dev/null").to_s - TODO: use to turn off debugging
73
+ ENV['test_server_pid'] = Process.spawn('ruby', 'spec/test_server.rb', err: %w[logs/test_server.log w]).to_s
74
74
  puts 'Running test server at pid ' + ENV['test_server_pid']
75
75
  end
76
76
 
@@ -1,3 +1,3 @@
1
1
  module Soaspec
2
- VERSION = '0.0.43'
2
+ VERSION = '0.0.44'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: soaspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.43
4
+ version: 0.0.44
5
5
  platform: ruby
6
6
  authors:
7
7
  - SamuelGarrattIQA
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-04-05 00:00:00.000000000 Z
11
+ date: 2018-04-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler