yield_star_client 0.1.1 → 0.2.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.
- data/CHANGELOG.md +10 -0
- data/LICENSE +19 -0
- data/lib/yield_star_client/amenity_methods.rb +4 -10
- data/lib/yield_star_client/client.rb +23 -2
- data/lib/yield_star_client/configuration.rb +94 -0
- data/lib/yield_star_client/floor_plan_methods.rb +4 -9
- data/lib/yield_star_client/lease_term_rent_methods.rb +11 -16
- data/lib/yield_star_client/property_methods.rb +6 -14
- data/lib/yield_star_client/rent_methods.rb +4 -10
- data/lib/yield_star_client/unit_methods.rb +4 -9
- data/lib/yield_star_client/version.rb +1 -1
- data/lib/yield_star_client.rb +4 -68
- data/spec/spec_helper.rb +0 -3
- data/spec/yield_star_client/amenity_methods_spec.rb +5 -5
- data/spec/yield_star_client/client_spec.rb +153 -3
- data/spec/yield_star_client/floor_plan_methods_spec.rb +3 -3
- data/spec/yield_star_client/lease_term_rent_methods_spec.rb +4 -4
- data/spec/yield_star_client/property_methods_spec.rb +4 -4
- data/spec/yield_star_client/rent_methods_spec.rb +3 -3
- data/spec/yield_star_client/unit_methods_spec.rb +5 -5
- data/spec/yield_star_client_spec.rb +35 -0
- data/yield_star_client.gemspec +3 -5
- metadata +29 -58
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
## 0.2.0 (2012-01-16)
|
2
|
+
|
3
|
+
* Moved the client_name to the configuration, since it is required
|
4
|
+
for every call to the remote service. The client_name parameter has
|
5
|
+
been removed from the method signature for all service calls, which
|
6
|
+
breaks backwards compatibility with v0.1.x.
|
7
|
+
* Added the :debug and :logger configuration options to prevent savon
|
8
|
+
from dumping all soap messages to STDOUT.
|
9
|
+
* Various minor cleanup around configuration.
|
10
|
+
|
1
11
|
## 0.1.1 (2011-06-14)
|
2
12
|
|
3
13
|
* Bug fix: explicitly namespace all require statements to avoid
|
data/LICENSE
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
Copyright (C) 2011 G5
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
4
|
+
this software and associated documentation files (the "Software"), to deal in
|
5
|
+
the Software without restriction, including without limitation the rights to
|
6
|
+
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
7
|
+
of the Software, and to permit persons to whom the Software is furnished to do
|
8
|
+
so, subject to the following conditions:
|
9
|
+
|
10
|
+
The above copyright notice and this permission notice shall be included in all
|
11
|
+
copies or substantial portions of the Software.
|
12
|
+
|
13
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
16
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
19
|
+
SOFTWARE.
|
@@ -20,7 +20,6 @@ module YieldStarClient
|
|
20
20
|
|
21
21
|
# Retrieves all of the amenities associated with a specific floor plan.
|
22
22
|
#
|
23
|
-
# @param [String] client_name the YieldStar client name
|
24
23
|
# @param [String] external_property_id the ID of the property where the floor plan is located
|
25
24
|
# @param [String] floor_plan_name the name of the floor plan
|
26
25
|
#
|
@@ -31,13 +30,11 @@ module YieldStarClient
|
|
31
30
|
# @raise [YieldStarClient::OperationError] when the service raises an OperationError fault
|
32
31
|
# @raise [YieldStarClient::InternalError] when the service raises an InternalError fault
|
33
32
|
# @raise [YieldStarClient::ServerError] when any other server-side error occurs
|
34
|
-
def get_floor_plan_amenities(
|
35
|
-
validate_client_name!(client_name)
|
33
|
+
def get_floor_plan_amenities(external_property_id, floor_plan_name)
|
36
34
|
validate_external_property_id!(external_property_id)
|
37
35
|
validate_required!(:floor_plan_name => floor_plan_name)
|
38
36
|
|
39
|
-
response = send_soap_request(:get_floor_plan_amenities, :
|
40
|
-
:external_property_id => external_property_id,
|
37
|
+
response = send_soap_request(:get_floor_plan_amenities, :external_property_id => external_property_id,
|
41
38
|
:floor_plan_name => floor_plan_name)
|
42
39
|
|
43
40
|
amenities = response.to_hash[:get_floor_plan_amenities_response][:return][:amenity] || []
|
@@ -46,7 +43,6 @@ module YieldStarClient
|
|
46
43
|
|
47
44
|
# Retrieves all of the amenities associated with a specific unit.
|
48
45
|
#
|
49
|
-
# @param [String] client_name the YieldStar client name
|
50
46
|
# @param [String] external_property_id the ID of the property where the floor plan is located
|
51
47
|
# @param [String] unit_name the name of the unit
|
52
48
|
# @param [optional,String] building the name of the building where the unit is located
|
@@ -58,13 +54,11 @@ module YieldStarClient
|
|
58
54
|
# @raise [YieldStarClient::OperationError] when the service raises an OperationError fault
|
59
55
|
# @raise [YieldStarClient::InternalError] when the service raises an InternalError fault
|
60
56
|
# @raise [YieldStarClient::ServerError] when any other server-side error occurs
|
61
|
-
def get_unit_amenities(
|
62
|
-
validate_client_name!(client_name)
|
57
|
+
def get_unit_amenities(external_property_id, unit_name, building=nil)
|
63
58
|
validate_external_property_id!(external_property_id)
|
64
59
|
validate_required!(:unit_name => unit_name)
|
65
60
|
|
66
|
-
body = {:
|
67
|
-
:external_property_id => external_property_id,
|
61
|
+
body = {:external_property_id => external_property_id,
|
68
62
|
:unit_name => unit_name}
|
69
63
|
body[:building] = building if building
|
70
64
|
|
@@ -27,6 +27,20 @@ module YieldStarClient
|
|
27
27
|
define_method(opt) { get_value(opt) }
|
28
28
|
end
|
29
29
|
|
30
|
+
def debug=(val)
|
31
|
+
@debug = val
|
32
|
+
Savon.log = self.debug?
|
33
|
+
end
|
34
|
+
|
35
|
+
def debug?
|
36
|
+
get_value(:debug).to_s == 'true'
|
37
|
+
end
|
38
|
+
|
39
|
+
def logger=(val)
|
40
|
+
@logger = val
|
41
|
+
Savon.logger = self.logger
|
42
|
+
end
|
43
|
+
|
30
44
|
# Initializes the client. All options are truly optional; if the option
|
31
45
|
# is not supplied to this method, then it will be set based on the
|
32
46
|
# YieldStarClient configuration.
|
@@ -36,9 +50,13 @@ module YieldStarClient
|
|
36
50
|
# @param [Hash] options
|
37
51
|
# @option options [String] :username The username for authenticating to the web service.
|
38
52
|
# @option options [String] :password The password for authenticating to the web service.
|
53
|
+
# @option options [String] :client_name The YieldStar client name (required for all requests)
|
39
54
|
# @option options [String] :endpoint The address for connecting to the web service.
|
40
55
|
# @option options [String] :namespace The XML namespace to use for requests.
|
56
|
+
# @option options [true,false] :debug true to enable debug logging of SOAP traffic; defaults to false
|
41
57
|
def initialize(options={})
|
58
|
+
self.debug = nil
|
59
|
+
self.logger = nil
|
42
60
|
options.each { |k,v| self.send("#{k}=", v) if self.respond_to?("#{k}=") }
|
43
61
|
end
|
44
62
|
|
@@ -49,10 +67,12 @@ module YieldStarClient
|
|
49
67
|
# @param [Hash] soap_parameters the parameters to populate the request body
|
50
68
|
# @return [Savon::SOAP::Response]
|
51
69
|
def send_soap_request(soap_action,soap_parameters={})
|
70
|
+
validate_client_name!(client_name)
|
71
|
+
default_params = { :client_name => client_name }
|
52
72
|
begin
|
53
73
|
response = soap_client.request :wsdl, soap_action do
|
54
74
|
soap.element_form_default = :qualified
|
55
|
-
soap.body = { :request => soap_parameters }
|
75
|
+
soap.body = { :request => default_params.merge(soap_parameters) }
|
56
76
|
end
|
57
77
|
rescue Savon::SOAP::Fault => f
|
58
78
|
raise ServerError.translate_fault(f)
|
@@ -78,7 +98,8 @@ module YieldStarClient
|
|
78
98
|
# @param [Symbol] attribute the name of the attribute
|
79
99
|
# @return [String] the value of the attribute
|
80
100
|
def get_value(attribute)
|
81
|
-
instance_variable_get("@#{attribute}")
|
101
|
+
local_val = instance_variable_get("@#{attribute}")
|
102
|
+
local_val.nil? ? YieldStarClient.send(attribute) : local_val
|
82
103
|
end
|
83
104
|
end
|
84
105
|
end
|
@@ -0,0 +1,94 @@
|
|
1
|
+
require 'configlet'
|
2
|
+
require 'logger'
|
3
|
+
|
4
|
+
module YieldStarClient
|
5
|
+
# All valid configuration options.
|
6
|
+
#
|
7
|
+
# @see YieldStarClient.configure
|
8
|
+
VALID_CONFIG_OPTIONS = [:endpoint, :username, :password, :namespace, :client_name,
|
9
|
+
:debug, :logger]
|
10
|
+
|
11
|
+
DEFAULT_ENDPOINT = 'https://rmsws.yieldstar.com/rmsws/AppExchange'
|
12
|
+
DEFAULT_NAMESPACE = 'http://yieldstar.com/ws/AppExchange/v1'
|
13
|
+
|
14
|
+
module Configuration
|
15
|
+
include Configlet
|
16
|
+
|
17
|
+
def self.extended(base)
|
18
|
+
# Default configuration - happens whether or not .configure is called
|
19
|
+
base.config :yield_star do
|
20
|
+
default :endpoint => DEFAULT_ENDPOINT
|
21
|
+
default :namespace => DEFAULT_NAMESPACE
|
22
|
+
default :debug => false
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
# Mutators and accessors for simple configuration options
|
27
|
+
VALID_CONFIG_OPTIONS.each do |config_opt|
|
28
|
+
define_method(config_opt) do
|
29
|
+
self[config_opt]
|
30
|
+
end
|
31
|
+
|
32
|
+
define_method("#{config_opt}=".to_sym) do |val|
|
33
|
+
self[config_opt] = val ? val.to_s : nil
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
# True if debug logging of SOAP requests and responses has been enabled;
|
38
|
+
# false otherwise.
|
39
|
+
def debug?
|
40
|
+
self[:debug] == 'true'
|
41
|
+
end
|
42
|
+
|
43
|
+
# Custom logger object for debug logging; defaults to STDOUT.
|
44
|
+
attr_writer :logger
|
45
|
+
|
46
|
+
def logger
|
47
|
+
@logger ||= Logger.new(STDOUT)
|
48
|
+
end
|
49
|
+
|
50
|
+
# Configures this module through the given +block+.
|
51
|
+
# Default configuration options will be applied unless
|
52
|
+
# they are explicitly overridden in the +block+.
|
53
|
+
#
|
54
|
+
# @yield [_self] configures service connection options
|
55
|
+
# @yieldparam [YieldstarClient] _self the object on which the configure method was called
|
56
|
+
# @example Typical case utilizing defaults
|
57
|
+
# YieldStarClient.configure do |config|
|
58
|
+
# config.username = 'my_user'
|
59
|
+
# config.password = 'my_pass'
|
60
|
+
# config.client_name = 'my_client'
|
61
|
+
# end
|
62
|
+
# @example Overriding defaults
|
63
|
+
# YieldStarClient.configure do |config|
|
64
|
+
# config.username = 'my_user'
|
65
|
+
# config.password = 'my_pass'
|
66
|
+
# config.client_name = 'my_client'
|
67
|
+
# config.endpoint = 'http://my.endpoint.com'
|
68
|
+
# config.namespace = 'http://my.namespace.com'
|
69
|
+
# config.debug = true
|
70
|
+
# config.logger = Logger.new('my.log')
|
71
|
+
# end
|
72
|
+
# @return [YieldStarClient] _self
|
73
|
+
# @see VALID_CONFIG_OPTIONS
|
74
|
+
def configure
|
75
|
+
config :yield_star do
|
76
|
+
yield self
|
77
|
+
end
|
78
|
+
|
79
|
+
self
|
80
|
+
end
|
81
|
+
|
82
|
+
# Resets this module's configuration.
|
83
|
+
# Configuration options will be set to default values
|
84
|
+
# if they exist; otherwise, they will be set to nil.
|
85
|
+
#
|
86
|
+
# @see VALID_CONFIG_OPTIONS
|
87
|
+
# @see DEFAULT_ENDPOINT
|
88
|
+
# @see DEFAULT_NAMESPACE
|
89
|
+
def reset
|
90
|
+
VALID_CONFIG_OPTIONS.each { |opt| self.send("#{opt}=", nil) }
|
91
|
+
self.logger = nil
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
@@ -29,7 +29,6 @@ module YieldStarClient
|
|
29
29
|
|
30
30
|
# Retrieves all floor plans for a particular property.
|
31
31
|
#
|
32
|
-
# @param [String] client_name the YieldStar client name
|
33
32
|
# @param [String] external_property_id the ID of the property
|
34
33
|
# @return [Array<YieldStarClient::FloorPlan>] list of floor plans
|
35
34
|
#
|
@@ -38,11 +37,10 @@ module YieldStarClient
|
|
38
37
|
# @raise [YieldStarClient::OperationError] when the service raises an OperationError fault
|
39
38
|
# @raise [YieldStarClient::InternalError] when the service raises an InternalError fault
|
40
39
|
# @raise [YieldStarClient::ServerError] when any other server-side error occurs
|
41
|
-
def get_floor_plans(
|
42
|
-
validate_client_name!(client_name)
|
40
|
+
def get_floor_plans(external_property_id)
|
43
41
|
validate_external_property_id!(external_property_id)
|
44
42
|
|
45
|
-
response = send_soap_request(:get_floor_plans, :
|
43
|
+
response = send_soap_request(:get_floor_plans, :external_property_id => external_property_id)
|
46
44
|
|
47
45
|
floor_plans = response.to_hash[:get_floor_plans_response][:return][:floor_plan] || []
|
48
46
|
floor_plans = [floor_plans].flatten
|
@@ -52,7 +50,6 @@ module YieldStarClient
|
|
52
50
|
|
53
51
|
# Retrieves a specific floor plan.
|
54
52
|
#
|
55
|
-
# @param [String] client_name the YieldStar client name
|
56
53
|
# @param [String] external_property_id the ID of the property
|
57
54
|
# @param [String] floor_plan_name the name of the floor plan
|
58
55
|
# @return [YieldStarClient::FloorPlan] the floor plan data
|
@@ -62,13 +59,11 @@ module YieldStarClient
|
|
62
59
|
# @raise [YieldStarClient::OperationError] when the service raises an OperationError fault
|
63
60
|
# @raise [YieldStarClient::InternalError] when the service raises an InternalError fault
|
64
61
|
# @raise [YieldStarClient::ServerError] when any other server-side error occurs
|
65
|
-
def get_floor_plan(
|
66
|
-
validate_client_name!(client_name)
|
62
|
+
def get_floor_plan(external_property_id, floor_plan_name)
|
67
63
|
validate_external_property_id!(external_property_id)
|
68
64
|
validate_required!(:floor_plan_name => floor_plan_name)
|
69
65
|
|
70
|
-
response = send_soap_request(:get_floor_plan, :
|
71
|
-
:external_property_id => external_property_id,
|
66
|
+
response = send_soap_request(:get_floor_plan, :external_property_id => external_property_id,
|
72
67
|
:name => floor_plan_name)
|
73
68
|
floor_plan = response.to_hash[:get_floor_plan_response][:return][:floor_plan]
|
74
69
|
|
@@ -83,7 +83,6 @@ module YieldStarClient
|
|
83
83
|
# Retrieves a matrix providing the specific rate for each combination of
|
84
84
|
# lease term and move-in date for a particular unit.
|
85
85
|
#
|
86
|
-
# @param [String] client_name the YieldStar client name
|
87
86
|
# @param [String] external_property_id the ID of the property where the unit is located
|
88
87
|
# @param [String] unit_number the unit_number that identifies the available unit
|
89
88
|
# @param [Hash] opts optional filters for lease term data
|
@@ -102,11 +101,10 @@ module YieldStarClient
|
|
102
101
|
# @raise [YieldStarClient::OperationError] when the service raises an OperationError fault
|
103
102
|
# @raise [YieldStarClient::InternalError] when the service raises an InternalError fault
|
104
103
|
# @raise [YieldStarClient::ServerError] when any other server-side error occurs
|
105
|
-
def get_lease_term_rent(
|
104
|
+
def get_lease_term_rent(external_property_id, unit_number, opts={})
|
106
105
|
opts ||= {}
|
107
|
-
call_lease_term_rent_method(
|
108
|
-
|
109
|
-
unit_number,
|
106
|
+
call_lease_term_rent_method(external_property_id,
|
107
|
+
unit_number,
|
110
108
|
opts.merge(:request_element => :lease_term_rent_unit_request,
|
111
109
|
:soap_action => :get_lease_term_rent,
|
112
110
|
:response_element => :lease_term_rent_unit_response,
|
@@ -117,11 +115,10 @@ module YieldStarClient
|
|
117
115
|
# the last date for which the price is valid.
|
118
116
|
#
|
119
117
|
# {see #get_lease_term_rent}
|
120
|
-
def get_lease_term_rent_plus(
|
118
|
+
def get_lease_term_rent_plus(external_property_id, unit_number, opts={})
|
121
119
|
opts ||= {}
|
122
|
-
call_lease_term_rent_method(
|
123
|
-
|
124
|
-
unit_number,
|
120
|
+
call_lease_term_rent_method(external_property_id,
|
121
|
+
unit_number,
|
125
122
|
opts.merge(:request_element => :lease_term_rent_unit_request,
|
126
123
|
:soap_action => :get_lease_term_rent_plus,
|
127
124
|
:response_element => :lease_term_rent_unit_plus_response,
|
@@ -131,7 +128,6 @@ module YieldStarClient
|
|
131
128
|
# Retrieves rate data for units that are within "Renewal Notice Days" of lease expiration,
|
132
129
|
# and those units for which renewal rates have been manually generated and accepted.
|
133
130
|
#
|
134
|
-
# @param [String] client_name the YieldStar client name
|
135
131
|
# @param [String] external_property_id the ID of the property where the unit is located
|
136
132
|
# @param [String] unit_number the unit_number that identifies the available unit
|
137
133
|
# @param [Hash] opts optional filters for lease term data
|
@@ -143,11 +139,10 @@ module YieldStarClient
|
|
143
139
|
# @return [Array<YieldStarClient::RenewalLeaseTermRent>] the list of units up for renewal
|
144
140
|
#
|
145
141
|
# @raise {see #get_lease_term_rent}
|
146
|
-
def get_renewal_lease_term_rent(
|
142
|
+
def get_renewal_lease_term_rent(external_property_id, unit_number, opts={})
|
147
143
|
opts ||= {}
|
148
|
-
call_lease_term_rent_method(
|
149
|
-
|
150
|
-
unit_number,
|
144
|
+
call_lease_term_rent_method(external_property_id,
|
145
|
+
unit_number,
|
151
146
|
opts.merge(:request_element => :renewal_lease_term_rent_unit_request,
|
152
147
|
:soap_action => :get_renewal_lease_term_rent,
|
153
148
|
:response_element => :renewal_lease_term_rent_unit_response,
|
@@ -155,9 +150,9 @@ module YieldStarClient
|
|
155
150
|
end
|
156
151
|
|
157
152
|
private
|
158
|
-
def call_lease_term_rent_method(
|
159
|
-
validate_client_name!(client_name)
|
153
|
+
def call_lease_term_rent_method(external_property_id, unit_number, opts={})
|
160
154
|
validate_external_property_id!(external_property_id)
|
155
|
+
validate_required!(:unit_number=>unit_number)
|
161
156
|
|
162
157
|
request_opts = opts.merge(:unit_number => unit_number)
|
163
158
|
request_opts.delete_if { |k,v| [:request_element, :soap_action, :response_element, :result_class].include?(k) }
|
@@ -63,7 +63,6 @@ module YieldStarClient
|
|
63
63
|
|
64
64
|
# Retrieves all properties for a client.
|
65
65
|
#
|
66
|
-
# @param [String] client_name the YieldStar client name
|
67
66
|
# @return [Array<YieldStarClient::Property>] list of properties
|
68
67
|
#
|
69
68
|
# @raise [ArgumentError] when client_name is missing or invalid
|
@@ -71,10 +70,8 @@ module YieldStarClient
|
|
71
70
|
# @raise [YieldStarClient::OperationError] when the service raises an OperationError fault
|
72
71
|
# @raise [YieldStarClient::InternalError] when the service raises an InternalError fault
|
73
72
|
# @raise [YieldStarClient::ServerError] when any other server-side error occurs
|
74
|
-
def get_properties
|
75
|
-
|
76
|
-
|
77
|
-
response = send_soap_request(:get_properties, :client_name => client_name)
|
73
|
+
def get_properties
|
74
|
+
response = send_soap_request(:get_properties)
|
78
75
|
|
79
76
|
props = response.to_hash[:get_properties_response][:return][:property] || []
|
80
77
|
props = [props].flatten
|
@@ -83,7 +80,6 @@ module YieldStarClient
|
|
83
80
|
|
84
81
|
# Retrieves information for a specific property.
|
85
82
|
#
|
86
|
-
# @param [String] client_name the name of the client to perform the request for
|
87
83
|
# @param [String] external_property_id the ID of the property to obtain information for
|
88
84
|
# @return [YieldStarClient::Property] the property data
|
89
85
|
#
|
@@ -92,11 +88,10 @@ module YieldStarClient
|
|
92
88
|
# @raise [YieldStarClient::OperationError] when the service raises an OperationError fault
|
93
89
|
# @raise [YieldStarClient::InternalError] when the service raises an InternalError fault
|
94
90
|
# @raise [YieldStarClient::ServerError] when any other server-side error occurs
|
95
|
-
def get_property(
|
96
|
-
validate_client_name!(client_name)
|
91
|
+
def get_property(external_property_id)
|
97
92
|
validate_external_property_id!(external_property_id)
|
98
93
|
|
99
|
-
response = send_soap_request(:get_property, :
|
94
|
+
response = send_soap_request(:get_property, :external_property_id => external_property_id)
|
100
95
|
|
101
96
|
property = response.to_hash[:get_property_response][:return][:property]
|
102
97
|
Property.new(property)
|
@@ -105,7 +100,6 @@ module YieldStarClient
|
|
105
100
|
|
106
101
|
# Retrieves pricing parameters for a specific property.
|
107
102
|
#
|
108
|
-
# @param [String] client_name the name of the client to perform the request for
|
109
103
|
# @param [String] external_property_id the ID of the property to obtain information for
|
110
104
|
# @return [YieldStarClient::PropertyParameters] the pricing data
|
111
105
|
#
|
@@ -114,12 +108,10 @@ module YieldStarClient
|
|
114
108
|
# @raise [YieldStarClient::OperationError] when the service raises an OperationError fault
|
115
109
|
# @raise [YieldStarClient::InternalError] when the service raises an InternalError fault
|
116
110
|
# @raise [YieldStarClient::ServerError] when any other server-side error occurs
|
117
|
-
def get_property_parameters(
|
118
|
-
validate_client_name!(client_name)
|
111
|
+
def get_property_parameters(external_property_id)
|
119
112
|
validate_external_property_id!(external_property_id)
|
120
113
|
|
121
|
-
response = send_soap_request(:get_property_parameters, :
|
122
|
-
:external_property_id => external_property_id)
|
114
|
+
response = send_soap_request(:get_property_parameters, :external_property_id => external_property_id)
|
123
115
|
|
124
116
|
response_hash = response.to_hash[:get_property_parameters_response][:return]
|
125
117
|
param_hash = { :external_property_id => response_hash[:external_property_id] }
|
@@ -118,7 +118,6 @@ module YieldStarClient
|
|
118
118
|
# Retrieves high-level rent information for all currently available floor
|
119
119
|
# plans within a specific property.
|
120
120
|
#
|
121
|
-
# @param [String] client_name the YieldStar client name
|
122
121
|
# @param [String] external_property_id the ID of the property associated
|
123
122
|
# with the requested data
|
124
123
|
#
|
@@ -129,12 +128,10 @@ module YieldStarClient
|
|
129
128
|
# @raise [YieldStarClient::OperationError] when the service raises an OperationError fault
|
130
129
|
# @raise [YieldStarClient::InternalError] when the service raises an InternalError fault
|
131
130
|
# @raise [YieldStarClient::ServerError] when any other server-side error occurs
|
132
|
-
def get_rent_summary(
|
133
|
-
validate_client_name!(client_name)
|
131
|
+
def get_rent_summary(external_property_id)
|
134
132
|
validate_external_property_id!(external_property_id)
|
135
133
|
|
136
|
-
response = send_soap_request(:get_rent_summary, :
|
137
|
-
:external_property_id => external_property_id)
|
134
|
+
response = send_soap_request(:get_rent_summary, :external_property_id => external_property_id)
|
138
135
|
|
139
136
|
data = response.to_hash[:get_rent_summary_response][:return]
|
140
137
|
shared_props = {:external_property_id => data[:external_property_id],
|
@@ -148,7 +145,6 @@ module YieldStarClient
|
|
148
145
|
# Retrieves rental information for all currently available units at a specific
|
149
146
|
# property, grouped by floor plan.
|
150
147
|
#
|
151
|
-
# @param [String] client_name the YieldStar client name
|
152
148
|
# @param [String] external_property_id the ID of the property where the available
|
153
149
|
# units are located
|
154
150
|
#
|
@@ -160,12 +156,10 @@ module YieldStarClient
|
|
160
156
|
# @raise [YieldStarClient::OperationError] when the service raises an OperationError fault
|
161
157
|
# @raise [YieldStarClient::InternalError] when the service raises an InternalError fault
|
162
158
|
# @raise [YieldStarClient::ServerError] when any other server-side error occurs
|
163
|
-
def get_available_units(
|
164
|
-
validate_client_name!(client_name)
|
159
|
+
def get_available_units(external_property_id)
|
165
160
|
validate_external_property_id!(external_property_id)
|
166
161
|
|
167
|
-
response = send_soap_request(:get_available_units, :
|
168
|
-
:external_property_id => external_property_id)
|
162
|
+
response = send_soap_request(:get_available_units, :external_property_id => external_property_id)
|
169
163
|
|
170
164
|
data = response.to_hash[:get_available_units_response][:return]
|
171
165
|
base_props = data.reject { |k,v| ![:external_property_id, :effective_date].include?(k) }
|
@@ -39,7 +39,6 @@ module YieldStarClient
|
|
39
39
|
include Validations
|
40
40
|
# Retrieves data about a specific unit.
|
41
41
|
#
|
42
|
-
# @param [String] client_name the YieldStar client name
|
43
42
|
# @param [String] external_property_id the ID of the property where the unit is located
|
44
43
|
# @param [String] unit_name the name of the unit to retrieve
|
45
44
|
# @param [optional,String] building_name the name of the building in which the unit is located
|
@@ -51,12 +50,11 @@ module YieldStarClient
|
|
51
50
|
# @raise [YieldStarClient::OperationError] when the service raises an OperationError fault
|
52
51
|
# @raise [YieldStarClient::InternalError] when the service raises an InternalError fault
|
53
52
|
# @raise [YieldStarClient::ServerError] when any other server-side error occurs
|
54
|
-
def get_unit(
|
55
|
-
validate_client_name!(client_name)
|
53
|
+
def get_unit(external_property_id, unit_name, building_name=nil)
|
56
54
|
validate_external_property_id!(external_property_id)
|
57
55
|
validate_required!(:unit_name => unit_name)
|
58
56
|
|
59
|
-
body = {:
|
57
|
+
body = {:external_property_id => external_property_id, :name => unit_name}
|
60
58
|
body[:building] = building_name if building_name
|
61
59
|
|
62
60
|
response = send_soap_request(:get_unit, body)
|
@@ -67,8 +65,6 @@ module YieldStarClient
|
|
67
65
|
|
68
66
|
# Retrieves all units for a specific property, optionally filtered by floor plan.
|
69
67
|
#
|
70
|
-
# @param [String] client_name the YieldStar client name
|
71
|
-
# @param [String] external_property_id the ID of the property where the units are located
|
72
68
|
# @param [optional,String] floor_plan_name the name of the floor plan associated with the units
|
73
69
|
#
|
74
70
|
# @return [Array<Unit>] a list of unit data
|
@@ -78,11 +74,10 @@ module YieldStarClient
|
|
78
74
|
# @raise [YieldStarClient::OperationError] when the service raises an OperationError fault
|
79
75
|
# @raise [YieldStarClient::InternalError] when the service raises an InternalError fault
|
80
76
|
# @raise [YieldStarClient::ServerError] when any other server-side error occurs
|
81
|
-
def get_units(
|
82
|
-
validate_client_name!(client_name)
|
77
|
+
def get_units(external_property_id, floor_plan_name=nil)
|
83
78
|
validate_external_property_id!(external_property_id)
|
84
79
|
|
85
|
-
body = {:
|
80
|
+
body = {:external_property_id => external_property_id}
|
86
81
|
body[:floor_plan_name] = floor_plan_name if floor_plan_name
|
87
82
|
response = send_soap_request(:get_units, body)
|
88
83
|
|
data/lib/yield_star_client.rb
CHANGED
@@ -1,72 +1,8 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
extend Configlet
|
4
|
-
|
5
|
-
# All valid configuration options.
|
6
|
-
#
|
7
|
-
# @see YieldStarClient.configure
|
8
|
-
VALID_CONFIG_OPTIONS = [:endpoint, :username, :password, :namespace]
|
9
|
-
|
10
|
-
DEFAULT_ENDPOINT = 'https://rmsws.yieldstar.com/rmsws/AppExchange'
|
11
|
-
DEFAULT_NAMESPACE = 'http://yieldstar.com/ws/AppExchange/v1'
|
12
|
-
|
13
|
-
# Default configuration - happens whether or not .configure is called
|
14
|
-
config :yield_star do
|
15
|
-
default :endpoint => DEFAULT_ENDPOINT
|
16
|
-
default :namespace => DEFAULT_NAMESPACE
|
17
|
-
end
|
18
|
-
|
19
|
-
# Mutators and accessors for configuration options
|
20
|
-
class << self
|
21
|
-
VALID_CONFIG_OPTIONS.each do |config_opt|
|
22
|
-
define_method(config_opt) do
|
23
|
-
YieldStarClient[config_opt]
|
24
|
-
end
|
1
|
+
require 'yield_star_client/version'
|
2
|
+
require 'yield_star_client/configuration'
|
25
3
|
|
26
|
-
|
27
|
-
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
# Configures this module through the given +block+.
|
33
|
-
# Default configuration options will be applied unless
|
34
|
-
# they are explicitly overridden in the +block+.
|
35
|
-
#
|
36
|
-
# @yield [_self] configures service connection options
|
37
|
-
# @yieldparam [YieldstarClient] _self the object on which the configure method was called
|
38
|
-
# @example Typical case utilizing defaults
|
39
|
-
# YieldStarClient.configure do |config|
|
40
|
-
# config.username = 'my_user'
|
41
|
-
# config.password = 'my_pass'
|
42
|
-
# end
|
43
|
-
# @example Overriding defaults
|
44
|
-
# YieldStarClient.configure do |config|
|
45
|
-
# config.username = 'my_user'
|
46
|
-
# config.password = 'my_pass'
|
47
|
-
# config.endpoint = 'http://my.endpoint.com'
|
48
|
-
# config.namespace = 'http://my.namespace.com'
|
49
|
-
# end
|
50
|
-
# @return [YieldStarClient] _self
|
51
|
-
# @see VALID_CONFIG_OPTIONS
|
52
|
-
def self.configure
|
53
|
-
config :yield_star do
|
54
|
-
yield self
|
55
|
-
end
|
56
|
-
|
57
|
-
self
|
58
|
-
end
|
59
|
-
|
60
|
-
# Resets this module's configuration.
|
61
|
-
# Configuration options will be set to default values
|
62
|
-
# if they exist; otherwise, they will be set to nil.
|
63
|
-
#
|
64
|
-
# @see VALID_CONFIG_OPTIONS
|
65
|
-
# @see DEFAULT_ENDPOINT
|
66
|
-
# @see DEFAULT_NAMESPACE
|
67
|
-
def self.reset
|
68
|
-
VALID_CONFIG_OPTIONS.each { |opt| self.send("#{opt}=", nil) }
|
69
|
-
end
|
4
|
+
module YieldStarClient
|
5
|
+
extend Configuration
|
70
6
|
|
71
7
|
require 'yield_star_client/client'
|
72
8
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -4,9 +4,6 @@ Bundler.require :default, :development
|
|
4
4
|
Dir[File.join(File.dirname(__FILE__), 'support', '*.rb')].each { |f| require f }
|
5
5
|
|
6
6
|
Savon::Spec::Fixture.path = File.expand_path("../fixtures", __FILE__)
|
7
|
-
Savon.configure do |config|
|
8
|
-
config.log = false
|
9
|
-
end
|
10
7
|
|
11
8
|
RSpec.configure do |config|
|
12
9
|
config.include WebMock::API
|
@@ -2,7 +2,7 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe "amenity methods" do
|
4
4
|
subject { test_object }
|
5
|
-
let(:test_object) { YieldStarClient::Client.new(:endpoint => 'http://bogusendpoint') }
|
5
|
+
let(:test_object) { YieldStarClient::Client.new(:endpoint => 'http://bogusendpoint', :client_name => client_name) }
|
6
6
|
|
7
7
|
let(:client_name) { 'my_client_name' }
|
8
8
|
let(:external_property_id) { 'my_prop_id' }
|
@@ -14,7 +14,7 @@ describe "amenity methods" do
|
|
14
14
|
before { savon.stubs(:get_floor_plan_amenities).returns(nil) }
|
15
15
|
|
16
16
|
subject { amenities }
|
17
|
-
let(:amenities) { test_object.get_floor_plan_amenities(
|
17
|
+
let(:amenities) { test_object.get_floor_plan_amenities(external_property_id, floor_plan_name) }
|
18
18
|
let(:floor_plan_name) { 'my_floor_plan' }
|
19
19
|
|
20
20
|
it "should retrieve the amenity data from the service" do
|
@@ -73,12 +73,12 @@ describe "amenity methods" do
|
|
73
73
|
|
74
74
|
subject { amenities }
|
75
75
|
|
76
|
-
let(:amenities) { test_object.get_unit_amenities(
|
76
|
+
let(:amenities) { test_object.get_unit_amenities(external_property_id, unit_name, building) }
|
77
77
|
let(:unit_name) { 'my_unit_name' }
|
78
78
|
let(:building) { 'my_building' }
|
79
79
|
|
80
80
|
context "without a building" do
|
81
|
-
let(:amenities) { test_object.get_unit_amenities(
|
81
|
+
let(:amenities) { test_object.get_unit_amenities(external_property_id, unit_name) }
|
82
82
|
let(:soap_body) do
|
83
83
|
{:client_name => client_name,
|
84
84
|
:external_property_id => external_property_id,
|
@@ -152,7 +152,7 @@ describe "amenity methods" do
|
|
152
152
|
|
153
153
|
context "when there is no building" do
|
154
154
|
before { savon.stubs(:get_unit_amenities).returns(:no_amenities) }
|
155
|
-
let(:amenities) { test_object.get_unit_amenities(
|
155
|
+
let(:amenities) { test_object.get_unit_amenities(external_property_id, unit_name) }
|
156
156
|
|
157
157
|
it "should not raise an error" do
|
158
158
|
expect { subject }.to_not raise_error
|
@@ -4,12 +4,19 @@ describe YieldStarClient::Client do
|
|
4
4
|
subject { client }
|
5
5
|
|
6
6
|
after { YieldStarClient.reset }
|
7
|
+
after do
|
8
|
+
Savon.log = nil
|
9
|
+
Savon.logger = nil
|
10
|
+
end
|
7
11
|
|
8
12
|
let(:client) do
|
9
|
-
YieldStarClient::Client.new({:endpoint => endpoint,
|
10
|
-
:username => username,
|
13
|
+
YieldStarClient::Client.new({:endpoint => endpoint,
|
14
|
+
:username => username,
|
11
15
|
:password => password,
|
12
|
-
:namespace => namespace
|
16
|
+
:namespace => namespace,
|
17
|
+
:client_name => client_name,
|
18
|
+
:debug => debug,
|
19
|
+
:logger => logger})
|
13
20
|
end
|
14
21
|
|
15
22
|
let(:endpoint) { 'https://foo.com?wsdl' }
|
@@ -17,11 +24,17 @@ describe YieldStarClient::Client do
|
|
17
24
|
let(:username) { 'test_user' }
|
18
25
|
let(:password) { 'secret' }
|
19
26
|
let(:namespace) { 'http://foo.com/namespace' }
|
27
|
+
let(:client_name) { 'test_client' }
|
28
|
+
let(:debug) { true }
|
29
|
+
let(:logger) { mock() }
|
20
30
|
|
21
31
|
its(:endpoint) { should == endpoint }
|
22
32
|
its(:username) { should == username }
|
23
33
|
its(:password) { should == password }
|
24
34
|
its(:namespace) { should == namespace }
|
35
|
+
its(:client_name) { should == client_name }
|
36
|
+
its(:debug) { should == debug }
|
37
|
+
it { should be_debug }
|
25
38
|
|
26
39
|
# Methods from the PropertyMethods mixin
|
27
40
|
# The actual tests for these are in property_methods_spec
|
@@ -59,6 +72,9 @@ describe YieldStarClient::Client do
|
|
59
72
|
its(:username) { should_not be }
|
60
73
|
its(:password) { should_not be }
|
61
74
|
its(:namespace) { should == YieldStarClient::DEFAULT_NAMESPACE }
|
75
|
+
its(:client_name) { should_not be }
|
76
|
+
its(:logger) { should be_a Logger }
|
77
|
+
it { should_not be_debug }
|
62
78
|
end
|
63
79
|
|
64
80
|
describe "#endpoint=" do
|
@@ -147,4 +163,138 @@ describe YieldStarClient::Client do
|
|
147
163
|
end
|
148
164
|
end
|
149
165
|
end
|
166
|
+
|
167
|
+
describe "#debug=" do
|
168
|
+
subject { client.debug = new_debug }
|
169
|
+
|
170
|
+
context 'with a boolean value' do
|
171
|
+
let(:debug) { false }
|
172
|
+
let(:new_debug) { true }
|
173
|
+
|
174
|
+
it 'should change the debug setting' do
|
175
|
+
expect { subject }.to change { client.debug? }.from(debug).to(new_debug)
|
176
|
+
end
|
177
|
+
|
178
|
+
it 'should enable logging in savon' do
|
179
|
+
expect { subject }.to change { Savon.log? }.from(client.debug).to(new_debug)
|
180
|
+
end
|
181
|
+
end
|
182
|
+
|
183
|
+
context 'with nil' do
|
184
|
+
let(:debug) { false }
|
185
|
+
let(:new_debug) { nil }
|
186
|
+
|
187
|
+
context 'when debug logging is enabled globally' do
|
188
|
+
before do
|
189
|
+
YieldStarClient.configure { |config| config.debug = true }
|
190
|
+
end
|
191
|
+
|
192
|
+
it 'should enable debug logging' do
|
193
|
+
expect { subject }.to change { client.debug? }.from(false).to(true)
|
194
|
+
end
|
195
|
+
|
196
|
+
it 'should enable logging in savon' do
|
197
|
+
expect { subject }.to change { Savon.log? }.from(client.debug?).to(true)
|
198
|
+
end
|
199
|
+
end
|
200
|
+
|
201
|
+
context 'when debug logging is disabled globally' do
|
202
|
+
let(:debug) { true }
|
203
|
+
before do
|
204
|
+
YieldStarClient.configure { |config| config.debug = false }
|
205
|
+
end
|
206
|
+
|
207
|
+
it 'should disable debug logging' do
|
208
|
+
expect { subject }.to change { client.debug? }.from(true).to(false)
|
209
|
+
end
|
210
|
+
|
211
|
+
it 'should disable logging in savon' do
|
212
|
+
expect { subject }.to change { Savon.log? }.from(true).to(false)
|
213
|
+
end
|
214
|
+
end
|
215
|
+
end
|
216
|
+
end
|
217
|
+
|
218
|
+
describe "#logger=" do
|
219
|
+
subject { client.logger = new_logger }
|
220
|
+
|
221
|
+
context 'with nil' do
|
222
|
+
let(:new_logger) { nil }
|
223
|
+
context 'when there is a logger configured globally' do
|
224
|
+
let(:global_logger) { mock() }
|
225
|
+
|
226
|
+
before do
|
227
|
+
YieldStarClient.configure { |config| config.logger = global_logger }
|
228
|
+
end
|
229
|
+
|
230
|
+
it 'should set the logger to the global logger' do
|
231
|
+
subject
|
232
|
+
client.logger.should == global_logger
|
233
|
+
end
|
234
|
+
|
235
|
+
it 'should set the savon logger to the global logger' do
|
236
|
+
subject
|
237
|
+
Savon.logger.should == global_logger
|
238
|
+
end
|
239
|
+
end
|
240
|
+
|
241
|
+
context 'when there is no logger configured globally' do
|
242
|
+
it 'should set the logger to the default' do
|
243
|
+
subject
|
244
|
+
client.logger.should be_an_instance_of(Logger)
|
245
|
+
end
|
246
|
+
|
247
|
+
it 'should change the logger setting in savon' do
|
248
|
+
subject
|
249
|
+
Savon.logger.should be_an_instance_of(Logger)
|
250
|
+
end
|
251
|
+
end
|
252
|
+
end
|
253
|
+
|
254
|
+
context 'with custom logger' do
|
255
|
+
let(:new_logger) { mock() }
|
256
|
+
|
257
|
+
it 'should change the logger' do
|
258
|
+
expect { subject }.to change { client.logger }.to(new_logger)
|
259
|
+
end
|
260
|
+
|
261
|
+
it 'should change the logger setting in savon' do
|
262
|
+
expect { subject }.to change { Savon.logger }.to(new_logger)
|
263
|
+
end
|
264
|
+
end
|
265
|
+
end
|
266
|
+
|
267
|
+
describe '#client_name=' do
|
268
|
+
subject { client.client_name = new_client_name }
|
269
|
+
|
270
|
+
context 'with nil' do
|
271
|
+
let(:new_client_name) { nil }
|
272
|
+
|
273
|
+
context 'when there is a client_name configured globally' do
|
274
|
+
let(:global_client_name) { 'global_client' }
|
275
|
+
|
276
|
+
before do
|
277
|
+
YieldStarClient.configure { |config| config.client_name = global_client_name }
|
278
|
+
end
|
279
|
+
|
280
|
+
it 'should change the client name to match the global configuration' do
|
281
|
+
expect { subject }.to change { client.client_name }.from(client_name).to(global_client_name)
|
282
|
+
end
|
283
|
+
end
|
284
|
+
|
285
|
+
context 'when there is no client_name configured globally' do
|
286
|
+
it 'should reset the client name' do
|
287
|
+
expect { subject }.to change { client.client_name }.from(client_name).to(nil)
|
288
|
+
end
|
289
|
+
end
|
290
|
+
end
|
291
|
+
|
292
|
+
context 'with client name' do
|
293
|
+
let(:new_client_name) { 'Some new client name' }
|
294
|
+
|
295
|
+
it 'should change the client_name' do
|
296
|
+
expect { subject }.to change { client.client_name }.from(client_name).to(new_client_name)
|
297
|
+
end
|
298
|
+
end
|
299
|
+
end
|
150
300
|
end
|
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe "floor plan methods" do
|
4
4
|
subject { test_object }
|
5
5
|
|
6
|
-
let(:test_object) { YieldStarClient::Client.new(:endpoint => 'http://bogusendpoint') }
|
6
|
+
let(:test_object) { YieldStarClient::Client.new(:endpoint => 'http://bogusendpoint', :client_name => client_name) }
|
7
7
|
|
8
8
|
let(:client_name) { 'my_client_name' }
|
9
9
|
let(:external_property_id) { 'my_external_property_id' }
|
@@ -14,7 +14,7 @@ describe "floor plan methods" do
|
|
14
14
|
before { savon.stubs(:get_floor_plan).returns(nil) }
|
15
15
|
|
16
16
|
subject { floor_plan }
|
17
|
-
let(:floor_plan) { test_object.get_floor_plan(
|
17
|
+
let(:floor_plan) { test_object.get_floor_plan(external_property_id, floor_plan_name) }
|
18
18
|
let(:floor_plan_name) { 'my_floor_plan_name' }
|
19
19
|
|
20
20
|
it "should retrieve the floor plan data from the service" do
|
@@ -58,7 +58,7 @@ describe "floor plan methods" do
|
|
58
58
|
before { savon.stubs(:get_floor_plans).returns(nil) }
|
59
59
|
|
60
60
|
subject { floor_plans }
|
61
|
-
let(:floor_plans) { test_object.get_floor_plans(
|
61
|
+
let(:floor_plans) { test_object.get_floor_plans(external_property_id) }
|
62
62
|
|
63
63
|
it "should retrieve the floor plan data from the service" do
|
64
64
|
savon.expects(:get_floor_plans).
|
@@ -80,7 +80,7 @@ end
|
|
80
80
|
|
81
81
|
describe "lease term rent methods" do
|
82
82
|
subject { test_object }
|
83
|
-
let(:test_object) { YieldStarClient::Client.new(:endpoint => 'http://bogusendpoint' ) }
|
83
|
+
let(:test_object) { YieldStarClient::Client.new(:endpoint => 'http://bogusendpoint', :client_name => client_name) }
|
84
84
|
|
85
85
|
let(:client_name) { 'my_client' }
|
86
86
|
let(:external_property_id) { '42' }
|
@@ -92,7 +92,7 @@ describe "lease term rent methods" do
|
|
92
92
|
before { savon.stubs(:get_lease_term_rent).returns(nil) }
|
93
93
|
|
94
94
|
subject { unit_rates }
|
95
|
-
let(:unit_rates) { test_object.get_lease_term_rent(
|
95
|
+
let(:unit_rates) { test_object.get_lease_term_rent(external_property_id, unit_number, opts) }
|
96
96
|
let(:opts) { {} }
|
97
97
|
|
98
98
|
it_should_behave_like 'a lease_term_rent service caller', :get_lease_term_rent
|
@@ -181,7 +181,7 @@ describe "lease term rent methods" do
|
|
181
181
|
before { savon.stubs(:get_lease_term_rent_plus).returns(nil) }
|
182
182
|
|
183
183
|
subject { unit_rates }
|
184
|
-
let(:unit_rates) { test_object.get_lease_term_rent_plus(
|
184
|
+
let(:unit_rates) { test_object.get_lease_term_rent_plus(external_property_id, unit_number, opts) }
|
185
185
|
let(:opts) { {} }
|
186
186
|
|
187
187
|
it_should_behave_like 'a lease_term_rent service caller', :get_lease_term_rent_plus
|
@@ -272,7 +272,7 @@ describe "lease term rent methods" do
|
|
272
272
|
before { savon.stubs(:get_renewal_lease_term_rent).returns(nil) }
|
273
273
|
|
274
274
|
subject { unit_rates }
|
275
|
-
let(:unit_rates) { test_object.get_renewal_lease_term_rent(
|
275
|
+
let(:unit_rates) { test_object.get_renewal_lease_term_rent(external_property_id, unit_number, opts) }
|
276
276
|
|
277
277
|
let(:opts) { Hash.new }
|
278
278
|
|
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe "property methods" do
|
4
4
|
subject { test_object }
|
5
5
|
|
6
|
-
let(:test_object) { YieldStarClient::Client.new(:endpoint => 'http://bogusendpoint') }
|
6
|
+
let(:test_object) { YieldStarClient::Client.new(:endpoint => 'http://bogusendpoint', :client_name => client_name) }
|
7
7
|
|
8
8
|
let(:client_name) { 'my client name' }
|
9
9
|
let(:external_property_id) { 'my-external-property-id' }
|
@@ -16,7 +16,7 @@ describe "property methods" do
|
|
16
16
|
before { savon.stubs(:get_properties).returns(nil) }
|
17
17
|
|
18
18
|
subject { properties }
|
19
|
-
let(:properties) { test_object.get_properties
|
19
|
+
let(:properties) { test_object.get_properties }
|
20
20
|
|
21
21
|
it "should retrieve the property data by client_name from the service" do
|
22
22
|
savon.expects(:get_properties).with(:request => {:client_name => client_name}).returns(:single_property)
|
@@ -94,7 +94,7 @@ describe "property methods" do
|
|
94
94
|
before { savon.stubs(:get_property).returns(nil) }
|
95
95
|
|
96
96
|
subject { property }
|
97
|
-
let(:property) { test_object.get_property(
|
97
|
+
let(:property) { test_object.get_property(external_property_id) }
|
98
98
|
|
99
99
|
it "should retrieve the property data from the service" do
|
100
100
|
savon.expects(:get_property).
|
@@ -140,7 +140,7 @@ describe "property methods" do
|
|
140
140
|
before { savon.stubs(:get_property_parameters).returns(nil) }
|
141
141
|
|
142
142
|
subject { parameters }
|
143
|
-
let(:parameters) { test_object.get_property_parameters(
|
143
|
+
let(:parameters) { test_object.get_property_parameters(external_property_id) }
|
144
144
|
|
145
145
|
it "should retrieve the data from the service" do
|
146
146
|
savon.expects(:get_property_parameters).
|
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe "rental/availability methods" do
|
4
4
|
subject { test_object }
|
5
5
|
|
6
|
-
let(:test_object) { YieldStarClient::Client.new(:endpoint => 'http://bogusendpoint') }
|
6
|
+
let(:test_object) { YieldStarClient::Client.new(:endpoint => 'http://bogusendpoint', :client_name => client_name) }
|
7
7
|
|
8
8
|
let(:client_name) { 'my_client_name' }
|
9
9
|
let(:external_property_id) { '42' }
|
@@ -14,7 +14,7 @@ describe "rental/availability methods" do
|
|
14
14
|
before { savon.stubs(:get_rent_summary).returns(nil) }
|
15
15
|
|
16
16
|
subject { rent_summaries }
|
17
|
-
let(:rent_summaries) { test_object.get_rent_summary(
|
17
|
+
let(:rent_summaries) { test_object.get_rent_summary(external_property_id) }
|
18
18
|
|
19
19
|
it "should retrieve the data from the service" do
|
20
20
|
savon.expects(:get_rent_summary).
|
@@ -118,7 +118,7 @@ describe "rental/availability methods" do
|
|
118
118
|
before { savon.stubs(:get_available_units).returns(nil) }
|
119
119
|
|
120
120
|
subject { available_floor_plans }
|
121
|
-
let(:available_floor_plans) { test_object.get_available_units(
|
121
|
+
let(:available_floor_plans) { test_object.get_available_units(external_property_id) }
|
122
122
|
|
123
123
|
it "should retrieve the data from the service" do
|
124
124
|
savon.expects(:get_available_units).
|
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe "unit methods" do
|
4
4
|
subject { test_object }
|
5
5
|
|
6
|
-
let(:test_object) { YieldStarClient::Client.new(:endpoint => 'http://bogusendpoint') }
|
6
|
+
let(:test_object) { YieldStarClient::Client.new(:endpoint => 'http://bogusendpoint', :client_name => client_name) }
|
7
7
|
|
8
8
|
let(:client_name) { 'my_client_name' }
|
9
9
|
let(:external_property_id) { 'my_prop_id' }
|
@@ -15,7 +15,7 @@ describe "unit methods" do
|
|
15
15
|
before { savon.stubs(:get_unit).returns(nil) }
|
16
16
|
|
17
17
|
subject { unit }
|
18
|
-
let(:unit) { test_object.get_unit(
|
18
|
+
let(:unit) { test_object.get_unit(external_property_id, unit_name) }
|
19
19
|
let(:unit_name) { 'my_unit_name' }
|
20
20
|
let(:soap_body) { {:client_name => client_name, :external_property_id => external_property_id, :name => unit_name}}
|
21
21
|
|
@@ -27,7 +27,7 @@ describe "unit methods" do
|
|
27
27
|
end
|
28
28
|
|
29
29
|
context "with a building name" do
|
30
|
-
let(:unit) { test_object.get_unit(
|
30
|
+
let(:unit) { test_object.get_unit(external_property_id, unit_name, building_name) }
|
31
31
|
let(:building_name) { 'my_building' }
|
32
32
|
|
33
33
|
it "should retrieve the data from the service" do
|
@@ -76,7 +76,7 @@ describe "unit methods" do
|
|
76
76
|
before { savon.stubs(:get_units).returns(nil) }
|
77
77
|
|
78
78
|
subject { units }
|
79
|
-
let(:units) { test_object.get_units(
|
79
|
+
let(:units) { test_object.get_units(external_property_id) }
|
80
80
|
let(:soap_body) { {:client_name => client_name, :external_property_id => external_property_id} }
|
81
81
|
|
82
82
|
context "without a floor_plan name" do
|
@@ -87,7 +87,7 @@ describe "unit methods" do
|
|
87
87
|
end
|
88
88
|
|
89
89
|
context "with a floor_plan name" do
|
90
|
-
let(:units) { test_object.get_units(
|
90
|
+
let(:units) { test_object.get_units(external_property_id, floor_plan_name) }
|
91
91
|
let(:floor_plan_name) { 'my_floor_plan' }
|
92
92
|
|
93
93
|
it "should retrieve the data from the service" do
|
@@ -8,6 +8,7 @@ describe YieldStarClient do
|
|
8
8
|
let(:username) { 'configured user' }
|
9
9
|
let(:password) { 'configured password' }
|
10
10
|
let(:namespace) { 'http://configured.namespace.com' }
|
11
|
+
let(:client_name) { 'configured client name' }
|
11
12
|
|
12
13
|
after { YieldStarClient.reset }
|
13
14
|
|
@@ -20,11 +21,16 @@ describe YieldStarClient do
|
|
20
21
|
its(:username) { should_not be }
|
21
22
|
its(:password) { should_not be }
|
22
23
|
its(:namespace) { should == default_namespace }
|
24
|
+
its(:client_name) { should_not be }
|
25
|
+
its(:logger) { should be_an_instance_of Logger }
|
26
|
+
it { should_not be_debug }
|
23
27
|
end
|
24
28
|
|
25
29
|
describe ".configure" do
|
26
30
|
subject { YieldStarClient.configure(&config_block) }
|
27
31
|
|
32
|
+
let(:logger) { mock() }
|
33
|
+
|
28
34
|
context "with full configuration" do
|
29
35
|
let(:config_block) do
|
30
36
|
lambda do |config|
|
@@ -32,6 +38,9 @@ describe YieldStarClient do
|
|
32
38
|
config.username = username
|
33
39
|
config.password = password
|
34
40
|
config.namespace = namespace
|
41
|
+
config.client_name = client_name
|
42
|
+
config.debug = true
|
43
|
+
config.logger = logger
|
35
44
|
end
|
36
45
|
end
|
37
46
|
|
@@ -40,6 +49,9 @@ describe YieldStarClient do
|
|
40
49
|
its(:username) { should == username }
|
41
50
|
its(:password) { should == password }
|
42
51
|
its(:namespace) { should == namespace }
|
52
|
+
its(:client_name) { should == client_name }
|
53
|
+
it { should be_debug }
|
54
|
+
its(:logger) { should == logger }
|
43
55
|
end
|
44
56
|
|
45
57
|
context "with partial configuration" do
|
@@ -47,6 +59,8 @@ describe YieldStarClient do
|
|
47
59
|
lambda do |config|
|
48
60
|
config.username = username
|
49
61
|
config.password = password
|
62
|
+
config.client_name = client_name
|
63
|
+
config.debug = true
|
50
64
|
end
|
51
65
|
end
|
52
66
|
|
@@ -55,6 +69,9 @@ describe YieldStarClient do
|
|
55
69
|
its(:username) { should == username }
|
56
70
|
its(:password) { should == password }
|
57
71
|
its(:namespace) { should == default_namespace }
|
72
|
+
its(:client_name) { should == client_name }
|
73
|
+
its(:logger) { should be_an_instance_of Logger }
|
74
|
+
it { should be_debug }
|
58
75
|
end
|
59
76
|
end
|
60
77
|
|
@@ -65,9 +82,14 @@ describe YieldStarClient do
|
|
65
82
|
config.username = username
|
66
83
|
config.password = password
|
67
84
|
config.namespace = namespace
|
85
|
+
config.client_name = client_name
|
86
|
+
config.debug = true
|
87
|
+
config.logger = logger
|
68
88
|
end
|
69
89
|
end
|
70
90
|
|
91
|
+
let(:logger) { mock() }
|
92
|
+
|
71
93
|
subject { YieldStarClient.reset }
|
72
94
|
|
73
95
|
it "should change the endpoint to the default" do
|
@@ -82,8 +104,21 @@ describe YieldStarClient do
|
|
82
104
|
expect { subject }.to change{YieldStarClient.password}.from(password).to(nil)
|
83
105
|
end
|
84
106
|
|
107
|
+
it "should clear the client_name" do
|
108
|
+
expect { subject }.to change{YieldStarClient.client_name}.from(client_name).to(nil)
|
109
|
+
end
|
110
|
+
|
85
111
|
it "should change the namespace to the default" do
|
86
112
|
expect { subject }.to change{YieldStarClient.namespace}.from(namespace).to(default_namespace)
|
87
113
|
end
|
114
|
+
|
115
|
+
it "should change the logger to the default" do
|
116
|
+
expect { subject }.to change{YieldStarClient.logger}
|
117
|
+
YieldStarClient.logger.should be_an_instance_of Logger
|
118
|
+
end
|
119
|
+
|
120
|
+
it "should change the debug setting to the default" do
|
121
|
+
expect { subject }.to change{YieldStarClient.debug?}.from(true).to(false)
|
122
|
+
end
|
88
123
|
end
|
89
124
|
end
|
data/yield_star_client.gemspec
CHANGED
@@ -20,15 +20,13 @@ Gem::Specification.new do |s|
|
|
20
20
|
s.require_paths = ["lib"]
|
21
21
|
|
22
22
|
s.add_dependency('configlet', '~> 2.1')
|
23
|
-
s.add_dependency('
|
24
|
-
s.add_dependency('savon', '~> 0.8')
|
23
|
+
s.add_dependency('savon', '~> 0.9.7')
|
25
24
|
s.add_dependency('modelish', '>= 0.1.2')
|
26
25
|
|
27
|
-
s.add_development_dependency('rspec',
|
26
|
+
s.add_development_dependency('rspec','~> 2.4')
|
28
27
|
s.add_development_dependency('webmock', '~> 1.6')
|
29
28
|
s.add_development_dependency('yard', '~> 0.6')
|
30
|
-
s.add_development_dependency('
|
29
|
+
s.add_development_dependency('rdiscount', '~>1.6')
|
31
30
|
s.add_development_dependency('savon_spec','~> 0.1')
|
32
|
-
s.add_development_dependency('autotest', '~> 4.4')
|
33
31
|
s.has_rdoc=true
|
34
32
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: yield_star_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 2
|
9
|
+
- 0
|
10
|
+
version: 0.2.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- G5
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date:
|
18
|
+
date: 2012-01-16 00:00:00 -08:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -34,40 +34,25 @@ dependencies:
|
|
34
34
|
type: :runtime
|
35
35
|
version_requirements: *id001
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
|
-
name:
|
37
|
+
name: savon
|
38
38
|
prerelease: false
|
39
39
|
requirement: &id002 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
|
-
- -
|
42
|
+
- - ~>
|
43
43
|
- !ruby/object:Gem::Version
|
44
|
-
hash:
|
44
|
+
hash: 53
|
45
45
|
segments:
|
46
46
|
- 0
|
47
|
-
- 7
|
48
47
|
- 9
|
49
|
-
|
48
|
+
- 7
|
49
|
+
version: 0.9.7
|
50
50
|
type: :runtime
|
51
51
|
version_requirements: *id002
|
52
|
-
- !ruby/object:Gem::Dependency
|
53
|
-
name: savon
|
54
|
-
prerelease: false
|
55
|
-
requirement: &id003 !ruby/object:Gem::Requirement
|
56
|
-
none: false
|
57
|
-
requirements:
|
58
|
-
- - ~>
|
59
|
-
- !ruby/object:Gem::Version
|
60
|
-
hash: 27
|
61
|
-
segments:
|
62
|
-
- 0
|
63
|
-
- 8
|
64
|
-
version: "0.8"
|
65
|
-
type: :runtime
|
66
|
-
version_requirements: *id003
|
67
52
|
- !ruby/object:Gem::Dependency
|
68
53
|
name: modelish
|
69
54
|
prerelease: false
|
70
|
-
requirement: &
|
55
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
71
56
|
none: false
|
72
57
|
requirements:
|
73
58
|
- - ">="
|
@@ -79,11 +64,11 @@ dependencies:
|
|
79
64
|
- 2
|
80
65
|
version: 0.1.2
|
81
66
|
type: :runtime
|
82
|
-
version_requirements: *
|
67
|
+
version_requirements: *id003
|
83
68
|
- !ruby/object:Gem::Dependency
|
84
69
|
name: rspec
|
85
70
|
prerelease: false
|
86
|
-
requirement: &
|
71
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
87
72
|
none: false
|
88
73
|
requirements:
|
89
74
|
- - ~>
|
@@ -94,11 +79,11 @@ dependencies:
|
|
94
79
|
- 4
|
95
80
|
version: "2.4"
|
96
81
|
type: :development
|
97
|
-
version_requirements: *
|
82
|
+
version_requirements: *id004
|
98
83
|
- !ruby/object:Gem::Dependency
|
99
84
|
name: webmock
|
100
85
|
prerelease: false
|
101
|
-
requirement: &
|
86
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
102
87
|
none: false
|
103
88
|
requirements:
|
104
89
|
- - ~>
|
@@ -109,11 +94,11 @@ dependencies:
|
|
109
94
|
- 6
|
110
95
|
version: "1.6"
|
111
96
|
type: :development
|
112
|
-
version_requirements: *
|
97
|
+
version_requirements: *id005
|
113
98
|
- !ruby/object:Gem::Dependency
|
114
99
|
name: yard
|
115
100
|
prerelease: false
|
116
|
-
requirement: &
|
101
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
117
102
|
none: false
|
118
103
|
requirements:
|
119
104
|
- - ~>
|
@@ -124,27 +109,26 @@ dependencies:
|
|
124
109
|
- 6
|
125
110
|
version: "0.6"
|
126
111
|
type: :development
|
127
|
-
version_requirements: *
|
112
|
+
version_requirements: *id006
|
128
113
|
- !ruby/object:Gem::Dependency
|
129
|
-
name:
|
114
|
+
name: rdiscount
|
130
115
|
prerelease: false
|
131
|
-
requirement: &
|
116
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
132
117
|
none: false
|
133
118
|
requirements:
|
134
119
|
- - ~>
|
135
120
|
- !ruby/object:Gem::Version
|
136
|
-
hash:
|
121
|
+
hash: 3
|
137
122
|
segments:
|
138
|
-
-
|
139
|
-
-
|
140
|
-
|
141
|
-
version: 2.0.9
|
123
|
+
- 1
|
124
|
+
- 6
|
125
|
+
version: "1.6"
|
142
126
|
type: :development
|
143
|
-
version_requirements: *
|
127
|
+
version_requirements: *id007
|
144
128
|
- !ruby/object:Gem::Dependency
|
145
129
|
name: savon_spec
|
146
130
|
prerelease: false
|
147
|
-
requirement: &
|
131
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
148
132
|
none: false
|
149
133
|
requirements:
|
150
134
|
- - ~>
|
@@ -155,22 +139,7 @@ dependencies:
|
|
155
139
|
- 1
|
156
140
|
version: "0.1"
|
157
141
|
type: :development
|
158
|
-
version_requirements: *
|
159
|
-
- !ruby/object:Gem::Dependency
|
160
|
-
name: autotest
|
161
|
-
prerelease: false
|
162
|
-
requirement: &id010 !ruby/object:Gem::Requirement
|
163
|
-
none: false
|
164
|
-
requirements:
|
165
|
-
- - ~>
|
166
|
-
- !ruby/object:Gem::Version
|
167
|
-
hash: 19
|
168
|
-
segments:
|
169
|
-
- 4
|
170
|
-
- 4
|
171
|
-
version: "4.4"
|
172
|
-
type: :development
|
173
|
-
version_requirements: *id010
|
142
|
+
version_requirements: *id008
|
174
143
|
description: A simple wrapper around a SOAP client for the YieldStar AppExchange web service.
|
175
144
|
email:
|
176
145
|
- engineering@g5platform.com
|
@@ -186,11 +155,13 @@ files:
|
|
186
155
|
- .rvmrc
|
187
156
|
- CHANGELOG.md
|
188
157
|
- Gemfile
|
158
|
+
- LICENSE
|
189
159
|
- README.md
|
190
160
|
- Rakefile
|
191
161
|
- lib/yield_star_client.rb
|
192
162
|
- lib/yield_star_client/amenity_methods.rb
|
193
163
|
- lib/yield_star_client/client.rb
|
164
|
+
- lib/yield_star_client/configuration.rb
|
194
165
|
- lib/yield_star_client/errors.rb
|
195
166
|
- lib/yield_star_client/floor_plan_methods.rb
|
196
167
|
- lib/yield_star_client/lease_term_rent_methods.rb
|