washout_builder 0.15.8 → 0.16.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: 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