washout_builder 0.15.8 → 0.16.0

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: 88b534c64a3563ba35ec771c7b97c2c63dd5b156
4
- data.tar.gz: c721fb7c1109b795e493131bbba777d313f53272
3
+ metadata.gz: c1c2aab790ac673d734f1ee42eb6f963e28076f5
4
+ data.tar.gz: b36593c650e341398e4291a2c3a72910b83b61e1
5
5
  SHA512:
6
- metadata.gz: b197f87137546b005140fcb642d2b4c24208119e5c38e0d49b09d1bc1a77a4039c7545ed1f746563423f750c2a99b31179a8794e69a99b92adc849dd70f6343e
7
- data.tar.gz: a8f48288bf579a0104e4b1b754b38c0fca1822b90cc126047d2f6b3dc99f186f8ab38478b712229ad7d46cf0f5e7d6236dedac901c85c1ecb6d046f724832ee7
6
+ metadata.gz: 9441ed5ed24a575495ab3b7d81df35db6f38026f593cde6e2111fea264af5403bc8120949932f6643c1f84cd8549084104c2aa4ed9df0d30c47e04c8c61987df
7
+ data.tar.gz: c7d5b37ec709f09b289d656192d35825aabcb58ea6fe6ef9bc0d6beccec276282e52df75b545b334423864c1d0a76a4b3694a882e32ae4ee2aac55cdc0bf7bf3
@@ -1,12 +1,19 @@
1
1
  require_relative '../../../lib/washout_builder/document/generator'
2
2
  module WashoutBuilder
3
+ # controller that is used to prit all available services or print the documentation for a specific service
3
4
  class WashoutBuilderController < ActionController::Base
4
5
  protect_from_forgery
5
6
 
6
7
  # Will show all api services if no name parameter is receiverd
7
- # If a name parameter is present wiill try to use that and find a controller
8
+ # If a name parameter is present will try to use that and find a controller
8
9
  # that was that name by camelcasing the name .
9
10
  # IF a name is provided will show the documentation page for that controller
11
+ # @see #all_services
12
+ # @see WashoutBuilder::Document::Generator#new
13
+ #
14
+ # @return [void]
15
+ #
16
+ # @api public
10
17
  def all
11
18
  route = params[:name].present? ? controller_is_a_service?(params[:name]) : nil
12
19
  if route.present?
@@ -14,7 +21,9 @@ module WashoutBuilder
14
21
  render template: 'wash_with_html/doc', layout: false,
15
22
  content_type: 'text/html'
16
23
  else
17
- all_services
24
+ @services = all_services
25
+ render template: 'wash_with_html/all_services', layout: false,
26
+ content_type: 'text/html'
18
27
  end
19
28
  end
20
29
 
@@ -22,9 +31,20 @@ module WashoutBuilder
22
31
 
23
32
  # tries to find all services by searching through the rails controller
24
33
  # and returns their namespace, endpoint and a documentation url
34
+ # @see map_controllers
35
+ #
36
+ #
37
+ # @return [Hash] options The hash that contains all information about available services
38
+ # @option options [String] :service_name (@see #controller_naming) The name of the controller that is a soap servive
39
+ # @option options [String]:namespace (@see #service_namespace ) The namespace of the soap service for that controller
40
+ # @option options [String] :endpoint (@see #service_endpoint ) The endpoint of the service controller
41
+ # @option options [String] :documentation_url (@see #service_documentation_url ) The url where the documentation can be seen in HTML
42
+ # for that service controller
43
+ #
44
+ # @api private
25
45
  def all_services
26
46
  @map_controllers = map_controllers { |route| route.defaults[:controller] }
27
- @services = @map_controllers.blank? ? [] : @map_controllers.map do |controller_name|
47
+ @map_controllers.blank? ? [] : @map_controllers.map do |controller_name|
28
48
  {
29
49
  'service_name' => controller_naming(controller_name),
30
50
  'namespace' => service_namespace(controller_name),
@@ -32,23 +52,39 @@ module WashoutBuilder
32
52
  'documentation_url' => service_documentation_url(controller_name)
33
53
  }
34
54
  end
35
-
36
- render template: 'wash_with_html/all_services', layout: false,
37
- content_type: 'text/html'
38
55
  end
39
56
 
40
57
  # the way of converting from controller string in downcase in camelcase
58
+ # @param [String] controller The controller name in downcase letter
59
+ #
60
+ # @return [String] The controller name in camelcase letters
61
+ #
62
+ # @api private
41
63
  def controller_naming(controller)
42
64
  controller.camelize
43
65
  end
44
66
 
45
67
  # checking if a route has the action for generating WSDL
68
+ # @param [ActionDispatch::Journey::Route] route The route that is used to check if can respond to _generate_wsdl action
69
+ #
70
+ # @return [Boolean] Returns true if the route can respond to _generate_wsdl action
71
+ #
72
+ # @api private
46
73
  def route_can_generate_wsdl?(route)
47
74
  route.defaults[:action] == '_generate_wsdl'
48
75
  end
49
76
 
50
77
  # method for getting all controllers that have the generate wsdl action or finding out
51
78
  # if a single controller is a soap service
79
+ # @see #route_can_generate_wsdl?
80
+ #
81
+ # @param [String] action The action is used to collect or find a particular route . Can only be *map* or *detect*
82
+ #
83
+ # @yield [ActionDispatch::Journey::Route] yield each route to the block while iterating through the routes
84
+ #
85
+ # @return [ActionDispatch::Journey::Route, Array<ActionDispatch::Journey::Route>] Can return either a collection of routes or a single route depending on the action
86
+ #
87
+ # @api private
52
88
  def map_controllers(action = 'map')
53
89
  res = Rails.application.routes.routes.send(action) do |route|
54
90
  if route_can_generate_wsdl?(route)
@@ -60,6 +96,14 @@ module WashoutBuilder
60
96
  end
61
97
 
62
98
  # checking if a controller is a soap service
99
+ # @see #map_controllers
100
+ # @see #controller_naming
101
+ #
102
+ # @param [String] controller The controller that is used to check if it is soap service
103
+ #
104
+ # @return [Boolean] Returns true if we find a route that can generate wsdl and the name of the route matches the name of the controller
105
+ #
106
+ # @api private
63
107
  def controller_is_a_service?(controller)
64
108
  map_controllers('detect') do |route|
65
109
  controller_naming(route.defaults[:controller]) == controller_naming(controller)
@@ -67,21 +111,45 @@ module WashoutBuilder
67
111
  end
68
112
 
69
113
  # getting the controller class from the controller string
114
+ # @see #controller_naming
115
+ #
116
+ # @param [String] controller The name of the controller
117
+ # @return [Class] the original controller class name
118
+ # @api private
70
119
  def controller_class(controller)
71
120
  controller_naming("#{controller}_controller").constantize
72
121
  end
73
122
 
74
123
  # retrieves the service namespace
124
+ # @see #controller_class
125
+ #
126
+ # the method receives the controlle name than will try to find the class name
127
+ # of the controller and use the soap configuration of the class to
128
+ # retrive the namespace of the soap service
129
+ #
130
+ # @param [String] controller_name The name of the controller
131
+ # @return [String] The namespace of the soap service that is used in that controller
132
+ #
133
+ # @api private
75
134
  def service_namespace(controller_name)
76
135
  controller_class(controller_name).soap_config.namespace
77
136
  end
78
137
 
79
138
  # the endpoint is based on the namespace followed by /action suffix
139
+ # @see #service_namespace
140
+ #
141
+ # @param [String] controller_name The name of the controller
142
+ # @return [String] The endpoint of the web service
143
+ # @api private
80
144
  def service_endpoint(controller_name)
81
145
  service_namespace(controller_name).gsub('/wsdl', '/action')
82
146
  end
83
147
 
84
148
  # constructs the documentation url for a specific web service
149
+ #
150
+ # @param [String] controller_name The name of the controller
151
+ # @return [String] The documentation url for the web service ( relative to base url)
152
+ # @api private
85
153
  def service_documentation_url(controller_name)
86
154
  "#{washout_builder.root_url}#{controller_naming(controller_name)}"
87
155
  end
@@ -1,7 +1,17 @@
1
+ # module that is used for constructing complex types in HTML-Documentation
1
2
  module WashoutBuilderComplexTypeHelper
2
3
  # this method is for printing the attributes of a complex type
3
4
  # if the attributes are primitives this will show the attributes with blue color
4
5
  # otherwise will call another method for printing the complex attribute
6
+ # @see WashoutBuilder::Type::BASIC_TYPES
7
+ # @see #create_complex_element_type_html
8
+ #
9
+ # @param [Array] pre Array that contains the content that will be appended to the xml element li
10
+ # @param [WashOut::Param] element the element that needs to be printed
11
+ #
12
+ # @return [void]
13
+ #
14
+ # @api public
5
15
  def create_element_type_html(pre, element)
6
16
  element.type = 'string' if element.type == 'text'
7
17
  element.type = 'integer' if element.type == 'int'
@@ -14,6 +24,15 @@ module WashoutBuilderComplexTypeHelper
14
24
 
15
25
  # checks if a complex attribute of a complex type is a array or not
16
26
  # and retrieves the complex class name of the attribute and prints it
27
+ # @see WashoutBuilder::Document::ComplexType#find_complex_class_name
28
+ # @see WashOutParam#multiplied
29
+ #
30
+ # @param [Array] pre Array that contains the content that will be appended to the xml element li
31
+ # @param [WashOut::Param] element the element that needs to be printed
32
+ #
33
+ # @return [void]
34
+ #
35
+ # @api public
17
36
  def create_complex_element_type_html(pre, element)
18
37
  complex_class = element.find_complex_class_name
19
38
  return if complex_class.nil?
@@ -2,27 +2,71 @@ module WashoutBuilderFaultTypeHelper
2
2
  # checks if a complex attribute of a complex type SoapFault is array or not
3
3
  # if the attribute is an array will print also the type of the elements contained in the array
4
4
  # otherwise will show the complex class of the attribute
5
+ #
6
+ # @param [Array] pre Array that contains the content that will be appended to the xml element li
7
+ # @param [Class] attr_primitive xml li element to which the html will be appended to
8
+ # @param [Boolean] array boolean that is used to know if ia primitive is a array of elements
9
+ #
10
+ # @return [void]
11
+ #
12
+ # @api public
5
13
  def create_fault_model_complex_element_type(pre, attr_primitive, attribute, array)
6
14
  attribute_primitive = array == true ? "Array of #{attr_primitive}" : "#{attr_primitive}"
7
15
  pre << "<a href='##{attr_primitive}'><span class='lightBlue'> #{attribute_primitive}</span></a>&nbsp;<span class='bold'>#{attribute}</span>"
8
16
  end
9
17
 
10
18
  # if the attribute is an array this method is used to identify the type of the elements inside the array
19
+ # @see WashoutBuilder::Type::BASIC_TYPES
20
+ #
21
+ # @param [Hash] attr_details hash that contains the member type and determines if the member typs is complex or not
22
+ # @option attr_details [String] :member_type The member type of the element ( basic or complex type)
23
+ # @option attr_details [String]:primitive the primitive determines if is an array or not
24
+ #
25
+ # @return [string] if the member tyoe is basic will return the type in downcase letter else will return the member type exactly as it is
26
+ #
27
+ # @api public
11
28
  def member_type_is_basic?(attr_details)
12
29
  WashoutBuilder::Type::BASIC_TYPES.include?(attr_details[:member_type].to_s.downcase) ? attr_details[:member_type].to_s.downcase : attr_details[:member_type]
13
30
  end
31
+
14
32
  # checks is the attribute has a primitive value or a complex value
33
+ # @see WashoutBuilder::Type::BASIC_TYPES
34
+ #
35
+ # @param [Hash] attr_details hash that contains the member type and determines if the member typs is complex or not
36
+ # @option attr_details [String] :member_type The member type of the element ( basic or complex type)
37
+ # @option attr_details [String]:primitive the primitive determines if is an array or not
38
+ #
39
+ # @return [boolean]
40
+ #
41
+ # @api public
15
42
  def primitive_type_is_basic?(attr_details)
16
43
  WashoutBuilder::Type::BASIC_TYPES.include?(attr_details[:primitive].to_s.downcase)
17
44
  end
18
45
 
19
46
  # if the attribute value is of type nil the documentation will show string
20
47
  # otherwise the primitive value
48
+ # @param [Hash] attr_details hash that contains the member type and determines if the member typs is complex or not
49
+ # @option attr_details [String] :member_type The member type of the element ( basic or complex type)
50
+ # @option attr_details [String]:primitive the primitive determines if is an array or not
51
+ #
52
+ # @return [String] if the primitive is nilclass will return string , otherwise will return the primitive
53
+ #
54
+ # @api public
21
55
  def get_primitive_type_string(attr_details)
22
56
  attr_details[:primitive].to_s.downcase == 'nilclass' ? 'string' : attr_details[:primitive].to_s.downcase
23
57
  end
24
58
 
25
59
  # if the attribute is of type array the method identifies the type of the elements inside the array
60
+ #
61
+ # @see #member_type_is_basic?
62
+ #
63
+ # @param [Hash] attr_details hash that contains the member type and determines if the member typs is complex or not
64
+ # @option attr_details [String] :member_type The member type of the element ( basic or complex type)
65
+ # @option attr_details [String]:primitive the primitive determines if is an array or not
66
+ #
67
+ # @return [String] if the primitive is array will call another methiod to check the member type otherwise will return the primitive
68
+ #
69
+ # @api public
26
70
  def get_member_type_string(attr_details)
27
71
  attr_details[:primitive].to_s.downcase == 'array' ? member_type_is_basic?(attr_details) : attr_details[:primitive]
28
72
  end
@@ -30,6 +74,21 @@ module WashoutBuilderFaultTypeHelper
30
74
  # this method is used to print all attributes of a SoapFault element
31
75
  # if the attribute value is a primitve value it will be shown in blue and will also show the type of the primitive
32
76
  # if is a complex type will use another method for finding out the complex class
77
+ #
78
+ # @see #primitive_type_is_basic?
79
+ # @see #create_fault_model_complex_element_type
80
+ # @see #get_member_type_string
81
+ #
82
+ # @param [Array] pre Array that contains the content that will be appended to the xml element li
83
+ # @param [String] attribute The name of the attribute that needs to be printed
84
+ #
85
+ # @param [Hash] attr_details hash that contains the member type and determines if the member typs is complex or not
86
+ # @option attr_details [String] :member_type The member type of the element ( basic or complex type)
87
+ # @option attr_details [String]:primitive the primitive determines if is an array or not
88
+ #
89
+ # @return [String] if the primitive is basic or nil , will return the primitive type and the attribute with blue, otherwise will print the complex type and the attribute
90
+ #
91
+ # @api public
33
92
  def create_html_fault_model_element_type(pre, attribute, attr_details)
34
93
  if primitive_type_is_basic?(attr_details) || attr_details[:primitive] == 'nilclass'
35
94
  pre << "<span class='blue'>#{get_primitive_type_string(attr_details)}</span>&nbsp;<span class='bold'>#{attribute}</span>"
@@ -1,4 +1,17 @@
1
1
  module WashoutBuilderMethodArgumentsHelper
2
+ # displays the parameter of a method as argument and determines if the parameter is basic type or complex type
3
+ #
4
+ # @see WashoutBuilder::Document::ComplexType#find_complex_class_name
5
+ # @see #create_method_argument_complex_element
6
+ # @see WashoutBuilder::Type::BASIC_TYPES
7
+ #
8
+ # @param [Array] pre Array that contains the content that will be appended to the xml
9
+ # @param [WashOut::Param] param the parameter what needs to be displayed
10
+ # @param [Integer] mlen Determines if we need a spacer when appending the html or not
11
+ #
12
+ # @return [void]
13
+ #
14
+ # @api public
2
15
  def create_method_argument_element(pre, param, mlen)
3
16
  spacer = '&nbsp;&nbsp;&nbsp;&nbsp;'
4
17
  complex_class = param.find_complex_class_name
@@ -10,12 +23,33 @@ module WashoutBuilderMethodArgumentsHelper
10
23
  end
11
24
  end
12
25
 
26
+ # displayes an argument of a method as complex type and determines if is an array of types or not
27
+ #
28
+ # @param [Array] pre Array that contains the content that will be appended to the xml
29
+ # @param [WashOut::Param] param the parameter what needs to be displayed
30
+ # @param [Bololean] use_spacer Determines if we need a spacer when appending the html or not
31
+ # @param [String] spacer the spacer that needs to be prepended if use_spacer is true
32
+ # @param [Class] complex_class The name of the complex type
33
+ #
34
+ # @return [void]
35
+ #
36
+ # @api public
13
37
  def create_method_argument_complex_element(pre, param, use_spacer, spacer, complex_class)
14
38
  return if complex_class.nil?
15
39
  argument_content = param.multiplied == false ? "#{complex_class}" : "Array of #{complex_class}"
16
40
  pre << "#{use_spacer ? spacer : ''}<a href='##{complex_class}'><span class='lightBlue'>#{argument_content}</span></a>&nbsp;<span class='bold'>#{param.name}</span>"
17
41
  end
18
42
 
43
+ # this method will check if the current index of the argument is not last, will insert a comma then a break if the argument is followed by other arguments,
44
+ # and if the current index is equal to the size of argyments, will display a ')' sign
45
+ #
46
+ # @param [Builder::XmlMarkup] xml the markup builder that is used to insert HTML line breaks or span elements
47
+ # @param [Integer] j the index of the previous argument that was displayed (
48
+ # @param [Integer] mlen This determines how many arguments the method that is displayed has
49
+ #
50
+ # @return [String]
51
+ #
52
+ # @api public
19
53
  def create_argument_element_spacer(xml, j, mlen)
20
54
  if j < (mlen - 1)
21
55
  xml.span ', '
@@ -27,6 +61,18 @@ module WashoutBuilderMethodArgumentsHelper
27
61
  xml.span('class' => 'bold') { |y| y << ')' }
28
62
  end
29
63
 
64
+ # this method will go through each of the arguments print them and then check if we need a spacer after it
65
+ #
66
+ # @see #create_method_argument_element
67
+ # @see #create_argument_element_spacer
68
+ #
69
+ # @param [Builder::XmlMarkup] xml the markup builder that is used to insert HTML line breaks or span elements
70
+ # @param [Array] pre The array that holds the html that will be appended to the xml
71
+ # @param [Array] input An array with arguments
72
+ #
73
+ # @return [String]
74
+ #
75
+ # @api public
30
76
  def create_html_public_method_arguments(xml, pre, input)
31
77
  mlen = input.size
32
78
  xml.br if mlen > 1
@@ -1,4 +1,13 @@
1
1
  module WashoutBuilderMethodListHelper
2
+ # this method will create the return type of the method and check if the type is basic or complex type or array of types
3
+ #
4
+ # @param [Builder::XmlMarkup] xml the markup builder that is used to insert HTML line breaks or span elements
5
+ # @param [Array] complex_class The array that holds the html that will be appended to the xml
6
+ # @param [Array<WashOut::Param>] builder_out An array of params ( will contain a single position in the array) this is used to determine if the class is an array or not
7
+ #
8
+ # @return [String]
9
+ #
10
+ # @api public
2
11
  def create_return_complex_type_list_html(xml, complex_class, builder_out)
3
12
  return_content = builder_out[0].multiplied == false ? "#{complex_class}" : "Array of #{complex_class}"
4
13
  xml.span('class' => 'pre') do
@@ -10,6 +19,17 @@ module WashoutBuilderMethodListHelper
10
19
  end
11
20
  end
12
21
 
22
+ # this method will go through each of the arguments print them and then check if we need a spacer after it
23
+ # @see WashoutBuilder::Document::ComplexType#find_complex_class_name
24
+ # @see WashoutBuilder::Type::BASIC_TYPES
25
+ # @see #create_return_complex_type_list_html
26
+ #
27
+ # @param [Builder::XmlMarkup] xml the markup builder that is used to insert HTML line breaks or span elements
28
+ # @param [Array<WashOut::Param>] output t An array of params that need to be displayed, will check the type of each and will display it accordingly if is complex type or not
29
+ #
30
+ # @return [String]
31
+ #
32
+ # @api public
13
33
  def create_return_type_list_html(xml, output)
14
34
  if output.nil?
15
35
  xml.span('class' => 'pre') { |sp| sp << 'void' }
@@ -22,7 +42,7 @@ module WashoutBuilderMethodListHelper
22
42
  end
23
43
  end
24
44
  else
25
- create_return_complex_type_html(xml, complex_class, output) unless complex_class.nil?
45
+ create_return_complex_type_list_html(xml, complex_class, output) unless complex_class.nil?
26
46
  end
27
47
  end
28
48
  end
@@ -1,4 +1,16 @@
1
1
  module WashoutBuilderMethodReturnTypeHelper
2
+ # this method will print the return type next to the method name
3
+ # @see WashoutBuilder::Document::ComplexType#find_complex_class_name
4
+ # @see WashoutBuilder::Type::BASIC_TYPES
5
+ # @see #html_public_method_complex_type
6
+ #
7
+ # @param [Builder::XmlMarkup] xml the markup builder that is used to insert HTML line breaks or span elements
8
+ # @param [Array] pre The array that contains the html that will be appended to xml
9
+ # @param [Array<WashOut::Param>] output An array of params that need to be displayed, will check the type of each and will display it accordingly if is complex type or not
10
+ #
11
+ # @return [String]
12
+ #
13
+ # @api public
2
14
  def create_html_public_method_return_type(xml, pre, output)
3
15
  if !output.nil?
4
16
  complex_class = output[0].find_complex_class_name
@@ -12,6 +24,16 @@ module WashoutBuilderMethodReturnTypeHelper
12
24
  end
13
25
  end
14
26
 
27
+ # this method will go through each of the arguments print them and then check if we need a spacer after it
28
+ #
29
+ #
30
+ # @param [Array] pre The array that contains the html that will be appended to xml
31
+ # @param [Array<WashOut::Param>] output An array of params that need to be displayed, will check the type of each and will display it accordingly if is complex type or not
32
+ # @param [Class] complex_class the name of the complex class
33
+
34
+ # @return [String]
35
+ #
36
+ # @api public
15
37
  def html_public_method_complex_type(pre, output, complex_class)
16
38
  return if complex_class.nil?
17
39
  if output[0].multiplied == false
@@ -1,9 +1,9 @@
1
1
 
2
2
  unless object.blank?
3
3
  xml.a( "name" => "#{class_name}") { }
4
- xml.h3 { |pre| pre << "#{class_name} #{ancestors.blank? ? "" : "<small>(extends <a href='##{ancestors[0].to_s.classify}'>#{ancestors[0].to_s.classify}</a>)</small>" } " }
4
+ xml.h3 { |pre| pre << "#{class_name} #{ancestors.blank? ? "" : "<small>(extends <a href='##{ancestors[0].to_s.classify}'>#{ancestors[0].to_s.classify}</a>)</small>" } " }
5
+
5
6
 
6
-
7
7
  if object.is_a?(WashOut::Param)
8
8
  xml.ul("class" => "pre") {
9
9
  object.map.each do |element|
@@ -13,4 +13,4 @@ unless object.blank?
13
13
  end
14
14
  }
15
15
  end
16
- end
16
+ end
@@ -1,21 +1,50 @@
1
1
  require_relative './shared_complex_type'
2
2
  module WashoutBuilder
3
+ # namespace of the class
3
4
  module Document
5
+ # class that is used for current Washout::Param object to know his complex type name and structure and detect ancestors and descendants
4
6
  module ComplexType
5
7
  extend ActiveSupport::Concern
6
8
  include WashoutBuilder::Document::SharedComplexType
7
9
 
10
+ # finds the complex class name of the current Washout::Param object and checks if is a duplicate
11
+ # @see #check_duplicate_complex_class
12
+ #
13
+ # @param [Array] defined Array that is used for when iterating through descendants and ancestors
14
+ #
15
+ # @return [Class] the complex type name of the current object
16
+ #
17
+ # @api public
8
18
  def find_complex_class_name(defined = [])
9
19
  complex_class = struct? ? basic_type.tr('.', '/').camelize : nil
10
20
  check_duplicate_complex_class(defined, complex_class) unless complex_class.nil? || defined.blank?
11
21
  complex_class
12
22
  end
13
23
 
24
+ # checks if the complex class appears in the array of complex types
25
+ #
26
+ # @param [Array<Hash>] defined Array that is used for checking if a complex type is already defined
27
+ # @param [Class] complex_class the complex type name used for searching
28
+ #
29
+ # @return [Boolean] returns true or false if the complex type is found inside the array
30
+ #
31
+ # @api public
14
32
  def check_duplicate_complex_class(defined, complex_class)
15
33
  complex_obj_found = defined.find { |hash| hash[:class] == complex_class }
16
34
  raise "Duplicate use of `#{basic_type}` type name. Consider using classified types." if !complex_obj_found.nil? && struct? && !classified?
17
35
  end
18
36
 
37
+ # finds the complex class ancestors if the current object is classified, otherwise returns nil
38
+ # @see WashOut::Param#classified?
39
+ # @see #get_class_ancestors
40
+ #
41
+ # @param [WashOut::SoapConfig] config the configuration of the soap service
42
+ # @param [Clas] complex_class the complex type name of the object
43
+ # @param [Array<Hash>] defined An array that holds all the complex types found so far
44
+ #
45
+ # @return [Array<Class>, nil] returns nil if object not classified othewise an array of classes that are ancestors to curent object
46
+ #
47
+ # @api public
19
48
  def complex_type_ancestors(config, complex_class, defined)
20
49
  classified? ? get_class_ancestors(config, complex_class, defined) : nil
21
50
  end
@@ -31,10 +60,6 @@ module WashoutBuilder
31
60
  self.map = map.delete_if { |element| keys.include?(element.name) }
32
61
  end
33
62
 
34
- # def get_ancestor_structure
35
- # {self.class.to_s.downcase => self.class.columns_hash.inject({}) {|h, (k,v)| h["#{k}"]="#{v.type}".to_sym; h } }
36
- # end
37
-
38
63
  def fix_descendant_wash_out_type(config, complex_class)
39
64
  param_class = begin
40
65
  complex_class.is_a?(Class) ? complex_class : complex_class.constantize
@@ -97,7 +122,7 @@ module WashoutBuilder
97
122
 
98
123
  def complex_type_hash(class_name, object, ancestors)
99
124
  {
100
- 'class' => class_name,
125
+ class: class_name,
101
126
  obj: object,
102
127
  ancestors: ancestors
103
128
  }
@@ -7,13 +7,19 @@ module WashoutBuilder
7
7
  include WashOut::Rails::Controller if defined?(WashOut::Rails::Controller)
8
8
 
9
9
  module ClassMethods
10
- attr_accessor :soap_actions
10
+ attr_accessor :soap_actions, :washout_builder_action
11
11
  # Define a SOAP action +action+. The function has two required +options+:
12
12
  # :args and :return. Each is a type +definition+ of format described in
13
13
  # WashOut::Param#parse_def.
14
14
  #
15
15
  # An optional option :to can be passed to allow for names of SOAP actions
16
16
  # which are not valid Ruby function names.
17
+ # @param [Symbol, Class] action the action that is requested
18
+ # @param [Hash] options the options used for
19
+ #
20
+ # @return [void]
21
+ #
22
+ # @api public
17
23
  def soap_action(action, options = {})
18
24
  original_soap_action(action, options)
19
25
 
@@ -5,8 +5,8 @@ module WashoutBuilder # Returns the version of the currently loaded Rails as a <
5
5
 
6
6
  module VERSION
7
7
  MAJOR = 0
8
- MINOR = 15
9
- TINY = 8
8
+ MINOR = 16
9
+ TINY = 0
10
10
  PRE = nil
11
11
 
12
12
  STRING = [MAJOR, MINOR, TINY, PRE].compact.join('.')
@@ -45,7 +45,7 @@ describe WashoutBuilderMethodListHelper, type: :helper do
45
45
  it 'returns complex type' do
46
46
  expected = 'some expected string'
47
47
  WashoutBuilder::Type::BASIC_TYPES.expects(:include?).with(builder_elem.type).returns(false)
48
- helper.expects(:create_return_complex_type_html).with(instance_of(Builder::XmlMarkup), complex_class, output).returns(expected)
48
+ helper.expects(:create_return_complex_type_list_html).with(instance_of(Builder::XmlMarkup), complex_class, output).returns(expected)
49
49
  result = helper.create_return_type_list_html(xml, output)
50
50
  expect(result).to eq(expected)
51
51
  end
data/spec/spec_helper.rb CHANGED
@@ -34,7 +34,6 @@ require 'ostruct'
34
34
 
35
35
  require File.expand_path('../dummy/config/environment.rb', __FILE__)
36
36
  require File.expand_path('../../config/routes.rb', __FILE__)
37
- require 'rails/test_help'
38
37
  require 'rspec/rails'
39
38
  require 'savon'
40
39
  require 'wash_out'
@@ -48,7 +47,6 @@ Rails.backtrace_cleaner.remove_silencers!
48
47
  # Load support files
49
48
  Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
50
49
 
51
- FIxMinitest.disable_autorun
52
50
  # Test::Unit.run = true if defined?(Test::Unit) && Test::Unit.respond_to?(:run=)
53
51
  RSpec.configure do |config|
54
52
  require 'rspec/expectations'
@@ -10,13 +10,13 @@ Gem::Specification.new do |s|
10
10
  s.description = "WashOut Soap Service HTML-Documentation generator (extends WashOut https://github.com/inossidabile/wash_out/) "
11
11
  s.authors = ["bogdanRada"]
12
12
  s.date = Date.today
13
-
13
+
14
14
  s.licenses = ["MIT"]
15
15
  s.files = `git ls-files`.split("\n")
16
16
  s.test_files = s.files.grep(/^(spec)/)
17
17
  s.require_paths = ["lib"]
18
18
  s.add_runtime_dependency 'wash_out', '~> 0.9.1', '>= 0.9.1'
19
-
19
+
20
20
  s.add_development_dependency 'wasabi', '~> 3.5', '>= 3.5'
21
21
  s.add_development_dependency 'savon', '~> 2.11', '>= 2.11'
22
22
  s.add_development_dependency 'httpi', '~> 2.4', '>= 2.4'
@@ -34,12 +34,12 @@ Gem::Specification.new do |s|
34
34
  # s.add_development_dependency 'codeclimate-test-reporter','~> 0.3', '>= 0.3'
35
35
  # s.add_development_dependency 'rubyntlm','~> 0.3.4', '>= 0.3'
36
36
  s.add_development_dependency 'rvm-tester','~> 1.1', '>= 1.1'
37
- s.add_development_dependency 'wwtd','~> 0.9', '>= 0.9.1'
38
-
37
+ s.add_development_dependency 'wwtd','~> 1.0', '>= 1.0'
38
+
39
39
  s.add_development_dependency 'capybara', '~> 2.4', '>= 2.4'
40
40
  s.add_development_dependency 'selenium-webdriver', '~> 2.41', '>= 2.41.0'
41
41
  s.add_development_dependency 'headless','~> 2.2', '>= 2.2'
42
-
42
+
43
43
  s.add_development_dependency 'rubocop', '~> 0.3', '>= 0.33'
44
44
  s.add_development_dependency 'phare', '~> 0.7', '>= 0.7'
45
45
  s.add_development_dependency 'yard', '~> 0.8.7', '>= 0.8.7'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: washout_builder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.15.8
4
+ version: 0.16.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - bogdanRada
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-12 00:00:00.000000000 Z
11
+ date: 2015-08-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: wash_out
@@ -316,20 +316,20 @@ dependencies:
316
316
  requirements:
317
317
  - - "~>"
318
318
  - !ruby/object:Gem::Version
319
- version: '0.9'
319
+ version: '1.0'
320
320
  - - ">="
321
321
  - !ruby/object:Gem::Version
322
- version: 0.9.1
322
+ version: '1.0'
323
323
  type: :development
324
324
  prerelease: false
325
325
  version_requirements: !ruby/object:Gem::Requirement
326
326
  requirements:
327
327
  - - "~>"
328
328
  - !ruby/object:Gem::Version
329
- version: '0.9'
329
+ version: '1.0'
330
330
  - - ">="
331
331
  - !ruby/object:Gem::Version
332
- version: 0.9.1
332
+ version: '1.0'
333
333
  - !ruby/object:Gem::Dependency
334
334
  name: capybara
335
335
  requirement: !ruby/object:Gem::Requirement
@@ -651,7 +651,6 @@ files:
651
651
  - spec/support/complex_types/fluffy_container.rb
652
652
  - spec/support/complex_types/project_type.rb
653
653
  - spec/support/complex_types/test_type.rb
654
- - spec/support/fix_minitest.rb
655
654
  - washout_builder.gemspec
656
655
  homepage: http://github.com/bogdanRada/washout_builder/
657
656
  licenses:
@@ -719,5 +718,4 @@ test_files:
719
718
  - spec/support/complex_types/fluffy_container.rb
720
719
  - spec/support/complex_types/project_type.rb
721
720
  - spec/support/complex_types/test_type.rb
722
- - spec/support/fix_minitest.rb
723
721
  has_rdoc:
@@ -1,38 +0,0 @@
1
-
2
- module FIxMinitest
3
- def self.disable_autorun
4
- disable_auto_runner
5
- override_minitest_run
6
- override_minitest_unit_run
7
- end
8
-
9
- # rubocop:disable all
10
- def self.override_minitest_run
11
- Minitest.instance_eval do
12
- def run(*)
13
- FIxMinitest.run_mininitest
14
- end
15
- end if defined?(Minitest)
16
- end
17
-
18
- # rubocop:disable NestedMethodDefinition
19
- def self.run_mininitest
20
- case $ERROR_INFO
21
- when SystemExit
22
- $ERROR_INFO.status
23
- else
24
- true
25
- end
26
- end
27
- # rubocop:disable NestedMethodDefinition
28
- def self.override_minitest_unit_run
29
- Minitest::Unit.class_eval do
30
- def run(*)
31
- end
32
- end if defined?(Minitest) && defined?(Minitest::Unit)
33
- end
34
-
35
- def self.disable_auto_runner
36
- Test::Unit::Runner.module_eval('@@stop_auto_run = true') if defined?(Test::Unit::Runner)
37
- end
38
- end