washout_builder 0.14.1 → 0.15.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -2
- data/.rubocop.yml +68 -0
- data/.travis.yml +1 -1
- data/Appraisals +9 -1
- data/Gemfile +2 -3
- data/Rakefile +17 -20
- data/app/controllers/washout_builder/washout_builder_controller.rb +79 -79
- data/app/helpers/washout_builder_complex_type_helper.rb +16 -23
- data/app/helpers/washout_builder_fault_type_helper.rb +12 -13
- data/app/helpers/washout_builder_method_arguments_helper.rb +24 -26
- data/app/helpers/washout_builder_method_list_helper.rb +16 -11
- data/app/helpers/washout_builder_method_return_type_helper.rb +14 -12
- data/app/views/wash_with_html/doc.builder +2 -2
- data/bin/appraisal +16 -0
- data/bin/autospec +16 -0
- data/bin/bundler +16 -0
- data/bin/cdiff +16 -0
- data/bin/coderay +16 -0
- data/bin/colortab +16 -0
- data/bin/coveralls +16 -0
- data/bin/decolor +16 -0
- data/bin/erubis +16 -0
- data/bin/guard +16 -0
- data/bin/htmldiff +16 -0
- data/bin/ldiff +16 -0
- data/bin/listen +16 -0
- data/bin/nokogiri +16 -0
- data/bin/phare +16 -0
- data/bin/pry +16 -0
- data/bin/rackup +16 -0
- data/bin/rails +16 -0
- data/bin/rake +16 -0
- data/bin/restclient +16 -0
- data/bin/rspec +16 -0
- data/bin/rubocop +16 -0
- data/bin/ruby-parse +16 -0
- data/bin/ruby-rewrite +16 -0
- data/bin/sass +16 -0
- data/bin/sass-convert +16 -0
- data/bin/scss +16 -0
- data/bin/scss-lint +16 -0
- data/bin/term_display +16 -0
- data/bin/term_mandel +16 -0
- data/bin/thor +16 -0
- data/bin/uuid +16 -0
- data/config/routes.rb +3 -3
- data/init.rb +1 -1
- data/lib/washout_builder.rb +20 -29
- data/lib/washout_builder/document/complex_type.rb +70 -75
- data/lib/washout_builder/document/exception_model.rb +46 -51
- data/lib/washout_builder/document/generator.rb +56 -66
- data/lib/washout_builder/document/shared_complex_type.rb +2 -4
- data/lib/washout_builder/engine.rb +1 -2
- data/lib/washout_builder/soap.rb +6 -10
- data/lib/washout_builder/type.rb +9 -23
- data/lib/washout_builder/version.rb +5 -5
- data/spec/app/controllers/washout_builder_controller_spec.rb +26 -28
- data/spec/app/helpers/washout_builder_complex_type_helper_spec.rb +37 -45
- data/spec/app/helpers/washout_builder_fault_type_helper_spec.rb +65 -77
- data/spec/app/helpers/washout_builder_method_arguments_helper_spec.rb +65 -76
- data/spec/app/helpers/washout_builder_method_list_helper_spec.rb +30 -35
- data/spec/app/helpers/washout_builder_method_return_type_helper_spec.rb +25 -27
- data/spec/dummy/config/application.rb +4 -4
- data/spec/dummy/config/boot.rb +1 -1
- data/spec/dummy/config/environments/development.rb +2 -3
- data/spec/dummy/config/environments/test.rb +3 -3
- data/spec/dummy/config/initializers/secret_token.rb +1 -1
- data/spec/dummy/config/initializers/session_store.rb +1 -1
- data/spec/dummy/config/routes.rb +0 -1
- data/spec/dummy/script/rails +2 -2
- data/spec/integration/washout_builder_all_services_spec.rb +2 -5
- data/spec/integration/washout_builder_service_spec.rb +2 -5
- data/spec/lib/washout_builder/document/complex_type_spec.rb +98 -118
- data/spec/lib/washout_builder/document/exception_model_spec.rb +49 -54
- data/spec/lib/washout_builder/document/generator_spec.rb +93 -118
- data/spec/lib/washout_builder/type_spec.rb +17 -29
- data/spec/lib/washout_builder_spec.rb +293 -308
- data/spec/spec_helper.rb +24 -30
- data/spec/support/complex_types/fluffy.rb +3 -3
- data/spec/support/complex_types/fluffy_container.rb +3 -3
- data/spec/support/complex_types/project_type.rb +4 -5
- data/spec/support/complex_types/test_type.rb +4 -4
- data/washout_builder.gemspec +5 -2
- metadata +78 -3
@@ -1,65 +1,60 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe
|
4
|
-
let!(:xml) {
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
let(:
|
9
|
-
let
|
10
|
-
|
11
|
-
|
12
|
-
it "returns simple type " do
|
3
|
+
describe WashoutBuilderMethodListHelper, type: :helper do
|
4
|
+
let!(:xml) { Builder::XmlMarkup.new }
|
5
|
+
|
6
|
+
context 'create_return_complex_type_list_html' do
|
7
|
+
let(:complex_class) { 'SomeComplexClass' }
|
8
|
+
let(:builder_elem) { mock }
|
9
|
+
let(:builder_out) { [builder_elem] }
|
10
|
+
|
11
|
+
it 'returns simple type ' do
|
13
12
|
builder_elem.expects(:multiplied).returns(false)
|
14
|
-
result =
|
13
|
+
result = helper.create_return_complex_type_list_html(xml, complex_class, builder_out)
|
15
14
|
result.should eq("<span class=\"pre\"><a href=\"#SomeComplexClass\"><span class=\"lightBlue\">SomeComplexClass</span></a></span>")
|
16
15
|
end
|
17
|
-
|
18
|
-
it
|
16
|
+
|
17
|
+
it 'returns array type ' do
|
19
18
|
builder_elem.expects(:multiplied).returns(true)
|
20
|
-
result =
|
19
|
+
result = helper.create_return_complex_type_list_html(xml, complex_class, builder_out)
|
21
20
|
result.should eq("<span class=\"pre\"><a href=\"#SomeComplexClass\"><span class=\"lightBlue\">Array of SomeComplexClass</span></a></span>")
|
22
21
|
end
|
23
|
-
|
24
22
|
end
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
let(:
|
29
|
-
let
|
30
|
-
let(:
|
31
|
-
|
32
|
-
|
23
|
+
|
24
|
+
context 'create_return_type_list_html' do
|
25
|
+
let(:complex_class) { 'SomeComplexClass' }
|
26
|
+
let(:builder_elem) { mock }
|
27
|
+
let(:output) { [builder_elem] }
|
28
|
+
let(:type) { 'string' }
|
29
|
+
|
33
30
|
before(:each) do
|
34
|
-
builder_elem.stubs(:
|
31
|
+
builder_elem.stubs(:find_complex_class_name).returns(complex_class)
|
35
32
|
builder_elem.stubs(:type).returns(type)
|
36
33
|
end
|
37
|
-
|
38
|
-
it
|
34
|
+
|
35
|
+
it 'returns void for nil' do
|
39
36
|
helper.create_return_type_list_html(xml, nil)
|
40
37
|
xml.target!.should eq("<span class=\"pre\">void</span>")
|
41
38
|
end
|
42
|
-
|
43
|
-
it
|
39
|
+
|
40
|
+
it 'returns basic type' do
|
44
41
|
WashoutBuilder::Type::BASIC_TYPES.expects(:include?).with(builder_elem.type).returns(true)
|
45
42
|
helper.create_return_type_list_html(xml, output)
|
46
43
|
xml.target!.should eq("<span class=\"pre\"><span class=\"blue\">string</span></span>")
|
47
44
|
end
|
48
|
-
it
|
49
|
-
expected =
|
45
|
+
it 'returns complex type' do
|
46
|
+
expected = 'some expected string'
|
50
47
|
WashoutBuilder::Type::BASIC_TYPES.expects(:include?).with(builder_elem.type).returns(false)
|
51
48
|
helper.expects(:create_return_complex_type_html).with(instance_of(Builder::XmlMarkup), complex_class, output).returns(expected)
|
52
49
|
result = helper.create_return_type_list_html(xml, output)
|
53
50
|
result.should eq(expected)
|
54
51
|
end
|
55
|
-
|
56
|
-
it
|
57
|
-
builder_elem.stubs(:
|
52
|
+
|
53
|
+
it 'returns nil if complex class is nil' do
|
54
|
+
builder_elem.stubs(:find_complex_class_name).returns(nil)
|
58
55
|
WashoutBuilder::Type::BASIC_TYPES.expects(:include?).with(builder_elem.type).returns(false)
|
59
56
|
result = helper.create_return_type_list_html(xml, output)
|
60
57
|
result.should eq(nil)
|
61
58
|
end
|
62
|
-
|
63
59
|
end
|
64
|
-
|
65
60
|
end
|
@@ -1,52 +1,50 @@
|
|
1
|
-
require
|
2
|
-
|
3
|
-
describe WashoutBuilderMethodReturnTypeHelper, :
|
4
|
-
let!(:xml) {
|
5
|
-
let(:pre) {[]}
|
6
|
-
|
7
|
-
context
|
8
|
-
let(:complex_class) {
|
9
|
-
let
|
10
|
-
let(:output) {[builder_elem]}
|
11
|
-
let(:type) {
|
12
|
-
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe WashoutBuilderMethodReturnTypeHelper, type: :helper do
|
4
|
+
let!(:xml) { Builder::XmlMarkup.new }
|
5
|
+
let(:pre) { [] }
|
6
|
+
|
7
|
+
context 'create_html_public_method_return_type' do
|
8
|
+
let(:complex_class) { 'SomeComplexClass' }
|
9
|
+
let(:builder_elem) { mock }
|
10
|
+
let(:output) { [builder_elem] }
|
11
|
+
let(:type) { 'string' }
|
12
|
+
|
13
13
|
before(:each) do
|
14
|
-
builder_elem.stubs(:
|
14
|
+
builder_elem.stubs(:find_complex_class_name).returns(complex_class)
|
15
15
|
builder_elem.stubs(:type).returns(type)
|
16
16
|
end
|
17
|
-
|
18
|
-
it
|
17
|
+
|
18
|
+
it 'returns void if output nil' do
|
19
19
|
result = helper.create_html_public_method_return_type(xml, pre, nil)
|
20
|
-
result.should eq([
|
20
|
+
result.should eq(['void'])
|
21
21
|
end
|
22
|
-
|
23
|
-
it
|
22
|
+
|
23
|
+
it 'returns basic type' do
|
24
24
|
WashoutBuilder::Type::BASIC_TYPES.expects(:include?).with(builder_elem.type).returns(true)
|
25
25
|
result = helper.create_html_public_method_return_type(xml, pre, output)
|
26
26
|
result.should eq("<span class=\"blue\">#{type}</span>")
|
27
27
|
end
|
28
|
-
|
29
|
-
it
|
28
|
+
|
29
|
+
it 'returns simeple complex typel' do
|
30
30
|
WashoutBuilder::Type::BASIC_TYPES.expects(:include?).with(builder_elem.type).returns(false)
|
31
31
|
builder_elem.expects(:multiplied).returns(false)
|
32
32
|
result = helper.create_html_public_method_return_type(xml, pre, output)
|
33
33
|
result.should eq(["<a href='##{complex_class}'><span class='lightBlue'>#{complex_class}</span></a>"])
|
34
34
|
end
|
35
|
-
|
36
|
-
it
|
35
|
+
|
36
|
+
it 'returns array of complex typel' do
|
37
37
|
WashoutBuilder::Type::BASIC_TYPES.expects(:include?).with(builder_elem.type).returns(false)
|
38
38
|
builder_elem.expects(:multiplied).returns(true)
|
39
39
|
result = helper.create_html_public_method_return_type(xml, pre, output)
|
40
40
|
result.should eq(["<a href='##{complex_class}'><span class='lightBlue'>Array of #{complex_class}</span></a>"])
|
41
41
|
end
|
42
|
-
|
43
|
-
it
|
42
|
+
|
43
|
+
it 'returns nil if complex class is nil' do
|
44
44
|
WashoutBuilder::Type::BASIC_TYPES.expects(:include?).with(builder_elem.type).returns(false)
|
45
|
-
builder_elem.expects(:
|
45
|
+
builder_elem.expects(:find_complex_class_name).returns(nil)
|
46
46
|
result = helper.create_html_public_method_return_type(xml, pre, output)
|
47
47
|
result.should eq(nil)
|
48
48
|
end
|
49
|
-
|
50
49
|
end
|
51
|
-
|
52
50
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require File.expand_path('../boot', __FILE__)
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
3
|
+
require 'action_controller/railtie'
|
4
|
+
require 'rails/test_unit/railtie'
|
5
5
|
|
6
6
|
if Rails::VERSION::MAJOR >= 4
|
7
7
|
# Ugly hack to make Rails 4 JRuby-compatible to escape Travis errors
|
@@ -13,7 +13,7 @@ if Rails::VERSION::MAJOR >= 4
|
|
13
13
|
end
|
14
14
|
|
15
15
|
Bundler.require
|
16
|
-
require
|
16
|
+
require 'wash_out'
|
17
17
|
|
18
18
|
module Dummy
|
19
19
|
class Application < Rails::Application
|
@@ -43,7 +43,7 @@ module Dummy
|
|
43
43
|
# config.action_view.javascript_expansions[:defaults] = %w(jquery rails)
|
44
44
|
|
45
45
|
# Configure the default encoding used in templates for Ruby 1.9.
|
46
|
-
config.encoding =
|
46
|
+
config.encoding = 'utf-8'
|
47
47
|
|
48
48
|
# Configure sensitive parameters which will be filtered from the log file.
|
49
49
|
config.filter_parameters += [:password]
|
data/spec/dummy/config/boot.rb
CHANGED
@@ -10,8 +10,8 @@ Dummy::Application.configure do
|
|
10
10
|
config.whiny_nils = true
|
11
11
|
|
12
12
|
# Show full error reports and disable caching
|
13
|
-
config.consider_all_requests_local
|
14
|
-
config.action_view.debug_rjs
|
13
|
+
config.consider_all_requests_local = true
|
14
|
+
config.action_view.debug_rjs = true
|
15
15
|
config.action_controller.perform_caching = false
|
16
16
|
|
17
17
|
# Print deprecation notices to the Rails logger
|
@@ -20,4 +20,3 @@ Dummy::Application.configure do
|
|
20
20
|
# Only use best-standards-support built into browsers
|
21
21
|
config.action_dispatch.best_standards_support = :builtin
|
22
22
|
end
|
23
|
-
|
@@ -10,14 +10,14 @@ Dummy::Application.configure do
|
|
10
10
|
config.eager_load = true
|
11
11
|
|
12
12
|
# Show full error reports and disable caching
|
13
|
-
config.consider_all_requests_local
|
13
|
+
config.consider_all_requests_local = true
|
14
14
|
config.action_controller.perform_caching = false
|
15
|
-
|
15
|
+
config.active_support.test_order = :sorted
|
16
16
|
# Raise exceptions instead of rendering exception templates
|
17
17
|
config.action_dispatch.show_exceptions = false
|
18
18
|
|
19
19
|
# Disable request forgery protection in test environment
|
20
|
-
config.action_controller.allow_forgery_protection
|
20
|
+
config.action_controller.allow_forgery_protection = false
|
21
21
|
|
22
22
|
# Use SQL instead of Active Record's schema dumper when creating the test database.
|
23
23
|
# This is necessary if your schema can't be completely dumped by the schema dumper,
|
@@ -5,4 +5,4 @@
|
|
5
5
|
# Make sure the secret is at least 30 characters and all random,
|
6
6
|
# no regular words or you'll be exposed to dictionary attacks.
|
7
7
|
Dummy::Application.config.secret_token = 'b8d5d5687c012c2ef1a7a6e8006172402c48a3dcccca67c076eaad81c4712ad236ca2717c3706df7b286468c749d223f22acb0d96c27bdf33bbdbb9684ad46e5'
|
8
|
-
Dummy::Application.config.secret_key_base = 'ed27a919186a27649accc93ad8c2750a022ef255780e8a15a439658e9f8c520ed70ea071e596b2d23ed41163cf36c21ff5afcd31d19439bb1e4c420f2a57bce6'
|
8
|
+
Dummy::Application.config.secret_key_base = 'ed27a919186a27649accc93ad8c2750a022ef255780e8a15a439658e9f8c520ed70ea071e596b2d23ed41163cf36c21ff5afcd31d19439bb1e4c420f2a57bce6'
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# Be sure to restart your server when you modify this file.
|
2
2
|
|
3
|
-
Dummy::Application.config.session_store :cookie_store, :
|
3
|
+
Dummy::Application.config.session_store :cookie_store, key: '_dummy_session'
|
4
4
|
|
5
5
|
# Use the database for sessions instead of the cookie-based default,
|
6
6
|
# which shouldn't be used to store highly confidential information
|
data/spec/dummy/config/routes.rb
CHANGED
@@ -55,5 +55,4 @@ Dummy::Application.routes.draw do
|
|
55
55
|
# This is a legacy wild controller route that's not recommended for RESTful applications.
|
56
56
|
# Note: This route will make all actions in every controller accessible via GET requests.
|
57
57
|
# match ':controller(/:action(/:id(.:format)))'
|
58
|
-
|
59
58
|
end
|
data/spec/dummy/script/rails
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
|
3
3
|
|
4
|
-
APP_PATH = File.expand_path('../../config/application',
|
5
|
-
require File.expand_path('../../config/boot',
|
4
|
+
APP_PATH = File.expand_path('../../config/application', __FILE__)
|
5
|
+
require File.expand_path('../../config/boot', __FILE__)
|
6
6
|
require 'rails/commands'
|
@@ -1,175 +1,157 @@
|
|
1
|
-
#encoding:utf-8
|
1
|
+
# encoding:utf-8
|
2
2
|
require 'spec_helper'
|
3
3
|
|
4
|
-
|
5
4
|
describe WashoutBuilder::Document::ComplexType do
|
6
|
-
let(:soap_config)
|
5
|
+
let(:soap_config) do
|
6
|
+
OpenStruct.new(
|
7
7
|
camelize_wsdl: false,
|
8
|
-
namespace:
|
9
|
-
description:
|
10
|
-
)
|
11
|
-
|
12
|
-
|
8
|
+
namespace: '/api/wsdl',
|
9
|
+
description: 'some description'
|
10
|
+
)
|
11
|
+
end
|
12
|
+
|
13
|
+
let(:subject) { get_wash_out_param(ProjectType) }
|
13
14
|
let(:namespaced_object) { get_wash_out_param(Api::TestType) }
|
14
|
-
|
15
|
-
it
|
16
|
-
subject.
|
17
|
-
end
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
it "returns error if classname already detected (only used for hashes)" do
|
15
|
+
|
16
|
+
it 'returns the complex class name' do
|
17
|
+
subject.find_complex_class_name.should eq('ProjectType')
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'returns the complex class name' do
|
21
|
+
subject.find_complex_class_name.should eq('ProjectType')
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'returns the complex class with namespace' do
|
25
|
+
namespaced_object.find_complex_class_name.should eq('Api::TestType')
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'returns error if classname already detected (only used for hashes)' do
|
31
29
|
subject.stubs(:classified?).returns(false)
|
32
|
-
subject.stubs(:basic_type).returns(
|
33
|
-
defined
|
34
|
-
expect {subject.
|
30
|
+
subject.stubs(:basic_type).returns('ProjectType')
|
31
|
+
defined = [{ class: 'ProjectType' }]
|
32
|
+
expect { subject.find_complex_class_name(defined) }.to raise_error(RuntimeError, 'Duplicate use of `ProjectType` type name. Consider using classified types.')
|
35
33
|
end
|
36
|
-
|
37
|
-
it
|
38
|
-
subject.
|
34
|
+
|
35
|
+
it 'returns the param structure' do
|
36
|
+
subject.find_param_structure.should eq('project' => 'struct')
|
39
37
|
end
|
40
|
-
|
41
|
-
it
|
38
|
+
|
39
|
+
it 'fixes the first descendant ' do
|
42
40
|
descendant = get_wash_out_param(ProjectType.wash_out_param_map)
|
43
41
|
subject.fix_descendant_wash_out_type(soap_config, ProjectType)
|
44
42
|
subject.name.should eq(descendant.name)
|
45
|
-
subject.map[0].
|
43
|
+
subject.map[0].find_param_structure.should eq(descendant.map[0].find_param_structure)
|
46
44
|
end
|
47
|
-
|
48
|
-
it
|
45
|
+
|
46
|
+
it 'same as ancestor' do
|
49
47
|
subject.get_ancestors(ProjectType).should eq([])
|
50
48
|
end
|
51
|
-
|
52
|
-
it
|
53
|
-
subject.get_ancestors(
|
49
|
+
|
50
|
+
it 'same as ancestor' do
|
51
|
+
subject.get_ancestors('WashoutBuilderSomeInexistentClass').should eq(nil)
|
54
52
|
end
|
55
|
-
|
56
|
-
it
|
57
|
-
expected =
|
53
|
+
|
54
|
+
it 'returns the complex type ancestors' do
|
55
|
+
expected = 'some_name'
|
58
56
|
subject.stubs(:classified?).returns(true)
|
59
57
|
subject.expects(:get_class_ancestors).with(soap_config, ProjectType, []).returns(expected)
|
60
|
-
subject.complex_type_ancestors(soap_config, ProjectType, []
|
58
|
+
subject.complex_type_ancestors(soap_config, ProjectType, []).should eq(expected)
|
61
59
|
end
|
62
|
-
|
63
|
-
it
|
60
|
+
|
61
|
+
it 'returns nil for unclassified objects' do
|
64
62
|
subject.stubs(:classified?).returns(false)
|
65
|
-
subject.complex_type_ancestors(soap_config, ProjectType, []
|
63
|
+
subject.complex_type_ancestors(soap_config, ProjectType, []).should eq(nil)
|
66
64
|
end
|
67
|
-
|
68
|
-
it
|
65
|
+
|
66
|
+
it 'should remove inheritable elements' do
|
69
67
|
subject_dup = subject.dup
|
70
|
-
subject_dup.remove_type_inheritable_elements([
|
71
|
-
subject_dup.map.
|
68
|
+
subject_dup.remove_type_inheritable_elements(['name'])
|
69
|
+
subject_dup.map.find { |element| element.name == 'name' }.should eq(nil)
|
72
70
|
end
|
73
|
-
|
74
|
-
|
75
|
-
it "should return true if same structure" do
|
71
|
+
|
72
|
+
it 'should return true if same structure' do
|
76
73
|
subject.same_structure_as_ancestor?(subject).should eq(true)
|
77
74
|
end
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
it "should return true if same structure" do
|
75
|
+
|
76
|
+
it 'should return true if same structure' do
|
82
77
|
subject.same_structure_as_ancestor?(get_wash_out_param(Fluffy)).should eq(false)
|
83
78
|
end
|
84
|
-
|
85
|
-
|
79
|
+
|
86
80
|
describe '#complex_type_descendants' do
|
87
|
-
|
88
|
-
it "returns empty array if not struct?" do
|
81
|
+
it 'returns empty array if not struct?' do
|
89
82
|
defined = []
|
90
83
|
subject.stubs(:struct?).returns(false)
|
91
84
|
subject.complex_type_descendants(soap_config, defined).should eq(defined)
|
92
85
|
end
|
93
|
-
|
94
|
-
it
|
86
|
+
|
87
|
+
it 'returns the descendants if struct?' do
|
95
88
|
defined = []
|
96
|
-
subject.map.each
|
89
|
+
subject.map.each do |obj|
|
97
90
|
obj.expects(:get_nested_complex_types).with(soap_config, defined).returns([obj.name])
|
98
|
-
|
91
|
+
end
|
99
92
|
subject.stubs(:struct?).returns(true)
|
100
|
-
subject.complex_type_descendants(soap_config, defined).should eq(subject.map.
|
93
|
+
subject.complex_type_descendants(soap_config, defined).should eq(subject.map.map(&:name))
|
101
94
|
end
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
let(:
|
109
|
-
|
110
|
-
|
111
|
-
let(:expected) { [complex_type_hash]}
|
112
|
-
|
113
|
-
it "returns the complex class ancestors" do
|
95
|
+
end
|
96
|
+
|
97
|
+
describe '#get_nested_complex_types' do
|
98
|
+
let(:complex_class) { 'ProjectType' }
|
99
|
+
let(:ancestors) { ['something'] }
|
100
|
+
let(:complex_type_hash) { { class: complex_class, obj: subject, ancestors: ancestors } }
|
101
|
+
let(:expected) { [complex_type_hash] }
|
102
|
+
|
103
|
+
it 'returns the complex class ancestors' do
|
114
104
|
defined = []
|
115
|
-
subject.expects(:
|
105
|
+
subject.expects(:find_complex_class_name).with(defined).returns(complex_class)
|
116
106
|
subject.expects(:fix_descendant_wash_out_type).with(soap_config, complex_class).returns(true)
|
117
107
|
subject.expects(:complex_type_ancestors).with(soap_config, complex_class, defined).returns(ancestors)
|
118
|
-
subject.expects(:complex_type_hash).with(complex_class, subject, ancestors
|
108
|
+
subject.expects(:complex_type_hash).with(complex_class, subject, ancestors).returns(complex_type_hash)
|
119
109
|
subject.expects(:complex_type_descendants).with(soap_config, [complex_type_hash]).returns(expected)
|
120
110
|
subject.get_nested_complex_types(soap_config, defined).should eq(expected)
|
121
111
|
end
|
122
|
-
|
123
|
-
it
|
112
|
+
|
113
|
+
it 'returns the the descendants' do
|
124
114
|
defined = nil
|
125
|
-
subject.expects(:
|
115
|
+
subject.expects(:find_complex_class_name).with([]).returns(nil)
|
126
116
|
subject.expects(:fix_descendant_wash_out_type).with(soap_config, nil).returns(true)
|
127
117
|
subject.expects(:complex_type_descendants).with(soap_config, []).returns(expected)
|
128
118
|
subject.get_nested_complex_types(soap_config, defined).should eq(expected)
|
129
119
|
end
|
130
|
-
|
131
120
|
end
|
132
|
-
|
133
|
-
|
121
|
+
|
134
122
|
describe '#ancestor_structure' do
|
135
|
-
let(:ancestor_class) {ProjectType}
|
123
|
+
let(:ancestor_class) { ProjectType }
|
136
124
|
let(:ancestors) { [ancestor_class] }
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
subject.ancestor_structure(ancestors).should eq({ ancestors[0].to_s.downcase => ancestors[0].wash_out_param_map })
|
125
|
+
|
126
|
+
it 'returns the ancestor structure' do
|
127
|
+
subject.ancestor_structure(ancestors).should eq(ancestors[0].to_s.downcase => ancestors[0].wash_out_param_map)
|
141
128
|
end
|
142
|
-
|
143
129
|
end
|
144
|
-
|
145
|
-
|
130
|
+
|
146
131
|
describe '#complex_type_hash' do
|
147
|
-
let(:complex_class) {
|
148
|
-
let(:ancestors) { [
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
subject.complex_type_hash(complex_class, subject, ancestors).should eq({:class =>complex_class, :obj =>subject , :ancestors => ancestors })
|
132
|
+
let(:complex_class) { 'ProjectType' }
|
133
|
+
let(:ancestors) { ['something'] }
|
134
|
+
|
135
|
+
it 'returns the complex_type_hash' do
|
136
|
+
subject.complex_type_hash(complex_class, subject, ancestors).should eq('class' => complex_class, :obj => subject, :ancestors => ancestors)
|
153
137
|
end
|
154
|
-
|
155
138
|
end
|
156
|
-
|
157
|
-
|
139
|
+
|
158
140
|
describe '#get_class_ancestors' do
|
159
|
-
let(:class_name) {
|
141
|
+
let(:class_name) { 'ProjectType' }
|
160
142
|
let(:defined) { [] }
|
161
|
-
let(:ancestors) { [
|
162
|
-
let(:ancestor_structure) {{ ancestors[0].to_s.downcase =>
|
163
|
-
let(:top_ancestors){}
|
164
|
-
let(:complex_type_hash) { {:
|
165
|
-
|
166
|
-
it
|
143
|
+
let(:ancestors) { ['SomeInexistentClass'] }
|
144
|
+
let(:ancestor_structure) { { ancestors[0].to_s.downcase => 'bla' } }
|
145
|
+
let(:top_ancestors) {}
|
146
|
+
let(:complex_type_hash) { { class: class_name, obj: subject, ancestors: ancestors } }
|
147
|
+
|
148
|
+
it 'returns nil if no ancestors' do
|
167
149
|
subject.expects(:get_ancestors).with(class_name).returns(nil)
|
168
150
|
subject.get_class_ancestors(soap_config, class_name, defined).should eq(nil)
|
169
151
|
end
|
170
|
-
|
171
|
-
it
|
172
|
-
skip
|
152
|
+
|
153
|
+
it 'returns the ancestors and the top ones' do
|
154
|
+
skip 'recursion problem'
|
173
155
|
subject.expects(:get_ancestors).with(class_name).returns(ancestors)
|
174
156
|
subject.expects(:ancestor_structure).with(ancestors).returns(ancestor_structure)
|
175
157
|
WashOut::Param.stubs(:parse_def).returns([namespaced_object])
|
@@ -177,15 +159,13 @@ describe WashoutBuilder::Document::ComplexType do
|
|
177
159
|
subject.expects(:complex_type_hash).returns(complex_type_hash)
|
178
160
|
subject.get_class_ancestors(soap_config, class_name, defined).should eq([complex_type_hash])
|
179
161
|
end
|
180
|
-
|
181
|
-
it
|
162
|
+
|
163
|
+
it 'returns nil if same structure as ancestor' do
|
182
164
|
subject.expects(:get_ancestors).with(class_name).returns(ancestors)
|
183
165
|
subject.expects(:ancestor_structure).with(ancestors).returns(ancestor_structure)
|
184
166
|
WashOut::Param.stubs(:parse_def).returns([namespaced_object])
|
185
167
|
subject.expects(:same_structure_as_ancestor?).with(namespaced_object).returns(true)
|
186
168
|
subject.get_class_ancestors(soap_config, class_name, defined).should eq(nil)
|
187
169
|
end
|
188
|
-
|
189
170
|
end
|
190
|
-
|
191
|
-
end
|
171
|
+
end
|