Active 0.0.22 → 0.0.23
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/.bnsignore +19 -0
- data/bin/Active +0 -0
- data/lib/services/_ats.rb +215 -0
- data/lib/services/active_works.rb +14 -2
- data/lib/services/activity.rb +66 -40
- data/lib/services/ats.rb +52 -40
- data/lib/services/dto/user.rb +1 -6
- data/lib/services/gsa.rb +20 -21
- data/lib/services/reg_center.rb +24 -19
- data/lib/services/validators.rb +3 -1
- data/spec/activeworks_spec.rb +4 -0
- data/spec/ats_spec.rb +51 -8
- data/spec/benchmark/search_bench.rb +21 -5
- data/spec/gsa_spec.rb +7 -2
- data/spec/reg_spec.rb +61 -4
- data/spec/validators_spec.rb +1 -0
- data/version.txt +1 -1
- metadata +17 -8
- data/lib/.DS_Store +0 -0
- data/lib/services/.DS_Store +0 -0
data/.bnsignore
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
# The list of files that should be ignored by Mr Bones.
|
2
|
+
# Lines that start with '#' are comments.
|
3
|
+
#
|
4
|
+
# A .gitignore file can be used instead by setting it as the ignore
|
5
|
+
# file in your Rakefile:
|
6
|
+
#
|
7
|
+
# Bones {
|
8
|
+
# ignore_file '.gitignore'
|
9
|
+
# }
|
10
|
+
#
|
11
|
+
# For a project with a C extension, the following would be a good set of
|
12
|
+
# exclude patterns (uncomment them if you want to use them):
|
13
|
+
# *.[oa]
|
14
|
+
# *~
|
15
|
+
announcement.txt
|
16
|
+
coverage
|
17
|
+
doc
|
18
|
+
pkg
|
19
|
+
.DS_Store
|
data/bin/Active
CHANGED
File without changes
|
@@ -0,0 +1,215 @@
|
|
1
|
+
require 'digest/sha1'
|
2
|
+
module Active
|
3
|
+
module Services
|
4
|
+
|
5
|
+
class ATSError < StandardError; end
|
6
|
+
|
7
|
+
class ATS < IActivity
|
8
|
+
|
9
|
+
attr_reader :metadata_loaded
|
10
|
+
# EXAMPLE Data hash
|
11
|
+
# {"destinationID"=>"", "assetId"=>"A9EF9D79-F859-4443-A9BB-91E1833DF2D5", "substitutionUrl"=>"1878023", "city"=>"Antioch", "contactName"=>"City of Antioch", "trackbackurl"=>"http://www.active.com/page/Event_Details.htm?event_id=1878023&assetId=A9EF9D79-F859-4443-A9BB-91E1833DF2D5", "category"=>"Activities", "zip"=>"94531", "userCommentText"=>nil, "location"=>"Multi-use Room (prewett) - Prewett Family Park & Center", "latitude"=>"37.95761", :asset_id=>"A9EF9D79-F859-4443-A9BB-91E1833DF2D5", "searchWeight"=>"1", "country"=>"United States", "participationCriteria"=>"All", "dma"=>"San Francisco - Oakland - San Jose", "isSearchable"=>"true", :asset_name=>"Fitness, Pilates Mat Class (16 Yrs. & Up)", :substitution_url=>"1878023", :asset_type_id=>"EA4E860A-9DCD-4DAA-A7CA-4A77AD194F65", "row"=>"1", "image1"=>"http://www.active.com/images/events/hotrace.gif", "startDate"=>"2010-09-13", "contactPhone"=>"925-779-7070", :asset_type_name=>"Active.com Event Registration", "onlineDonationAvailable"=>"0", "avgUserRating"=>nil, "market"=>"San Francisco - Oakland - San Jose", "assetTypeId"=>"EA4E860A-9DCD-4DAA-A7CA-4A77AD194F65", "assetName"=>"Fitness, Pilates Mat Class (16 Yrs. & Up)", "channel"=>"Not Specified", "seourl"=>"http://www.active.com/not-specified-recware-activities/antioch-ca/fitness-pilates-mat-class-16-yrs-and-up-2010", :xmlns=>"http://api.asset.services.active.com", :url=>"http://www.active.com/page/Event_Details.htm?event_id=1878023", "mediaType"=>"Recware Activities", "startTime"=>"18:15:00", "endTime"=>"18:15:00", "contactEmail"=>"dadams@ci.antioch.ca.us", "eventResults"=>nil, "longitude"=>"-121.7936", "endDate"=>"2010-09-13", "onlineRegistrationAvailable"=>"true", "onlineMembershipAvailable"=>"0", "state"=>"California"}
|
12
|
+
# {"destinationID"=>"", "assetId"=>"D9A22F33-8A14-4175-8D5B-D11578212A98", "substitutionUrl"=>"1847738", "city"=>"Encino", "contactName"=>"Lilliane Ballesteros", "trackbackurl"=>"http://www.active.com/page/Event_Details.htm?event_id=1847738&assetId=D9A22F33-8A14-4175-8D5B-D11578212A98", "category"=>"Activities", "zip"=>"91406", "userCommentText"=>nil, "location"=>"Balboa Park/Lake Balboa", "latitude"=>"34.19933", :asset_id=>"D9A22F33-8A14-4175-8D5B-D11578212A98", "searchWeight"=>"1", "country"=>"United States", "participationCriteria"=>"All", "dma"=>"Los Angeles", "isSearchable"=>"1", :asset_name=>"2nd Annual weSPARK 10K Run & 5K Run Walk", :substitution_url=>"1847738", :asset_type_id=>"EA4E860A-9DCD-4DAA-A7CA-4A77AD194F65", "row"=>"1", "image1"=>"http://www.active.com/images/events/hotrace.gif", "startDate"=>"2010-11-14", "contactPhone"=>"818-906-3022", :asset_type_name=>"Active.com Event Registration", "onlineDonationAvailable"=>"0", "avgUserRating"=>nil, "market"=>"Los Angeles", "assetTypeId"=>"EA4E860A-9DCD-4DAA-A7CA-4A77AD194F65", "assetName"=>"2nd Annual weSPARK 10K Run & 5K Run Walk", "channel"=>["Running", "Walking"], "seourl"=>"http://www.active.com/running/encino-ca/2nd-annual-wespark-10k-run-and-5k-run-walk-2010", :xmlns=>"http://api.asset.services.active.com", :url=>"http://www.active.com/page/Event_Details.htm?event_id=1847738", "mediaType"=>["Event", "Event\\10K", "Event\\5K"], "startTime"=>"8:00:00", "endTime"=>"8:00:00", "contactEmail"=>"lilliane@wespark.org", "eventResults"=>nil, "longitude"=>"-118.4924", "endDate"=>"2010-11-14", "onlineRegistrationAvailable"=>"1", "onlineMembershipAvailable"=>"0", "state"=>"California", "estParticipants"=>"1400", "eventURL"=>"http://www.wespark.org"}
|
13
|
+
|
14
|
+
def initialize(data={},preload_metadata=false)
|
15
|
+
# need to hold on to original data
|
16
|
+
@data = data
|
17
|
+
@asset_id = data[:asset_id]
|
18
|
+
@url = data[:url]
|
19
|
+
@asset_type_id = data[:asset_type_id]
|
20
|
+
@title = data[:asset_name] if data[:asset_name]
|
21
|
+
@substitution_url = data[:substitution_url]
|
22
|
+
# @metadata_loaded = false
|
23
|
+
# load_metadata if preload_metadata
|
24
|
+
end
|
25
|
+
|
26
|
+
def source
|
27
|
+
:ats
|
28
|
+
end
|
29
|
+
|
30
|
+
|
31
|
+
def title
|
32
|
+
# load_metadata unless @metadata_loaded
|
33
|
+
# if @data.has_key?("assetName")
|
34
|
+
@data["assetName"]
|
35
|
+
# else
|
36
|
+
# @title
|
37
|
+
# end
|
38
|
+
end
|
39
|
+
|
40
|
+
def url
|
41
|
+
# load_metadata unless @metadata_loaded
|
42
|
+
if @data.has_key?("seourl")
|
43
|
+
@data["seourl"]
|
44
|
+
elsif @data.has_key?("trackbackurl")
|
45
|
+
@data["trackbackurl"]
|
46
|
+
else
|
47
|
+
@url
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def categories
|
52
|
+
# load_metadata unless @metadata_loaded
|
53
|
+
categories = @data["channel"]
|
54
|
+
if categories.class==String
|
55
|
+
[@data["channel"]]
|
56
|
+
else
|
57
|
+
@data["channel"]
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
def address
|
62
|
+
# load_metadata unless @metadata_loaded
|
63
|
+
@address = validated_address({
|
64
|
+
:name => @data["location"],
|
65
|
+
:address => @data["address"],
|
66
|
+
:city => @data["city"],
|
67
|
+
:state => @data["state"],
|
68
|
+
:zip => @data["zip"],
|
69
|
+
:lat => @data["latitude"],
|
70
|
+
:lng => @data["longitude"],
|
71
|
+
:country => @data["country"]
|
72
|
+
})
|
73
|
+
end
|
74
|
+
|
75
|
+
def start_date
|
76
|
+
# load_metadata unless @metadata_loaded
|
77
|
+
if @data.has_key?("startDate")
|
78
|
+
if @data.has_key?("startTime")
|
79
|
+
(DateTime.parse "#{@data["startDate"]} #{@data["startTime"]}")
|
80
|
+
else
|
81
|
+
(DateTime.parse @data["startDate"])
|
82
|
+
end
|
83
|
+
else
|
84
|
+
nil
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
def start_time
|
89
|
+
start_date
|
90
|
+
end
|
91
|
+
|
92
|
+
def end_date
|
93
|
+
# load_metadata unless @metadata_loaded
|
94
|
+
if @data.has_key?("endDate")
|
95
|
+
if @data.has_key?("endTime")
|
96
|
+
(DateTime.parse "#{@data["endDate"]} #{@data["endTime"]}")
|
97
|
+
else
|
98
|
+
(DateTime.parse @data["endDate"])
|
99
|
+
end
|
100
|
+
else
|
101
|
+
nil
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
def end_time
|
106
|
+
end_date
|
107
|
+
end
|
108
|
+
|
109
|
+
|
110
|
+
def category
|
111
|
+
categories.first
|
112
|
+
end
|
113
|
+
|
114
|
+
def desc
|
115
|
+
# load_metadata unless @metadata_loaded
|
116
|
+
if @data.has_key?("allText")
|
117
|
+
@data["allText"]
|
118
|
+
elsif @data.has_key?("summary")
|
119
|
+
@data["summary"]
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
def contact_name
|
124
|
+
# load_metadata unless @metadata_loaded
|
125
|
+
@data["contactName"] if @data.has_key?("contactName")
|
126
|
+
end
|
127
|
+
|
128
|
+
def contact_email
|
129
|
+
# load_metadata unless @metadata_loaded
|
130
|
+
@data["contactEmail"] if @data.has_key?("contactEmail")
|
131
|
+
end
|
132
|
+
|
133
|
+
def substitutionUrl
|
134
|
+
@data[:substitution_url]
|
135
|
+
end
|
136
|
+
|
137
|
+
|
138
|
+
# EXAMPLE
|
139
|
+
# lazy load the data for some_crazy_method
|
140
|
+
# def some_crazy
|
141
|
+
# return @some_crazy unless @some_crazy.nil?
|
142
|
+
# @some_crazy = @data[:some_crazy_method_from_ats].split replace twist bla bla bla
|
143
|
+
# end
|
144
|
+
|
145
|
+
def self.find_by_id(id)
|
146
|
+
begin
|
147
|
+
c = Savon::Client.new("http://api.amp.active.com/asset-service/services/AssetService")
|
148
|
+
c.request.headers["Api-Key"] = "6npky9t57235vps5cetm3s7k"
|
149
|
+
r = c.get_asset_by_id! do |soap|
|
150
|
+
soap.namespace = "http://api.asset.services.active.com"
|
151
|
+
soap.body = "<context><userId></userId><applicationId></applicationId></context><assetId>#{id}</assetId>"
|
152
|
+
end
|
153
|
+
ats = ATS.new(r.to_hash[:get_asset_by_id_response][:out])
|
154
|
+
ats.load_metadata
|
155
|
+
|
156
|
+
return ats
|
157
|
+
|
158
|
+
rescue Savon::SOAPFault => e
|
159
|
+
raise ATSError, "Couldn't find activity with the id of #{id} error #{e.inspect}"
|
160
|
+
return
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
164
|
+
def load_metadata
|
165
|
+
metadata = ATS.get_asset_metadata(@asset_id)
|
166
|
+
@data.merge! Hash.from_xml(metadata.to_hash[:get_asset_metadata_response][:out])["importSource"]["asset"]
|
167
|
+
@metadata_loaded=true
|
168
|
+
end
|
169
|
+
|
170
|
+
private
|
171
|
+
|
172
|
+
def self.get_asset_metadata(id)
|
173
|
+
c = Savon::Client.new("http://api.amp.active.com/asset-service/services/AssetService")
|
174
|
+
c.request.headers["Api-Key"] = "6npky9t57235vps5cetm3s7k"
|
175
|
+
r = c.get_asset_metadata! do |soap|
|
176
|
+
soap.namespace = "http://api.asset.services.active.com"
|
177
|
+
soap.body = "<context><userId></userId><applicationId></applicationId></context><assetId>#{id}</assetId>"
|
178
|
+
end
|
179
|
+
return r
|
180
|
+
end
|
181
|
+
|
182
|
+
#
|
183
|
+
# def self.get_asset_metadata(id)
|
184
|
+
# search_hash = Digest::SHA1.hexdigest("ats_m_#{id}")
|
185
|
+
# if Active.CACHE
|
186
|
+
# cached_version = Active.CACHE.get(search_hash)
|
187
|
+
# return cached_version if cached_version
|
188
|
+
# end
|
189
|
+
#
|
190
|
+
# c = Savon::Client.new("http://api.amp.active.com/asset-service/services/AssetService")
|
191
|
+
# c.request.headers["Api-Key"] = "6npky9t57235vps5cetm3s7k"
|
192
|
+
# r = c.get_asset_metadata! do |soap|
|
193
|
+
# soap.namespace = "http://api.asset.services.active.com"
|
194
|
+
# soap.body = "<context><userId></userId><applicationId></applicationId></context><assetId>#{id}</assetId>"
|
195
|
+
# end
|
196
|
+
# ats = ATS.new(r.to_hash[:get_asset_metadata_response][:out])
|
197
|
+
# Active.CACHE.set(search_hash, ats) if Active.CACHE
|
198
|
+
# return ats
|
199
|
+
# end
|
200
|
+
|
201
|
+
def self.get_asset_by_id(id)
|
202
|
+
c = Savon::Client.new("http://api.amp.active.com/asset-service/services/AssetService")
|
203
|
+
c.request.headers["Api-Key"] = "6npky9t57235vps5cetm3s7k"
|
204
|
+
r = c.get_asset_by_id! do |soap|
|
205
|
+
soap.namespace = "http://api.asset.services.active.com"
|
206
|
+
soap.body = "<context><userId></userId><applicationId></applicationId></context><assetId>#{id}</assetId>"
|
207
|
+
end
|
208
|
+
ats = ATS.new(r.to_hash[:get_asset_by_id_response][:out])
|
209
|
+
return ats
|
210
|
+
end
|
211
|
+
|
212
|
+
|
213
|
+
end # end ats
|
214
|
+
end
|
215
|
+
end
|
@@ -20,7 +20,7 @@ module Active
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def source
|
23
|
-
:
|
23
|
+
:active_works
|
24
24
|
end
|
25
25
|
|
26
26
|
def asset_id
|
@@ -81,6 +81,18 @@ module Active
|
|
81
81
|
def end_time
|
82
82
|
end_date
|
83
83
|
end
|
84
|
+
|
85
|
+
def contact_name
|
86
|
+
nil
|
87
|
+
end
|
88
|
+
|
89
|
+
def contact_email
|
90
|
+
nil
|
91
|
+
end
|
92
|
+
|
93
|
+
def user
|
94
|
+
User.new
|
95
|
+
end
|
84
96
|
|
85
97
|
|
86
98
|
def category
|
@@ -138,7 +150,7 @@ module Active
|
|
138
150
|
# end
|
139
151
|
|
140
152
|
def get_app_api
|
141
|
-
puts "loading active works api"
|
153
|
+
# puts "loading active works api"
|
142
154
|
begin
|
143
155
|
doc = Nokogiri::XML(open("http://apij.active.com/activeworks/event/#{@data[:id]}"))
|
144
156
|
@data.merge! Hash.from_xml doc.to_s
|
data/lib/services/activity.rb
CHANGED
@@ -44,22 +44,36 @@ module Active
|
|
44
44
|
end
|
45
45
|
end
|
46
46
|
|
47
|
-
def
|
48
|
-
return if @
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
if @
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
@primary= ActiveWorks.find_by_id(@ats.substitutionUrl)
|
59
|
-
end
|
47
|
+
def ats
|
48
|
+
return @ats if @ats
|
49
|
+
return @ats = ATS.find_by_id(@gsa.asset_id)
|
50
|
+
end
|
51
|
+
|
52
|
+
def primary_source
|
53
|
+
return @primary_source if @primary_source
|
54
|
+
if @gsa.asset_type_id == REG_CENTER_ASSET_TYPE_ID || @gsa.asset_type_id == REG_CENTER_ASSET_TYPE_ID2
|
55
|
+
return @primary_source = RegCenter.find_by_id(@gsa.substitutionUrl)
|
56
|
+
elsif @gsa.asset_type_id == ACTIVE_WORKS_ASSET_TYPE_ID
|
57
|
+
return @primary_source = ActiveWorks.find_by_id(@gsa.substitutionUrl)
|
60
58
|
end
|
61
|
-
@datasources_loaded=true
|
62
59
|
end
|
60
|
+
|
61
|
+
# def load_datasources
|
62
|
+
# return if @datasources_loaded==true
|
63
|
+
#
|
64
|
+
# @ats = ATS.find_by_id(@asset_id,true) if @ats==nil
|
65
|
+
# @ats.load_metadata
|
66
|
+
# @gsa = Search.search({:asset_id=>@asset_id, :start_date=>"01/01/2000"}).results.first if @gsa==nil
|
67
|
+
#
|
68
|
+
# if @primary==nil
|
69
|
+
# if @ats.asset_type_id==REG_CENTER_ASSET_TYPE_ID || @ats.asset_type_id==REG_CENTER_ASSET_TYPE_ID2
|
70
|
+
# @primary= RegCenter.find_by_id(@ats.substitutionUrl)
|
71
|
+
# elsif @ats.asset_type_id==ACTIVE_WORKS_ASSET_TYPE_ID
|
72
|
+
# @primary= ActiveWorks.find_by_id(@ats.substitutionUrl)
|
73
|
+
# end
|
74
|
+
# end
|
75
|
+
# @datasources_loaded=true
|
76
|
+
# end
|
63
77
|
|
64
78
|
def title
|
65
79
|
return @gsa.title unless @gsa.nil?
|
@@ -118,37 +132,38 @@ module Active
|
|
118
132
|
return categories.first
|
119
133
|
end
|
120
134
|
|
121
|
-
def load_master
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
end
|
135
|
+
# def load_master
|
136
|
+
# # @ats = ATS.find_by_id(@gsa.asset_id)
|
137
|
+
# # throw StandardError.new "ATS type=#{@gsa.asset_type_id} id=#{@gsa.substitutionUrl}"
|
138
|
+
# # if @gsa.asset_type_id == REG_CENTER_ASSET_TYPE_ID || @gsa.asset_type_id == REG_CENTER_ASSET_TYPE_ID2
|
139
|
+
# # throw StandardError.new "REG"
|
140
|
+
# # elsif @gsa.asset_type_id == ACTIVE_WORKS_ASSET_TYPE_ID
|
141
|
+
# # throw StandardError.new "WORKS"
|
142
|
+
# # else
|
143
|
+
# # throw StandardError.new @gsa.asset_type_id
|
144
|
+
# # return false
|
145
|
+
# # end
|
146
|
+
# # if @ats.asset_type_id==REG_CENTER_ASSET_TYPE_ID || @ats.asset_type_id==REG_CENTER_ASSET_TYPE_ID2
|
147
|
+
# # @primary= RegCenter.find_by_id(@ats.substitutionUrl)
|
148
|
+
# # elsif @ats.asset_type_id==ACTIVE_WORKS_ASSET_TYPE_ID
|
149
|
+
# # @primary= ActiveWorks.find_by_id(@ats.substitutionUrl)
|
150
|
+
# # end
|
151
|
+
#
|
152
|
+
# end
|
139
153
|
|
140
154
|
# returns the best address possible from the data returned by the GSA
|
141
155
|
def address
|
156
|
+
@gsa.address
|
142
157
|
# returned_address = validated_address({})
|
143
158
|
# returned_address = @primary.address unless (@primary.nil? || @primary.address.nil?)
|
144
159
|
# load_datasources
|
145
160
|
# returned_address = @ats.address unless @ats.nil?
|
146
|
-
returned_address = @gsa.address
|
147
|
-
if @gsa.address[:address] != nil #and returned_address.city and returned_address.state and returned_address.country
|
148
|
-
|
149
|
-
else
|
150
|
-
|
151
|
-
end
|
161
|
+
# returned_address = @gsa.address
|
162
|
+
# if @gsa.address[:address] != nil #and returned_address.city and returned_address.state and returned_address.country
|
163
|
+
# return returned_address
|
164
|
+
# else
|
165
|
+
# return nil
|
166
|
+
# end
|
152
167
|
# returned_address = @address if @address
|
153
168
|
#
|
154
169
|
# #ensure lat/lng
|
@@ -166,7 +181,7 @@ module Active
|
|
166
181
|
# end
|
167
182
|
# end
|
168
183
|
#
|
169
|
-
return returned_address
|
184
|
+
# return returned_address
|
170
185
|
end
|
171
186
|
# returns the best address possible by loading other data sources
|
172
187
|
# 2. if the primary data source is unknow (ex asset_type_id is unknow ) we will return the GSA address.
|
@@ -202,9 +217,20 @@ module Active
|
|
202
217
|
end
|
203
218
|
|
204
219
|
def user
|
205
|
-
@gsa.user
|
220
|
+
return @gsa.user
|
206
221
|
end
|
207
222
|
|
223
|
+
def _user
|
224
|
+
u = User.new
|
225
|
+
# If GSA doesn't have the email ATS should
|
226
|
+
u.email = @gsa.user.email || ats.user.email || primary_source.user.email || nil
|
227
|
+
# First name is only in ATS but GSA has a username that is kept in first_name
|
228
|
+
u.first_name = ats.user.first_name || @gsa.user.first_name || nil
|
229
|
+
# Last name is only found in ATS
|
230
|
+
u.last_name = ats.user.last_name || nil
|
231
|
+
u
|
232
|
+
end
|
233
|
+
|
208
234
|
def start_date
|
209
235
|
return @gsa.start_date unless @gsa.nil?
|
210
236
|
return nil
|
data/lib/services/ats.rb
CHANGED
@@ -31,7 +31,7 @@ module Active
|
|
31
31
|
def title
|
32
32
|
# load_metadata unless @metadata_loaded
|
33
33
|
# if @data.has_key?("assetName")
|
34
|
-
|
34
|
+
@data["assetName"]
|
35
35
|
# else
|
36
36
|
# @title
|
37
37
|
# end
|
@@ -60,7 +60,7 @@ module Active
|
|
60
60
|
|
61
61
|
def address
|
62
62
|
# load_metadata unless @metadata_loaded
|
63
|
-
@address =
|
63
|
+
@address = validated_address({
|
64
64
|
:name => @data["location"],
|
65
65
|
:address => @data["address"],
|
66
66
|
:city => @data["city"],
|
@@ -119,7 +119,7 @@ module Active
|
|
119
119
|
@data["summary"]
|
120
120
|
end
|
121
121
|
end
|
122
|
-
|
122
|
+
|
123
123
|
def contact_name
|
124
124
|
# load_metadata unless @metadata_loaded
|
125
125
|
@data["contactName"] if @data.has_key?("contactName")
|
@@ -129,11 +129,23 @@ module Active
|
|
129
129
|
# load_metadata unless @metadata_loaded
|
130
130
|
@data["contactEmail"] if @data.has_key?("contactEmail")
|
131
131
|
end
|
132
|
-
|
132
|
+
def contact_phone
|
133
|
+
@data["contactPhone"] if @data.has_key?("contactPhone")
|
134
|
+
end
|
135
|
+
|
133
136
|
def substitutionUrl
|
134
137
|
@data[:substitution_url]
|
135
138
|
end
|
136
139
|
|
140
|
+
def user
|
141
|
+
email = contact_email
|
142
|
+
u = User.new
|
143
|
+
u.email = email if Validators.email(email)
|
144
|
+
u.first_name = contact_name
|
145
|
+
u.phone = contact_phone
|
146
|
+
u
|
147
|
+
end
|
148
|
+
|
137
149
|
|
138
150
|
# EXAMPLE
|
139
151
|
# lazy load the data for some_crazy_method
|
@@ -144,62 +156,63 @@ module Active
|
|
144
156
|
|
145
157
|
def self.find_by_id(id)
|
146
158
|
begin
|
147
|
-
|
148
|
-
# return self.get_asset_by_id(id)
|
149
|
-
search_hash = Digest::SHA1.hexdigest("ats_m_#{id}")
|
150
|
-
if Active.CACHE
|
151
|
-
cached_version = Active.CACHE.get(search_hash)
|
152
|
-
return cached_version if cached_version
|
153
|
-
end
|
154
|
-
|
155
159
|
c = Savon::Client.new("http://api.amp.active.com/asset-service/services/AssetService")
|
156
160
|
c.request.headers["Api-Key"] = "6npky9t57235vps5cetm3s7k"
|
157
|
-
r = c.
|
161
|
+
r = c.get_asset_by_id! do |soap|
|
158
162
|
soap.namespace = "http://api.asset.services.active.com"
|
159
163
|
soap.body = "<context><userId></userId><applicationId></applicationId></context><assetId>#{id}</assetId>"
|
160
164
|
end
|
161
|
-
ats = ATS.new(r.to_hash[:
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
+
ats = ATS.new(r.to_hash[:get_asset_by_id_response][:out])
|
166
|
+
ats.load_metadata
|
167
|
+
|
168
|
+
return ats
|
169
|
+
|
165
170
|
rescue Savon::SOAPFault => e
|
166
171
|
raise ATSError, "Couldn't find activity with the id of #{id} error #{e.inspect}"
|
167
172
|
return
|
168
173
|
end
|
169
174
|
end
|
170
175
|
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
+
def load_metadata
|
177
|
+
metadata = ATS.get_asset_metadata(@asset_id)
|
178
|
+
@data.merge! Hash.from_xml(metadata.to_hash[:get_asset_metadata_response][:out])["importSource"]["asset"]
|
179
|
+
@metadata_loaded=true
|
180
|
+
end
|
176
181
|
|
177
182
|
private
|
183
|
+
|
178
184
|
def self.get_asset_metadata(id)
|
179
|
-
search_hash = Digest::SHA1.hexdigest("ats_m_#{id}")
|
180
|
-
if Active.CACHE
|
181
|
-
cached_version = Active.CACHE.get(search_hash)
|
182
|
-
return cached_version if cached_version
|
183
|
-
end
|
184
|
-
|
185
185
|
c = Savon::Client.new("http://api.amp.active.com/asset-service/services/AssetService")
|
186
186
|
c.request.headers["Api-Key"] = "6npky9t57235vps5cetm3s7k"
|
187
187
|
r = c.get_asset_metadata! do |soap|
|
188
188
|
soap.namespace = "http://api.asset.services.active.com"
|
189
189
|
soap.body = "<context><userId></userId><applicationId></applicationId></context><assetId>#{id}</assetId>"
|
190
190
|
end
|
191
|
-
|
192
|
-
|
193
|
-
return
|
194
|
-
end
|
191
|
+
# puts "==========="
|
192
|
+
# puts r.to_hash[:get_asset_metadata_response][:out].inspect
|
193
|
+
return r
|
194
|
+
end
|
195
|
+
|
196
|
+
#
|
197
|
+
# def self.get_asset_metadata(id)
|
198
|
+
# search_hash = Digest::SHA1.hexdigest("ats_m_#{id}")
|
199
|
+
# if Active.CACHE
|
200
|
+
# cached_version = Active.CACHE.get(search_hash)
|
201
|
+
# return cached_version if cached_version
|
202
|
+
# end
|
203
|
+
#
|
204
|
+
# c = Savon::Client.new("http://api.amp.active.com/asset-service/services/AssetService")
|
205
|
+
# c.request.headers["Api-Key"] = "6npky9t57235vps5cetm3s7k"
|
206
|
+
# r = c.get_asset_metadata! do |soap|
|
207
|
+
# soap.namespace = "http://api.asset.services.active.com"
|
208
|
+
# soap.body = "<context><userId></userId><applicationId></applicationId></context><assetId>#{id}</assetId>"
|
209
|
+
# end
|
210
|
+
# ats = ATS.new(r.to_hash[:get_asset_metadata_response][:out])
|
211
|
+
# Active.CACHE.set(search_hash, ats) if Active.CACHE
|
212
|
+
# return ats
|
213
|
+
# end
|
195
214
|
|
196
215
|
def self.get_asset_by_id(id)
|
197
|
-
search_hash = Digest::SHA1.hexdigest("ats_#{id}")
|
198
|
-
if Active.CACHE
|
199
|
-
cached_version = Active.CACHE.get(search_hash)
|
200
|
-
return cached_version if cached_version
|
201
|
-
end
|
202
|
-
|
203
216
|
c = Savon::Client.new("http://api.amp.active.com/asset-service/services/AssetService")
|
204
217
|
c.request.headers["Api-Key"] = "6npky9t57235vps5cetm3s7k"
|
205
218
|
r = c.get_asset_by_id! do |soap|
|
@@ -207,10 +220,9 @@ module Active
|
|
207
220
|
soap.body = "<context><userId></userId><applicationId></applicationId></context><assetId>#{id}</assetId>"
|
208
221
|
end
|
209
222
|
ats = ATS.new(r.to_hash[:get_asset_by_id_response][:out])
|
210
|
-
Active.CACHE.set(search_hash, ats) if Active.CACHE
|
211
223
|
return ats
|
212
224
|
end
|
213
|
-
|
225
|
+
|
214
226
|
|
215
227
|
end # end ats
|
216
228
|
end
|
data/lib/services/dto/user.rb
CHANGED
data/lib/services/gsa.rb
CHANGED
@@ -101,22 +101,16 @@ module Active
|
|
101
101
|
def category
|
102
102
|
primary_category
|
103
103
|
end
|
104
|
-
|
105
|
-
def contact_name
|
106
|
-
if @data["meta"].has_key?("contactName") && !@data["meta"]["contactName"].blank?
|
107
|
-
@data["meta"]["contactName"]
|
108
|
-
end
|
109
|
-
end
|
110
104
|
|
111
105
|
def last_modified
|
112
106
|
@data["meta"]["lastModifiedDateTime"] if @data["meta"].has_key?("lastModifiedDateTime")
|
113
107
|
end
|
114
108
|
|
115
|
-
def contact_email
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
end
|
109
|
+
# def contact_email
|
110
|
+
# if @data["meta"].has_key?("contactEmail") && !@data["meta"]["contactEmail"].blank?
|
111
|
+
# @data["meta"]["contactEmail"]
|
112
|
+
# end
|
113
|
+
# end
|
120
114
|
|
121
115
|
def desc
|
122
116
|
if @data["meta"].has_key?("allText") && !@data["meta"]["allText"].blank?
|
@@ -131,9 +125,11 @@ module Active
|
|
131
125
|
end
|
132
126
|
|
133
127
|
def user
|
134
|
-
email
|
135
|
-
u
|
136
|
-
u.email
|
128
|
+
email = @data["meta"]["contactEmail"] || nil
|
129
|
+
u = User.new
|
130
|
+
u.email = email if Validators.email(email)
|
131
|
+
u.first_name, u.last_name = parse_contact_name(@data["meta"]["contactName"])
|
132
|
+
u.phone = @data["meta"]["contactPhone"] || nil
|
137
133
|
u
|
138
134
|
end
|
139
135
|
|
@@ -149,13 +145,16 @@ module Active
|
|
149
145
|
end
|
150
146
|
end
|
151
147
|
end
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
148
|
+
|
149
|
+
private
|
150
|
+
# parse_contact_name("Jonathan Spooner")
|
151
|
+
# return ["Jonathan","Spooner"]
|
152
|
+
# return ["Jonathan",nil]
|
153
|
+
# return [nil,nil]
|
154
|
+
def parse_contact_name(value)
|
155
|
+
return nil,nil if value.nil?
|
156
|
+
return value.split(" ")
|
157
|
+
end
|
159
158
|
|
160
159
|
|
161
160
|
end
|
data/lib/services/reg_center.rb
CHANGED
@@ -21,7 +21,7 @@ module Active
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def source
|
24
|
-
:
|
24
|
+
:reg_center
|
25
25
|
end
|
26
26
|
|
27
27
|
def title
|
@@ -81,18 +81,16 @@ module Active
|
|
81
81
|
end
|
82
82
|
|
83
83
|
def address
|
84
|
-
|
85
|
-
@
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
} )
|
95
|
-
end
|
84
|
+
@address = validated_address({
|
85
|
+
:name => @data["event"]["eventLocation"],
|
86
|
+
:address => @data["event"]["eventAddress"],
|
87
|
+
:city => @data["event"]["eventCity"],
|
88
|
+
:state => @data["event"]["eventState"],
|
89
|
+
:zip => @data["event"]["eventZip"],
|
90
|
+
:lat => @data["event"]["latitude"],
|
91
|
+
:lng => @data["event"]["longitude"],
|
92
|
+
:country => @data["event"]["eventCountry"]
|
93
|
+
} )
|
96
94
|
end
|
97
95
|
|
98
96
|
def start_date
|
@@ -114,6 +112,15 @@ module Active
|
|
114
112
|
def category
|
115
113
|
primary_category
|
116
114
|
end
|
115
|
+
|
116
|
+
def user
|
117
|
+
email = contact_email
|
118
|
+
u = User.new
|
119
|
+
u.email = email if Validators.email(email)
|
120
|
+
# u.first_name = @data["meta"]["contactName"] || nil
|
121
|
+
# u.phone = @data["meta"]["contactPhone"] || nil
|
122
|
+
u
|
123
|
+
end
|
117
124
|
|
118
125
|
def desc
|
119
126
|
if @data.has_key?("event") && @data["event"].has_key?("briefDescription")
|
@@ -152,9 +159,8 @@ module Active
|
|
152
159
|
# return @some_crazy unless @some_crazy.nil?
|
153
160
|
# @some_crazy = @data[:some_crazy_method_from_ats].split replace twist bla bla bla
|
154
161
|
# end
|
155
|
-
|
156
|
-
def self.find_by_id(id)
|
157
|
-
|
162
|
+
# local id
|
163
|
+
def self.find_by_id(id)
|
158
164
|
begin
|
159
165
|
doc = Nokogiri::XML(open("http://apij.active.com/regcenter/event/#{id}"))
|
160
166
|
puts "////////<br/>"
|
@@ -163,10 +169,9 @@ module Active
|
|
163
169
|
reg = RegCenter.new(Hash.from_xml(doc.to_s))
|
164
170
|
rescue Exception => e
|
165
171
|
raise RegCenterError, "Couldn't find Reg Center activity with the id of #{id} - #{e.inspect}"
|
166
|
-
return
|
172
|
+
return nil
|
167
173
|
end
|
168
|
-
|
169
|
-
return reg
|
174
|
+
reg
|
170
175
|
end
|
171
176
|
|
172
177
|
private
|
data/lib/services/validators.rb
CHANGED
@@ -3,7 +3,8 @@ module Active
|
|
3
3
|
class Validators
|
4
4
|
|
5
5
|
def self.email arg
|
6
|
-
if (arg =~
|
6
|
+
if (arg =~ /((\w|-)+(\.\w+)?)+@\w+\.\w+/) == nil
|
7
|
+
# if (arg =~ /^(\w|\.|-)+?@(\w|-)+?\.\w{2,4}($|\.\w{2,4})$/) == nil
|
7
8
|
return false
|
8
9
|
else
|
9
10
|
return true
|
@@ -96,6 +97,7 @@ module Active
|
|
96
97
|
end
|
97
98
|
|
98
99
|
def self.valid_state(name)
|
100
|
+
return nil if name.nil?
|
99
101
|
STATES.find do |i|
|
100
102
|
if i[0].upcase==name.strip.upcase
|
101
103
|
return i[0]
|
data/spec/activeworks_spec.rb
CHANGED
@@ -14,6 +14,10 @@ describe ActiveWorks do
|
|
14
14
|
a = ActiveWorks.find_by_id(@valid_id)
|
15
15
|
a.data["id"].should == @valid_id
|
16
16
|
end
|
17
|
+
it "should have a nil user email" do
|
18
|
+
a = ActiveWorks.find_by_id(@valid_id)
|
19
|
+
a.user.email.should be_nil
|
20
|
+
end
|
17
21
|
it "should set the asset_type_id" do
|
18
22
|
ActiveWorks.find_by_id(@valid_id).asset_type_id.should_not be_nil
|
19
23
|
end
|
data/spec/ats_spec.rb
CHANGED
@@ -18,7 +18,7 @@ describe ATS do
|
|
18
18
|
a.asset_id.should == @valid_id
|
19
19
|
end
|
20
20
|
it "should get the asset_type_id" do
|
21
|
-
ATS.find_by_id(@valid_id).
|
21
|
+
ATS.find_by_id(@valid_id).asset_type_id.should_not be_nil
|
22
22
|
end
|
23
23
|
it "should thorw an ATSError if no record is found" do
|
24
24
|
lambda { ATS.find_by_id( "666" ) }.should raise_error(ATSError)
|
@@ -36,19 +36,62 @@ describe ATS do
|
|
36
36
|
puts a.url
|
37
37
|
a.start_date.should_not be_nil
|
38
38
|
end
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
39
|
+
# works differently in current implementation
|
40
|
+
# it "should only load metadata once" do
|
41
|
+
# a = ATS.find_by_id(@valid_id)
|
42
|
+
# puts a.url
|
43
|
+
# puts a.address
|
44
|
+
# ATS.should_receive(:load_metadata).once
|
45
|
+
# end
|
45
46
|
it "should have an address Hash" do
|
46
47
|
a = ATS.find_by_id(@valid_id)
|
47
48
|
a.address.should be_an_instance_of(HashWithIndifferentAccess)
|
48
49
|
end
|
50
|
+
it "should have address data" do
|
51
|
+
r = ATS.new({"trackbackurl"=>"http://www.active.com/page/Event_Details.htm?event_id=1819585&assetId=61BB7D71-EC01-46B8-A601-38CA1C9AE893", "contactName"=>"DSE Runners", "city"=>"San Francisco", "substitutionUrl"=>"1819585", "assetId"=>"61BB7D71-EC01-46B8-A601-38CA1C9AE893", "destinationID"=>"", "latitude"=>"37.77029", "location"=>"Lindley Meadow near Spreckles Lake", "userCommentText"=>nil, "zip"=>"94117", "category"=>"Activities", "dma"=>"San Francisco - Oakland - San Jose", "participationCriteria"=>"Adult", "country"=>"United States", "searchWeight"=>"1", "isSearchable"=>"true", "image1"=>"http://www.active.com/images/events/hotrace.gif", "row"=>"1", "contactPhone"=>"415-978-0837", "startDate"=>"2010-09-12", "market"=>"San Francisco - Oakland - San Jose", "avgUserRating"=>nil, "onlineDonationAvailable"=>"0", "seourl"=>"http://www.active.com/running/san-francisco-ca/speedway-meadow-cross-country-4m-2010", "channel"=>["Running", "Running\\Cross Country"], "assetName"=>"Speedway Meadow Cross Country 4M", "assetTypeId"=>"EA4E860A-9DCD-4DAA-A7CA-4A77AD194F65", "longitude"=>"-122.4411", "eventResults"=>nil, "contactEmail"=>"dserunclub@aol.com", "endTime"=>"9:00:00", "startTime"=>"9:00:00", "mediaType"=>"Event", "onlineMembershipAvailable"=>"0", "onlineRegistrationAvailable"=>"true", "endDate"=>"2010-09-12", "eventURL"=>"http://www.dserunners.com", "estParticipants"=>"175", "state"=>"California"})
|
52
|
+
puts r.address.inspect
|
53
|
+
r.address["name"].should eql("Lindley Meadow near Spreckles Lake")
|
54
|
+
r.address["address"].should be_nil
|
55
|
+
r.address["city"].should eql("San Francisco")
|
56
|
+
r.address["state"].should eql("California")
|
57
|
+
r.address["zip"].should eql("94117")
|
58
|
+
r.address["lat"].should eql("37.77029")
|
59
|
+
r.address["lng"].should eql("-122.4411")
|
60
|
+
r.address["country"].should eql("United States")
|
61
|
+
end
|
62
|
+
|
63
|
+
it "should nil empty data" do
|
64
|
+
r = ATS.new({"trackbackurl"=>"http://www.active.com/page/Event_Details.htm?event_id=1819585&assetId=61BB7D71-EC01-46B8-A601-38CA1C9AE893", "contactName"=>"DSE Runners", "city"=>"San Francisco", "substitutionUrl"=>"1819585", "assetId"=>"61BB7D71-EC01-46B8-A601-38CA1C9AE893", "destinationID"=>"", "latitude"=>"37.77029", "location"=>" ", "userCommentText"=>nil, "zip"=>"94117", "category"=>"Activities", "dma"=>"San Francisco - Oakland - San Jose", "participationCriteria"=>"Adult", "country"=>"United States", "searchWeight"=>"1", "isSearchable"=>"true", "image1"=>"http://www.active.com/images/events/hotrace.gif", "row"=>"1", "contactPhone"=>"415-978-0837", "startDate"=>"2010-09-12", "market"=>"San Francisco - Oakland - San Jose", "avgUserRating"=>nil, "onlineDonationAvailable"=>"0", "seourl"=>"http://www.active.com/running/san-francisco-ca/speedway-meadow-cross-country-4m-2010", "channel"=>["Running", "Running\\Cross Country"], "assetName"=>"Speedway Meadow Cross Country 4M", "assetTypeId"=>"EA4E860A-9DCD-4DAA-A7CA-4A77AD194F65", "longitude"=>"-122.4411", "eventResults"=>nil, "contactEmail"=>"dserunclub@aol.com", "endTime"=>"9:00:00", "startTime"=>"9:00:00", "mediaType"=>"Event", "onlineMembershipAvailable"=>"0", "onlineRegistrationAvailable"=>"true", "endDate"=>"2010-09-12", "eventURL"=>"http://www.dserunners.com", "estParticipants"=>"175", "state"=>"California"})
|
65
|
+
r.address["name"].should be_nil
|
66
|
+
end
|
67
|
+
it "should nil bad zip code data" do
|
68
|
+
r = ATS.new({"trackbackurl"=>"http://www.active.com/page/Event_Details.htm?event_id=1819585&assetId=61BB7D71-EC01-46B8-A601-38CA1C9AE893", "contactName"=>"DSE Runners", "city"=>"San Francisco", "substitutionUrl"=>"1819585", "assetId"=>"61BB7D71-EC01-46B8-A601-38CA1C9AE893", "destinationID"=>"", "latitude"=>"37.77029", "location"=>"Lindley Meadow near Spreckles Lake", "userCommentText"=>nil, "zip"=>"94117-123456", "category"=>"Activities", "dma"=>"San Francisco - Oakland - San Jose", "participationCriteria"=>"Adult", "country"=>"United States", "searchWeight"=>"1", "isSearchable"=>"true", "image1"=>"http://www.active.com/images/events/hotrace.gif", "row"=>"1", "contactPhone"=>"415-978-0837", "startDate"=>"2010-09-12", "market"=>"San Francisco - Oakland - San Jose", "avgUserRating"=>nil, "onlineDonationAvailable"=>"0", "seourl"=>"http://www.active.com/running/san-francisco-ca/speedway-meadow-cross-country-4m-2010", "channel"=>["Running", "Running\\Cross Country"], "assetName"=>"Speedway Meadow Cross Country 4M", "assetTypeId"=>"EA4E860A-9DCD-4DAA-A7CA-4A77AD194F65", "longitude"=>"-122.4411", "eventResults"=>nil, "contactEmail"=>"dserunclub@aol.com", "endTime"=>"9:00:00", "startTime"=>"9:00:00", "mediaType"=>"Event", "onlineMembershipAvailable"=>"0", "onlineRegistrationAvailable"=>"true", "endDate"=>"2010-09-12", "eventURL"=>"http://www.dserunners.com", "estParticipants"=>"175", "state"=>"California"})
|
69
|
+
r.address["zip"].should be_nil
|
70
|
+
end
|
71
|
+
|
72
|
+
it "should fix state abbreviations" do
|
73
|
+
r = ATS.new({"trackbackurl"=>"http://www.active.com/page/Event_Details.htm?event_id=1819585&assetId=61BB7D71-EC01-46B8-A601-38CA1C9AE893", "contactName"=>"DSE Runners", "city"=>"San Francisco", "substitutionUrl"=>"1819585", "assetId"=>"61BB7D71-EC01-46B8-A601-38CA1C9AE893", "destinationID"=>"", "latitude"=>"37.77029", "location"=>"Lindley Meadow near Spreckles Lake", "userCommentText"=>nil, "zip"=>"94117", "category"=>"Activities", "dma"=>"San Francisco - Oakland - San Jose", "participationCriteria"=>"Adult", "country"=>"United States", "searchWeight"=>"1", "isSearchable"=>"true", "image1"=>"http://www.active.com/images/events/hotrace.gif", "row"=>"1", "contactPhone"=>"415-978-0837", "startDate"=>"2010-09-12", "market"=>"San Francisco - Oakland - San Jose", "avgUserRating"=>nil, "onlineDonationAvailable"=>"0", "seourl"=>"http://www.active.com/running/san-francisco-ca/speedway-meadow-cross-country-4m-2010", "channel"=>["Running", "Running\\Cross Country"], "assetName"=>"Speedway Meadow Cross Country 4M", "assetTypeId"=>"EA4E860A-9DCD-4DAA-A7CA-4A77AD194F65", "longitude"=>"-122.4411", "eventResults"=>nil, "contactEmail"=>"dserunclub@aol.com", "endTime"=>"9:00:00", "startTime"=>"9:00:00", "mediaType"=>"Event", "onlineMembershipAvailable"=>"0", "onlineRegistrationAvailable"=>"true", "endDate"=>"2010-09-12", "eventURL"=>"http://www.dserunners.com", "estParticipants"=>"175", "state"=>"CA"})
|
74
|
+
r.address["state"].should eql "California"
|
75
|
+
end
|
76
|
+
|
77
|
+
it "should have a nil user email" do
|
78
|
+
r = ATS.new({"trackbackurl"=>"http://www.active.com/page/Event_Details.htm?event_id=1819585&assetId=61BB7D71-EC01-46B8-A601-38CA1C9AE893", "contactName"=>"DSE Runners", "city"=>"San Francisco", "substitutionUrl"=>"1819585", "assetId"=>"61BB7D71-EC01-46B8-A601-38CA1C9AE893", "destinationID"=>"", "latitude"=>"37.77029", "location"=>" ", "userCommentText"=>nil, "zip"=>"94117", "category"=>"Activities", "dma"=>"San Francisco - Oakland - San Jose", "participationCriteria"=>"Adult", "country"=>"United States", "searchWeight"=>"1", "isSearchable"=>"true", "image1"=>"http://www.active.com/images/events/hotrace.gif", "row"=>"1", "contactPhone"=>"415-978-0837", "startDate"=>"2010-09-12", "market"=>"San Francisco - Oakland - San Jose", "avgUserRating"=>nil, "onlineDonationAvailable"=>"0", "seourl"=>"http://www.active.com/running/san-francisco-ca/speedway-meadow-cross-country-4m-2010", "channel"=>["Running", "Running\\Cross Country"], "assetName"=>"Speedway Meadow Cross Country 4M", "assetTypeId"=>"EA4E860A-9DCD-4DAA-A7CA-4A77AD194F65", "longitude"=>"-122.4411", "eventResults"=>nil, "endTime"=>"9:00:00", "startTime"=>"9:00:00", "mediaType"=>"Event", "onlineMembershipAvailable"=>"0", "onlineRegistrationAvailable"=>"true", "endDate"=>"2010-09-12", "eventURL"=>"http://www.dserunners.com", "estParticipants"=>"175", "state"=>"California"})
|
79
|
+
r.user.email.should be_nil
|
80
|
+
end
|
81
|
+
it "should have a nil user email when the email is not valid" do
|
82
|
+
r = ATS.new({"trackbackurl"=>"http://www.active.com/page/Event_Details.htm?event_id=1819585&assetId=61BB7D71-EC01-46B8-A601-38CA1C9AE893", "contactName"=>"DSE Runners", "city"=>"San Francisco", "substitutionUrl"=>"1819585", "assetId"=>"61BB7D71-EC01-46B8-A601-38CA1C9AE893", "destinationID"=>"", "latitude"=>"37.77029", "location"=>" ", "userCommentText"=>nil, "zip"=>"94117", "category"=>"Activities", "dma"=>"San Francisco - Oakland - San Jose", "participationCriteria"=>"Adult", "country"=>"United States", "searchWeight"=>"1", "isSearchable"=>"true", "image1"=>"http://www.active.com/images/events/hotrace.gif", "row"=>"1", "contactPhone"=>"415-978-0837", "startDate"=>"2010-09-12", "market"=>"San Francisco - Oakland - San Jose", "avgUserRating"=>nil, "onlineDonationAvailable"=>"0", "seourl"=>"http://www.active.com/running/san-francisco-ca/speedway-meadow-cross-country-4m-2010", "channel"=>["Running", "Running\\Cross Country"], "assetName"=>"Speedway Meadow Cross Country 4M", "assetTypeId"=>"EA4E860A-9DCD-4DAA-A7CA-4A77AD194F65", "longitude"=>"-122.4411", "eventResults"=>nil, "contactPhone"=>"dserunclubaolcom", "endTime"=>"9:00:00", "startTime"=>"9:00:00", "mediaType"=>"Event", "onlineMembershipAvailable"=>"0", "onlineRegistrationAvailable"=>"true", "endDate"=>"2010-09-12", "eventURL"=>"http://www.dserunners.com", "estParticipants"=>"175", "state"=>"California"})
|
83
|
+
r.user.email.should be_nil
|
84
|
+
end
|
85
|
+
it "should have a valid user email" do
|
86
|
+
r = ATS.new({"trackbackurl"=>"http://www.active.com/page/Event_Details.htm?event_id=1819585&assetId=61BB7D71-EC01-46B8-A601-38CA1C9AE893", "contactName"=>"DSE Runners", "city"=>"San Francisco", "substitutionUrl"=>"1819585", "assetId"=>"61BB7D71-EC01-46B8-A601-38CA1C9AE893", "destinationID"=>"", "latitude"=>"37.77029", "location"=>" ", "userCommentText"=>nil, "zip"=>"94117", "category"=>"Activities", "dma"=>"San Francisco - Oakland - San Jose", "participationCriteria"=>"Adult", "country"=>"United States", "searchWeight"=>"1", "isSearchable"=>"true", "image1"=>"http://www.active.com/images/events/hotrace.gif", "row"=>"1", "contactPhone"=>"415-978-0837", "startDate"=>"2010-09-12", "market"=>"San Francisco - Oakland - San Jose", "avgUserRating"=>nil, "onlineDonationAvailable"=>"0", "seourl"=>"http://www.active.com/running/san-francisco-ca/speedway-meadow-cross-country-4m-2010", "channel"=>["Running", "Running\\Cross Country"], "assetName"=>"Speedway Meadow Cross Country 4M", "assetTypeId"=>"EA4E860A-9DCD-4DAA-A7CA-4A77AD194F65", "longitude"=>"-122.4411", "eventResults"=>nil, "contactEmail"=>"dserunclub@aol.com", "endTime"=>"9:00:00", "startTime"=>"9:00:00", "mediaType"=>"Event", "onlineMembershipAvailable"=>"0", "onlineRegistrationAvailable"=>"true", "endDate"=>"2010-09-12", "eventURL"=>"http://www.dserunners.com", "estParticipants"=>"175", "state"=>"California"})
|
87
|
+
r.user.email.should eql("dserunclub@aol.com")
|
88
|
+
end
|
89
|
+
|
90
|
+
|
49
91
|
it "should have a startDate Date" do
|
50
92
|
a = ATS.find_by_id(@valid_id)
|
51
|
-
a.start_date.
|
93
|
+
puts a.start_date.class
|
94
|
+
a.start_date.should be_an_instance_of(DateTime)
|
52
95
|
end
|
53
96
|
it "should have a title String" do
|
54
97
|
a = ATS.find_by_id(@valid_id)
|
@@ -2,8 +2,24 @@ require 'rubygems'
|
|
2
2
|
require File.expand_path(File.join(File.dirname(__FILE__), %w[.. .. lib Active]))
|
3
3
|
include Active::Services
|
4
4
|
|
5
|
-
Benchmark.bm(700) do |x|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
end
|
5
|
+
# Benchmark.bm(700) do |x|
|
6
|
+
# x.report("string:") { Search.new({:keywords => "running,swimming,yoga"}) }
|
7
|
+
# x.report("array:") { Search.new({:keywords => %w(running swimming yoga)}) }
|
8
|
+
# x.report("Array:") { Search.new({:keywords => ["running","swimming","yoga"]}) }
|
9
|
+
# end
|
10
|
+
arr = []
|
11
|
+
Search.search(:num_results => 100, :page => 1).results.each do |a|
|
12
|
+
match = (a.user.email == a.ats.contact_email)
|
13
|
+
email = "--"
|
14
|
+
if a.primary_source
|
15
|
+
email = a.primary_source.user.email
|
16
|
+
end
|
17
|
+
arr << "#{a.asset_id}"
|
18
|
+
arr << " GSA= #{a.user.email} ATS= #{a.ats.user.email} #{a.primary_source}=> #{email} "
|
19
|
+
end
|
20
|
+
puts " "
|
21
|
+
puts " "
|
22
|
+
puts " "
|
23
|
+
puts " "
|
24
|
+
puts " "
|
25
|
+
puts arr
|
data/spec/gsa_spec.rb
CHANGED
@@ -168,8 +168,13 @@ describe GSA do
|
|
168
168
|
g.user.email.should be_nil
|
169
169
|
end
|
170
170
|
it "should have a valid user email" do
|
171
|
-
g = GSA.new(JSON.parse('{"escapedUrl":"http://www.active.com/cycling/san-francisco-ca/seismic-challenge-30-2010","language":"en","title":"Seismic Challenge 3.0 | San Francisco, California 94101 \u003cb\u003e...\u003c/b\u003e","url":"http://www.active.com/cycling/san-francisco-ca/seismic-challenge-30-2010","summary":"","meta":{"startDate":"2010-10-02","eventDate":"2010-10-02T00:00:00-07:00","tag":"event:10","state":"California","eventLongitude":"-122.42","endDate":"2010-10-03","lastModifiedDateTime":"2010-10-04 03:08:51.65","splitMediaType":"Event","locationName":"San Francisco Bay","endTime":"0:00:00","mediaType":"Event","city":"San Francisco","google-site-verification":"","estParticipants":"2000","startTime":"0:00:00","assetId":["35A99FCB-E238-4D78-9205-96179F827CB0","35a99fcb-e238-4d78-9205-96179f827cb0"],"eventId":"1883181","participationCriteria":"All","description":"","longitude":"-122.42","onlineDonationAvailable":"0","substitutionUrl":"1883181","assetName":["Seismic Challenge 3.0","Seismic Challenge 3.0"],"eventURL":"http://greaterthanone.org/events/seismic-challenge/","zip":"94101","contactPhone":"415-487-3053","sortDate":"2000-10-02","eventState":"California","eventLatitude":"37.78","keywords":"Event","contactEmail":"eventinfo@sfaf.org","onlineMembershipAvailable":"0","dma":"San Francisco - Oakland - San Jose","trackbackurl":"http://www.active.com/cycling/san-francisco-ca/seismic-challenge-30-2010","seourl":"http://www.active.com/cycling/san-francisco-ca/seismic-challenge-30-2010","country":"United States","onlineRegistrationAvailable":"false","category":"Activities","market":"San Francisco - Oakland - San Jose","assetTypeId":"EA4E860A-9DCD-4DAA-A7CA-4A77AD194F65","lastModifiedDate":"2010-10-04","eventZip":"94101","UpdateDateTime":"9/22/2010 11:46:24 AM","latitude":"37.78","channel":"Cycling"}}'))
|
172
|
-
g.user.
|
171
|
+
g = GSA.new(JSON.parse('{"escapedUrl":"http://www.active.com/cycling/san-francisco-ca/seismic-challenge-30-2010","language":"en","title":"Seismic Challenge 3.0 | San Francisco, California 94101 \u003cb\u003e...\u003c/b\u003e","url":"http://www.active.com/cycling/san-francisco-ca/seismic-challenge-30-2010","summary":"","meta":{"startDate":"2010-10-02","eventDate":"2010-10-02T00:00:00-07:00","tag":"event:10","state":"California","eventLongitude":"-122.42","endDate":"2010-10-03","lastModifiedDateTime":"2010-10-04 03:08:51.65","splitMediaType":"Event","locationName":"San Francisco Bay","endTime":"0:00:00","mediaType":"Event","city":"San Francisco","google-site-verification":"","estParticipants":"2000","startTime":"0:00:00","assetId":["35A99FCB-E238-4D78-9205-96179F827CB0","35a99fcb-e238-4d78-9205-96179f827cb0"],"eventId":"1883181","participationCriteria":"All","description":"","longitude":"-122.42","onlineDonationAvailable":"0","substitutionUrl":"1883181","assetName":["Seismic Challenge 3.0","Seismic Challenge 3.0"],"eventURL":"http://greaterthanone.org/events/seismic-challenge/","zip":"94101","contactPhone":"415-487-3053","sortDate":"2000-10-02","eventState":"California","eventLatitude":"37.78","keywords":"Event","contactEmail":"eventinfo@sfaf.org","onlineMembershipAvailable":"0","dma":"San Francisco - Oakland - San Jose","trackbackurl":"http://www.active.com/cycling/san-francisco-ca/seismic-challenge-30-2010","seourl":"http://www.active.com/cycling/san-francisco-ca/seismic-challenge-30-2010","country":"United States","onlineRegistrationAvailable":"false","category":"Activities","market":"San Francisco - Oakland - San Jose","contactName":"joe","assetTypeId":"EA4E860A-9DCD-4DAA-A7CA-4A77AD194F65","lastModifiedDate":"2010-10-04","eventZip":"94101","UpdateDateTime":"9/22/2010 11:46:24 AM","latitude":"37.78","channel":"Cycling"}}'))
|
172
|
+
g.user.first_name.should eql("joe")
|
173
|
+
end
|
174
|
+
it "should have a valid first and last name" do
|
175
|
+
g = GSA.new(JSON.parse('{"escapedUrl":"http://www.active.com/baseball-league/santee-ca/8th-annual-fall-baseball-classic-8s16s-2010","language":"en","title":"\u003cb\u003e8th Annual Fall Baseball Classic\u003c/b\u003e (\u003cb\u003e8\u0026#39;S\u003c/b\u003e-\u003cb\u003e16\u0026#39;S\u003c/b\u003e) | Santee \u003cb\u003e...\u003c/b\u003e","url":"http://www.active.com/baseball-league/santee-ca/8th-annual-fall-baseball-classic-8s16s-2010","summary":"\u003cb\u003e...\u003c/b\u003e \u003cb\u003e8th Annual Fall Baseball Classic\u003c/b\u003e (\u003cb\u003e8\u0026#39;S\u003c/b\u003e-\u003cb\u003e16\u0026#39;S\u003c/b\u003e). \u003cb\u003e...\u003c/b\u003e Similar \u003cb\u003eBaseball\u003c/b\u003e Events. \u003cb\u003eFalls\u003c/b\u003e Little\u003cbr\u003e League - 2011 Season \u003cb\u003eFall\u003c/b\u003e City, Washington Mon, Feb 28, 2011. \u003cb\u003e...\u003c/b\u003e ","meta":{"startDate":"2010-10-02","eventDate":"2010-10-02T00:00:00-07:00","location":"Santee- SportsPlex","state":"California","endDate":"2010-10-03","eventLongitude":"-116.997","locationName":"Santee- SportsPlex","splitMediaType":"League","lastModifiedDateTime":"2010-10-03 03:13:09.84","endTime":"0:00:00","mediaType":"League","google-site-verification":"","city":"Santee","estParticipants":"2000","startTime":"0:00:00","assetId":["9FA03B5C-C1F4-4A92-BDE1-533BC219CB2D","9fa03b5c-c1f4-4a92-bde1-533bc219cb2d"],"eventId":"1879121","participationCriteria":"All","description":"","longitude":"-116.997","onlineDonationAvailable":"0","substitutionUrl":"1879121","assetName":["8th Annual Fall Baseball Classic (8\'S-16\'S)","8th Annual Fall Baseball Classic (8\'S-16\'S)"],"zip":"92071","contactPhone":"951-789-2065","eventLatitude":"32.86787","eventState":"California","sortDate":"2000-10-02","keywords":"Event","eventAddress":"9951 Riverwalk Drive","contactEmail":"brandon@tripecrownsocal.com","onlineMembershipAvailable":"0","dma":"San Diego","trackbackurl":"http://www.active.com/baseball-league/santee-ca/8th-annual-fall-baseball-classic-8s16s-2010","seourl":"http://www.active.com/baseball-league/santee-ca/8th-annual-fall-baseball-classic-8s16s-2010","country":"United States","onlineRegistrationAvailable":"false","category":"Activities","market":"San Diego","assetTypeId":"EA4E860A-9DCD-4DAA-A7CA-4A77AD194F65","contactName":"Brandon Burns","lastModifiedDate":"2010-10-03","eventZip":"92071","latitude":"32.86787","UpdateDateTime":"9/22/2010 11:46:24 AM","channel":"Baseball"}}'))
|
176
|
+
g.user.first_name.should eql("Brandon")
|
177
|
+
g.user.last_name.should eql("Burns")
|
173
178
|
end
|
174
179
|
end
|
175
180
|
|
data/spec/reg_spec.rb
CHANGED
@@ -19,6 +19,67 @@ describe RegCenter do
|
|
19
19
|
r = RegCenter.new(Hash.from_xml('<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <event> <assetID>5c6fa2f2-0434-4d6c-953d-cab9bade4f64</assetID> <eventID>1877942</eventID> <eventName>Realistic Drawing (6-12 Yrs.)</eventName> <eventDate>2010-09-16T15:30:00-07:00</eventDate> <eventTime>3:30 PM</eventTime> <eventLocation>Arts & Crafts Room - Nick Rodriguez Community Center</eventLocation> <eventAddress>213 "F" Street</eventAddress> <eventCity>Antioch</eventCity> <eventState>California</eventState> <eventZip>94509</eventZip> <eventCountry>USA</eventCountry> <eventDescription>Do you love to draw?Learn how to make your drawings more realistic with projects that focus on observation,proportion,perspective,composition,light and shadow and texture.Media will include pencil,pen,charcoal,and pastel.A &10 materials fee is payable to the instuctor at the first class.</eventDescription> <usatSanctioned>false</usatSanctioned> <regOnline>true</regOnline> <eventCloseDate>2010-09-16T00:00:00-07:00</eventCloseDate> <currencyCode>USD</currencyCode> <eventTypeID>1</eventTypeID> <eventType>Recware Activities</eventType> <hasEventResults>false</hasEventResults> <hasMetaResults>false</hasMetaResults> <showMap>true</showMap> <longitude>-121.8058</longitude> <latitude>38.00492</latitude> <eventContactEmail>dadams@ci.antioch.ca.us</eventContactEmail> <eventContactPhone>925-779-7070</eventContactPhone> <displayCloseDate>true</displayCloseDate> <excludedFromEmailing>false</excludedFromEmailing> <category>Activities</category> <mediaTypes> <mediaType>Recware Activities</mediaType> </mediaTypes> <channels> <channel> <primaryChannel>false</primaryChannel> </channel> </channels> <eventCategories/> <eventDetails> <eventDetail> <eventDetailsName>Ages</eventDetailsName> <eventDetailsOrder>1</eventDetailsOrder> <eventDetailsValue>6 years - 12 years 11months</eventDetailsValue> </eventDetail> <eventDetail> <eventDetailsName>Instructor</eventDetailsName> <eventDetailsOrder>2</eventDetailsOrder> <eventDetailsValue>Nancy Roberts</eventDetailsValue> </eventDetail> <eventDetail> <eventDetailsName>Code</eventDetailsName> <eventDetailsOrder>3</eventDetailsOrder> <eventDetailsValue>1447.401</eventDetailsValue> </eventDetail> <eventDetail> <eventDetailsName>Classification</eventDetailsName> <eventDetailsOrder>4</eventDetailsOrder> <eventDetailsValue>Art</eventDetailsValue> </eventDetail> <eventDetail> <eventDetailsName>Schedule</eventDetailsName> <eventDetailsOrder>5</eventDetailsOrder> <eventDetailsValue>Occurs every week on Thursday effective 9/16/10 until 10/21/10 from 3:30 PM to 4:30 PM</eventDetailsValue> </eventDetail> </eventDetails> <eventDonationLinks/> <eventSanctions/> <eventDetailsPageUrl>http://www.active.com/page/Event_Details.htm?event_id=1877942</eventDetailsPageUrl> <eventContactUrl>http://www.active.com/event_contact.cfm?event_id=1877942</eventContactUrl> </event>'))
|
20
20
|
r.title.should eql("Realistic Drawing (6-12 Yrs.)")
|
21
21
|
end
|
22
|
+
it "should have an address Hash" do
|
23
|
+
r = RegCenter.new(Hash.from_xml('<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <event> <assetID>5c6fa2f2-0434-4d6c-953d-cab9bade4f64</assetID> <eventID>1877942</eventID> <eventName>Realistic Drawing (6-12 Yrs.)</eventName> <eventDate>2010-09-16T15:30:00-07:00</eventDate> <eventTime>3:30 PM</eventTime> <eventLocation>Arts & Crafts Room - Nick Rodriguez Community Center</eventLocation> <eventAddress>213 "F" Street</eventAddress> <eventCity>Antioch</eventCity> <eventState>California</eventState> <eventZip>94509</eventZip> <eventCountry>USA</eventCountry> <eventDescription>Do you love to draw?Learn how to make your drawings more realistic with projects that focus on observation,proportion,perspective,composition,light and shadow and texture.Media will include pencil,pen,charcoal,and pastel.A &10 materials fee is payable to the instuctor at the first class.</eventDescription> <usatSanctioned>false</usatSanctioned> <regOnline>true</regOnline> <eventCloseDate>2010-09-16T00:00:00-07:00</eventCloseDate> <currencyCode>USD</currencyCode> <eventTypeID>1</eventTypeID> <eventType>Recware Activities</eventType> <hasEventResults>false</hasEventResults> <hasMetaResults>false</hasMetaResults> <showMap>true</showMap> <longitude>-121.8058</longitude> <latitude>38.00492</latitude> <eventContactEmail>dadams@ci.antioch.ca.us</eventContactEmail> <eventContactPhone>925-779-7070</eventContactPhone> <displayCloseDate>true</displayCloseDate> <excludedFromEmailing>false</excludedFromEmailing> <category>Activities</category> <mediaTypes> <mediaType>Recware Activities</mediaType> </mediaTypes> <channels> <channel> <primaryChannel>false</primaryChannel> </channel> </channels> <eventCategories/> <eventDetails> <eventDetail> <eventDetailsName>Ages</eventDetailsName> <eventDetailsOrder>1</eventDetailsOrder> <eventDetailsValue>6 years - 12 years 11months</eventDetailsValue> </eventDetail> <eventDetail> <eventDetailsName>Instructor</eventDetailsName> <eventDetailsOrder>2</eventDetailsOrder> <eventDetailsValue>Nancy Roberts</eventDetailsValue> </eventDetail> <eventDetail> <eventDetailsName>Code</eventDetailsName> <eventDetailsOrder>3</eventDetailsOrder> <eventDetailsValue>1447.401</eventDetailsValue> </eventDetail> <eventDetail> <eventDetailsName>Classification</eventDetailsName> <eventDetailsOrder>4</eventDetailsOrder> <eventDetailsValue>Art</eventDetailsValue> </eventDetail> <eventDetail> <eventDetailsName>Schedule</eventDetailsName> <eventDetailsOrder>5</eventDetailsOrder> <eventDetailsValue>Occurs every week on Thursday effective 9/16/10 until 10/21/10 from 3:30 PM to 4:30 PM</eventDetailsValue> </eventDetail> </eventDetails> <eventDonationLinks/> <eventSanctions/> <eventDetailsPageUrl>http://www.active.com/page/Event_Details.htm?event_id=1877942</eventDetailsPageUrl> <eventContactUrl>http://www.active.com/event_contact.cfm?event_id=1877942</eventContactUrl> </event>'))
|
24
|
+
r.address.should be_an_instance_of(HashWithIndifferentAccess)
|
25
|
+
end
|
26
|
+
it "should have address data" do
|
27
|
+
r = RegCenter.new(Hash.from_xml('<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <event> <assetID>5c6fa2f2-0434-4d6c-953d-cab9bade4f64</assetID> <eventID>1877942</eventID> <eventName>Realistic Drawing (6-12 Yrs.)</eventName> <eventDate>2010-09-16T15:30:00-07:00</eventDate> <eventTime>3:30 PM</eventTime> <eventLocation>Arts & Crafts Room - Nick Rodriguez Community Center</eventLocation> <eventAddress>213 "F" Street</eventAddress> <eventCity>Antioch</eventCity> <eventState>California</eventState> <eventZip>94509</eventZip> <eventCountry>USA</eventCountry> <eventDescription>Do you love to draw?Learn how to make your drawings more realistic with projects that focus on observation,proportion,perspective,composition,light and shadow and texture.Media will include pencil,pen,charcoal,and pastel.A &10 materials fee is payable to the instuctor at the first class.</eventDescription> <usatSanctioned>false</usatSanctioned> <regOnline>true</regOnline> <eventCloseDate>2010-09-16T00:00:00-07:00</eventCloseDate> <currencyCode>USD</currencyCode> <eventTypeID>1</eventTypeID> <eventType>Recware Activities</eventType> <hasEventResults>false</hasEventResults> <hasMetaResults>false</hasMetaResults> <showMap>true</showMap> <longitude>-121.8058</longitude> <latitude>38.00492</latitude> <eventContactEmail>dadams@ci.antioch.ca.us</eventContactEmail> <eventContactPhone>925-779-7070</eventContactPhone> <displayCloseDate>true</displayCloseDate> <excludedFromEmailing>false</excludedFromEmailing> <category>Activities</category> <mediaTypes> <mediaType>Recware Activities</mediaType> </mediaTypes> <channels> <channel> <primaryChannel>false</primaryChannel> </channel> </channels> <eventCategories/> <eventDetails> <eventDetail> <eventDetailsName>Ages</eventDetailsName> <eventDetailsOrder>1</eventDetailsOrder> <eventDetailsValue>6 years - 12 years 11months</eventDetailsValue> </eventDetail> <eventDetail> <eventDetailsName>Instructor</eventDetailsName> <eventDetailsOrder>2</eventDetailsOrder> <eventDetailsValue>Nancy Roberts</eventDetailsValue> </eventDetail> <eventDetail> <eventDetailsName>Code</eventDetailsName> <eventDetailsOrder>3</eventDetailsOrder> <eventDetailsValue>1447.401</eventDetailsValue> </eventDetail> <eventDetail> <eventDetailsName>Classification</eventDetailsName> <eventDetailsOrder>4</eventDetailsOrder> <eventDetailsValue>Art</eventDetailsValue> </eventDetail> <eventDetail> <eventDetailsName>Schedule</eventDetailsName> <eventDetailsOrder>5</eventDetailsOrder> <eventDetailsValue>Occurs every week on Thursday effective 9/16/10 until 10/21/10 from 3:30 PM to 4:30 PM</eventDetailsValue> </eventDetail> </eventDetails> <eventDonationLinks/> <eventSanctions/> <eventDetailsPageUrl>http://www.active.com/page/Event_Details.htm?event_id=1877942</eventDetailsPageUrl> <eventContactUrl>http://www.active.com/event_contact.cfm?event_id=1877942</eventContactUrl> </event>'))
|
28
|
+
r.address["name"].should eql "Arts & Crafts Room - Nick Rodriguez Community Center"
|
29
|
+
r.address["address"].should eql "213 \"F\" Street"
|
30
|
+
r.address["city"].should eql "Antioch"
|
31
|
+
r.address["state"].should eql "California"
|
32
|
+
r.address["zip"].should eql "94509"
|
33
|
+
r.address["lat"].should eql "38.00492"
|
34
|
+
r.address["lng"].should eql "-121.8058"
|
35
|
+
r.address["country"].should eql "USA"
|
36
|
+
end
|
37
|
+
it "should have an address Hash" do
|
38
|
+
r = RegCenter.new(Hash.from_xml("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<event>\n <assetID>7e39ceb4-cebb-471f-ace3-21f697ae9e55</assetID>\n <eventID>1802851</eventID>\n <eventName>Rock 'n' Roll San Jose Half Marathon</eventName>\n <eventDate>2010-10-03T08:00:00-07:00</eventDate>\n <eventTime>08:00 am</eventTime>\n <eventLocation>Downtown</eventLocation>\n <eventAddress>Almaden Blvd & Santa Clara Street</eventAddress>\n <eventCity>San Jose</eventCity>\n <eventState>California</eventState>\n <eventZip>95192</eventZip>\n <eventCountry>USA</eventCountry>\n <briefDescription>Registration Fees:* \t \n<p> \n1/2 Marathon \n<p> \n * $85.00 \342\200\223 October 2009- July 31, 2010<br> \n * $100.00 \342\200\223 August 1, 2010- September 26<br> \n * $120.00 \342\200\223 Expo Price<br> \n<p> \n*Registration fees are non-refundable and non-transferable. Fees listed above do not include the Active Network processing fee. NO RACE DAY REGISTRATION</briefDescription>\n <usatSanctioned>false</usatSanctioned>\n <regOnline>false</regOnline>\n <currencyCode>USD</currencyCode>\n <eventTypeID>7</eventTypeID>\n <eventType>Event, Race</eventType>\n <hasEventResults>false</hasEventResults>\n <hasMetaResults>true</hasMetaResults>\n <showMap>true</showMap>\n <longitude>-121.8818</longitude>\n <latitude>37.3359</latitude>\n <eventContactEmail>rnrsj@eliteracing.com</eventContactEmail>\n <eventContactPhone>800-311-1255</eventContactPhone>\n <displayCloseDate>true</displayCloseDate>\n <excludedFromEmailing>false</excludedFromEmailing>\n <metaEventName>Rock 'n' Roll Half Marathon</metaEventName>\n <metaEventID>98616</metaEventID>\n <category>Activities</category>\n <mediaTypes>\n <mediaType>Event</mediaType>\n <mediaType>Event\\Half Marathon</mediaType>\n <mediaType>=difficulty:Advanced</mediaType>\n <mediaType>=difficulty:Beginner</mediaType>\n <mediaType>=difficulty:Intermediate</mediaType>\n </mediaTypes>\n <metaEvents>\n <event>\n <assetID>a401eaf3-6087-4dd2-822c-635a7ae45e74</assetID>\n <eventID>1614834</eventID>\n <eventName>Rock 'n' Roll Half Marathon - San Jose</eventName>\n <eventDate>2009-10-04T08:00:00-07:00</eventDate>\n <eventDetailsPageUrl>http://www.active.com/page/Event_Details.htm?event_id=1614834</eventDetailsPageUrl>\n </event>\n </metaEvents>\n <channels>\n <channel>\n <channelName>Running</channelName>\n <primaryChannel>true</primaryChannel>\n </channel>\n </channels>\n <eventCategories/>\n <eventDetails>\n <eventDetail>\n <eventDetailsName>Online Registration Closes</eventDetailsName>\n <eventDetailsOrder>1</eventDetailsOrder>\n <eventDetailsValue>Sunday, September 26, 2010</eventDetailsValue>\n </eventDetail>\n </eventDetails>\n <eventDonationLinks/>\n <eventSanctions/>\n <eventUrl>http://san-jose.competitor.com</eventUrl>\n <resultsUrl>http://results.active.com/pages/page.jsp?pubID=3&eventID=1802851</resultsUrl>\n <eventDetailsPageUrl>http://www.active.com/page/Event_Details.htm?event_id=1802851</eventDetailsPageUrl>\n <eventContactUrl>http://www.active.com/event_contact.cfm?event_id=1802851</eventContactUrl>\n <eventImageUrl>http://www.active.com/images/upimages/1802851.jpg</eventImageUrl>\n</event>\n"))
|
39
|
+
r.address.should be_an_instance_of(HashWithIndifferentAccess)
|
40
|
+
end
|
41
|
+
it "should have address data" do
|
42
|
+
r = RegCenter.new(Hash.from_xml("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<event>\n <assetID>7e39ceb4-cebb-471f-ace3-21f697ae9e55</assetID>\n <eventID>1802851</eventID>\n <eventName>Rock 'n' Roll San Jose Half Marathon</eventName>\n <eventDate>2010-10-03T08:00:00-07:00</eventDate>\n <eventTime>08:00 am</eventTime>\n <eventLocation>Downtown</eventLocation>\n <eventAddress>Almaden Blvd & Santa Clara Street</eventAddress>\n <eventCity>San Jose</eventCity>\n <eventState>California</eventState>\n <eventZip>95192</eventZip>\n <eventCountry>USA</eventCountry>\n <briefDescription>Registration Fees:* \t \n<p> \n1/2 Marathon \n<p> \n * $85.00 \342\200\223 October 2009- July 31, 2010<br> \n * $100.00 \342\200\223 August 1, 2010- September 26<br> \n * $120.00 \342\200\223 Expo Price<br> \n<p> \n*Registration fees are non-refundable and non-transferable. Fees listed above do not include the Active Network processing fee. NO RACE DAY REGISTRATION</briefDescription>\n <usatSanctioned>false</usatSanctioned>\n <regOnline>false</regOnline>\n <currencyCode>USD</currencyCode>\n <eventTypeID>7</eventTypeID>\n <eventType>Event, Race</eventType>\n <hasEventResults>false</hasEventResults>\n <hasMetaResults>true</hasMetaResults>\n <showMap>true</showMap>\n <longitude>-121.8818</longitude>\n <latitude>37.3359</latitude>\n <eventContactEmail>rnrsj@eliteracing.com</eventContactEmail>\n <eventContactPhone>800-311-1255</eventContactPhone>\n <displayCloseDate>true</displayCloseDate>\n <excludedFromEmailing>false</excludedFromEmailing>\n <metaEventName>Rock 'n' Roll Half Marathon</metaEventName>\n <metaEventID>98616</metaEventID>\n <category>Activities</category>\n <mediaTypes>\n <mediaType>Event</mediaType>\n <mediaType>Event\\Half Marathon</mediaType>\n <mediaType>=difficulty:Advanced</mediaType>\n <mediaType>=difficulty:Beginner</mediaType>\n <mediaType>=difficulty:Intermediate</mediaType>\n </mediaTypes>\n <metaEvents>\n <event>\n <assetID>a401eaf3-6087-4dd2-822c-635a7ae45e74</assetID>\n <eventID>1614834</eventID>\n <eventName>Rock 'n' Roll Half Marathon - San Jose</eventName>\n <eventDate>2009-10-04T08:00:00-07:00</eventDate>\n <eventDetailsPageUrl>http://www.active.com/page/Event_Details.htm?event_id=1614834</eventDetailsPageUrl>\n </event>\n </metaEvents>\n <channels>\n <channel>\n <channelName>Running</channelName>\n <primaryChannel>true</primaryChannel>\n </channel>\n </channels>\n <eventCategories/>\n <eventDetails>\n <eventDetail>\n <eventDetailsName>Online Registration Closes</eventDetailsName>\n <eventDetailsOrder>1</eventDetailsOrder>\n <eventDetailsValue>Sunday, September 26, 2010</eventDetailsValue>\n </eventDetail>\n </eventDetails>\n <eventDonationLinks/>\n <eventSanctions/>\n <eventUrl>http://san-jose.competitor.com</eventUrl>\n <resultsUrl>http://results.active.com/pages/page.jsp?pubID=3&eventID=1802851</resultsUrl>\n <eventDetailsPageUrl>http://www.active.com/page/Event_Details.htm?event_id=1802851</eventDetailsPageUrl>\n <eventContactUrl>http://www.active.com/event_contact.cfm?event_id=1802851</eventContactUrl>\n <eventImageUrl>http://www.active.com/images/upimages/1802851.jpg</eventImageUrl>\n</event>\n"))
|
43
|
+
r.address["name"].should eql "Downtown"
|
44
|
+
r.address["address"].should eql "Almaden Blvd & Santa Clara Street"
|
45
|
+
r.address["city"].should eql "San Jose"
|
46
|
+
r.address["state"].should eql "California"
|
47
|
+
r.address["zip"].should eql "95192"
|
48
|
+
r.address["lat"].should eql "37.3359"
|
49
|
+
r.address["lng"].should eql "-121.8818"
|
50
|
+
r.address["country"].should eql "USA"
|
51
|
+
end
|
52
|
+
it "should nil empty address data" do
|
53
|
+
r = RegCenter.new(Hash.from_xml("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<event>\n <assetID>7e39ceb4-cebb-471f-ace3-21f697ae9e55</assetID>\n <eventID>1802851</eventID>\n <eventName>Rock 'n' Roll San Jose Half Marathon</eventName>\n <eventDate>2010-10-03T08:00:00-07:00</eventDate>\n <eventTime>08:00 am</eventTime>\n <eventLocation>Downtown</eventLocation>\n <eventAddress> </eventAddress>\n <eventCity>San Jose</eventCity>\n <eventState>California</eventState>\n <eventZip>x95192</eventZip>\n <eventCountry>USA</eventCountry>\n <briefDescription>Registration Fees:* \t \n<p> \n1/2 Marathon \n<p> \n * $85.00 \342\200\223 October 2009- July 31, 2010<br> \n * $100.00 \342\200\223 August 1, 2010- September 26<br> \n * $120.00 \342\200\223 Expo Price<br> \n<p> \n*Registration fees are non-refundable and non-transferable. Fees listed above do not include the Active Network processing fee. NO RACE DAY REGISTRATION</briefDescription>\n <usatSanctioned>false</usatSanctioned>\n <regOnline>false</regOnline>\n <currencyCode>USD</currencyCode>\n <eventTypeID>7</eventTypeID>\n <eventType>Event, Race</eventType>\n <hasEventResults>false</hasEventResults>\n <hasMetaResults>true</hasMetaResults>\n <showMap>true</showMap>\n <longitude>-121.8818</longitude>\n <latitude>37.3359</latitude>\n <eventContactEmail>rnrsj@eliteracing.com</eventContactEmail>\n <eventContactPhone>800-311-1255</eventContactPhone>\n <displayCloseDate>true</displayCloseDate>\n <excludedFromEmailing>false</excludedFromEmailing>\n <metaEventName>Rock 'n' Roll Half Marathon</metaEventName>\n <metaEventID>98616</metaEventID>\n <category>Activities</category>\n <mediaTypes>\n <mediaType>Event</mediaType>\n <mediaType>Event\\Half Marathon</mediaType>\n <mediaType>=difficulty:Advanced</mediaType>\n <mediaType>=difficulty:Beginner</mediaType>\n <mediaType>=difficulty:Intermediate</mediaType>\n </mediaTypes>\n <metaEvents>\n <event>\n <assetID>a401eaf3-6087-4dd2-822c-635a7ae45e74</assetID>\n <eventID>1614834</eventID>\n <eventName>Rock 'n' Roll Half Marathon - San Jose</eventName>\n <eventDate>2009-10-04T08:00:00-07:00</eventDate>\n <eventDetailsPageUrl>http://www.active.com/page/Event_Details.htm?event_id=1614834</eventDetailsPageUrl>\n </event>\n </metaEvents>\n <channels>\n <channel>\n <channelName>Running</channelName>\n <primaryChannel>true</primaryChannel>\n </channel>\n </channels>\n <eventCategories/>\n <eventDetails>\n <eventDetail>\n <eventDetailsName>Online Registration Closes</eventDetailsName>\n <eventDetailsOrder>1</eventDetailsOrder>\n <eventDetailsValue>Sunday, September 26, 2010</eventDetailsValue>\n </eventDetail>\n </eventDetails>\n <eventDonationLinks/>\n <eventSanctions/>\n <eventUrl>http://san-jose.competitor.com</eventUrl>\n <resultsUrl>http://results.active.com/pages/page.jsp?pubID=3&eventID=1802851</resultsUrl>\n <eventDetailsPageUrl>http://www.active.com/page/Event_Details.htm?event_id=1802851</eventDetailsPageUrl>\n <eventContactUrl>http://www.active.com/event_contact.cfm?event_id=1802851</eventContactUrl>\n <eventImageUrl>http://www.active.com/images/upimages/1802851.jpg</eventImageUrl>\n</event>\n"))
|
54
|
+
r.address["address"].should be_nil
|
55
|
+
end
|
56
|
+
it "should nil bad zip code data" do
|
57
|
+
r = RegCenter.new(Hash.from_xml("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<event>\n <assetID>7e39ceb4-cebb-471f-ace3-21f697ae9e55</assetID>\n <eventID>1802851</eventID>\n <eventName>Rock 'n' Roll San Jose Half Marathon</eventName>\n <eventDate>2010-10-03T08:00:00-07:00</eventDate>\n <eventTime>08:00 am</eventTime>\n <eventLocation>Downtown</eventLocation>\n <eventAddress> </eventAddress>\n <eventCity>San Jose</eventCity>\n <eventState>California</eventState>\n <eventZip>x95192</eventZip>\n <eventCountry>USA</eventCountry>\n <briefDescription>Registration Fees:* \t \n<p> \n1/2 Marathon \n<p> \n * $85.00 \342\200\223 October 2009- July 31, 2010<br> \n * $100.00 \342\200\223 August 1, 2010- September 26<br> \n * $120.00 \342\200\223 Expo Price<br> \n<p> \n*Registration fees are non-refundable and non-transferable. Fees listed above do not include the Active Network processing fee. NO RACE DAY REGISTRATION</briefDescription>\n <usatSanctioned>false</usatSanctioned>\n <regOnline>false</regOnline>\n <currencyCode>USD</currencyCode>\n <eventTypeID>7</eventTypeID>\n <eventType>Event, Race</eventType>\n <hasEventResults>false</hasEventResults>\n <hasMetaResults>true</hasMetaResults>\n <showMap>true</showMap>\n <longitude>-121.8818</longitude>\n <latitude>37.3359</latitude>\n <eventContactEmail>rnrsj@eliteracing.com</eventContactEmail>\n <eventContactPhone>800-311-1255</eventContactPhone>\n <displayCloseDate>true</displayCloseDate>\n <excludedFromEmailing>false</excludedFromEmailing>\n <metaEventName>Rock 'n' Roll Half Marathon</metaEventName>\n <metaEventID>98616</metaEventID>\n <category>Activities</category>\n <mediaTypes>\n <mediaType>Event</mediaType>\n <mediaType>Event\\Half Marathon</mediaType>\n <mediaType>=difficulty:Advanced</mediaType>\n <mediaType>=difficulty:Beginner</mediaType>\n <mediaType>=difficulty:Intermediate</mediaType>\n </mediaTypes>\n <metaEvents>\n <event>\n <assetID>a401eaf3-6087-4dd2-822c-635a7ae45e74</assetID>\n <eventID>1614834</eventID>\n <eventName>Rock 'n' Roll Half Marathon - San Jose</eventName>\n <eventDate>2009-10-04T08:00:00-07:00</eventDate>\n <eventDetailsPageUrl>http://www.active.com/page/Event_Details.htm?event_id=1614834</eventDetailsPageUrl>\n </event>\n </metaEvents>\n <channels>\n <channel>\n <channelName>Running</channelName>\n <primaryChannel>true</primaryChannel>\n </channel>\n </channels>\n <eventCategories/>\n <eventDetails>\n <eventDetail>\n <eventDetailsName>Online Registration Closes</eventDetailsName>\n <eventDetailsOrder>1</eventDetailsOrder>\n <eventDetailsValue>Sunday, September 26, 2010</eventDetailsValue>\n </eventDetail>\n </eventDetails>\n <eventDonationLinks/>\n <eventSanctions/>\n <eventUrl>http://san-jose.competitor.com</eventUrl>\n <resultsUrl>http://results.active.com/pages/page.jsp?pubID=3&eventID=1802851</resultsUrl>\n <eventDetailsPageUrl>http://www.active.com/page/Event_Details.htm?event_id=1802851</eventDetailsPageUrl>\n <eventContactUrl>http://www.active.com/event_contact.cfm?event_id=1802851</eventContactUrl>\n <eventImageUrl>http://www.active.com/images/upimages/1802851.jpg</eventImageUrl>\n</event>\n"))
|
58
|
+
r.address["zip"].should be_nil
|
59
|
+
end
|
60
|
+
it "should fix state abbreviations" do
|
61
|
+
r = RegCenter.new(Hash.from_xml("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<event>\n <assetID>7e39ceb4-cebb-471f-ace3-21f697ae9e55</assetID>\n <eventID>1802851</eventID>\n <eventName>Rock 'n' Roll San Jose Half Marathon</eventName>\n <eventDate>2010-10-03T08:00:00-07:00</eventDate>\n <eventTime>08:00 am</eventTime>\n <eventLocation>Downtown</eventLocation>\n <eventAddress> </eventAddress>\n <eventCity>San Jose</eventCity>\n <eventState>CA</eventState>\n <eventZip>x95192</eventZip>\n <eventCountry>USA</eventCountry>\n <briefDescription>Registration Fees:* \t \n<p> \n1/2 Marathon \n<p> \n * $85.00 \342\200\223 October 2009- July 31, 2010<br> \n * $100.00 \342\200\223 August 1, 2010- September 26<br> \n * $120.00 \342\200\223 Expo Price<br> \n<p> \n*Registration fees are non-refundable and non-transferable. Fees listed above do not include the Active Network processing fee. NO RACE DAY REGISTRATION</briefDescription>\n <usatSanctioned>false</usatSanctioned>\n <regOnline>false</regOnline>\n <currencyCode>USD</currencyCode>\n <eventTypeID>7</eventTypeID>\n <eventType>Event, Race</eventType>\n <hasEventResults>false</hasEventResults>\n <hasMetaResults>true</hasMetaResults>\n <showMap>true</showMap>\n <longitude>-121.8818</longitude>\n <latitude>37.3359</latitude>\n <eventContactEmail>rnrsj@eliteracing.com</eventContactEmail>\n <eventContactPhone>800-311-1255</eventContactPhone>\n <displayCloseDate>true</displayCloseDate>\n <excludedFromEmailing>false</excludedFromEmailing>\n <metaEventName>Rock 'n' Roll Half Marathon</metaEventName>\n <metaEventID>98616</metaEventID>\n <category>Activities</category>\n <mediaTypes>\n <mediaType>Event</mediaType>\n <mediaType>Event\\Half Marathon</mediaType>\n <mediaType>=difficulty:Advanced</mediaType>\n <mediaType>=difficulty:Beginner</mediaType>\n <mediaType>=difficulty:Intermediate</mediaType>\n </mediaTypes>\n <metaEvents>\n <event>\n <assetID>a401eaf3-6087-4dd2-822c-635a7ae45e74</assetID>\n <eventID>1614834</eventID>\n <eventName>Rock 'n' Roll Half Marathon - San Jose</eventName>\n <eventDate>2009-10-04T08:00:00-07:00</eventDate>\n <eventDetailsPageUrl>http://www.active.com/page/Event_Details.htm?event_id=1614834</eventDetailsPageUrl>\n </event>\n </metaEvents>\n <channels>\n <channel>\n <channelName>Running</channelName>\n <primaryChannel>true</primaryChannel>\n </channel>\n </channels>\n <eventCategories/>\n <eventDetails>\n <eventDetail>\n <eventDetailsName>Online Registration Closes</eventDetailsName>\n <eventDetailsOrder>1</eventDetailsOrder>\n <eventDetailsValue>Sunday, September 26, 2010</eventDetailsValue>\n </eventDetail>\n </eventDetails>\n <eventDonationLinks/>\n <eventSanctions/>\n <eventUrl>http://san-jose.competitor.com</eventUrl>\n <resultsUrl>http://results.active.com/pages/page.jsp?pubID=3&eventID=1802851</resultsUrl>\n <eventDetailsPageUrl>http://www.active.com/page/Event_Details.htm?event_id=1802851</eventDetailsPageUrl>\n <eventContactUrl>http://www.active.com/event_contact.cfm?event_id=1802851</eventContactUrl>\n <eventImageUrl>http://www.active.com/images/upimages/1802851.jpg</eventImageUrl>\n</event>\n"))
|
62
|
+
r.address["state"].should eql "California"
|
63
|
+
end
|
64
|
+
|
65
|
+
it "should have a nil user email" do
|
66
|
+
r = RegCenter.new(Hash.from_xml("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<event>\n <assetID>7e39ceb4-cebb-471f-ace3-21f697ae9e55</assetID>\n <eventID>1802851</eventID>\n <eventName>Rock 'n' Roll San Jose Half Marathon</eventName>\n <eventDate>2010-10-03T08:00:00-07:00</eventDate>\n <eventTime>08:00 am</eventTime>\n <eventLocation>Downtown</eventLocation>\n <eventAddress> </eventAddress>\n <eventCity>San Jose</eventCity>\n <eventState>CA</eventState>\n <eventZip>x95192</eventZip>\n <eventCountry>USA</eventCountry>\n <briefDescription>Registration Fees:* \t \n<p> \n1/2 Marathon \n<p> \n * $85.00 \342\200\223 October 2009- July 31, 2010<br> \n * $100.00 \342\200\223 August 1, 2010- September 26<br> \n * $120.00 \342\200\223 Expo Price<br> \n<p> \n*Registration fees are non-refundable and non-transferable. Fees listed above do not include the Active Network processing fee. NO RACE DAY REGISTRATION</briefDescription>\n <usatSanctioned>false</usatSanctioned>\n <regOnline>false</regOnline>\n <currencyCode>USD</currencyCode>\n <eventTypeID>7</eventTypeID>\n <eventType>Event, Race</eventType>\n <hasEventResults>false</hasEventResults>\n <hasMetaResults>true</hasMetaResults>\n <showMap>true</showMap>\n <longitude>-121.8818</longitude>\n <latitude>37.3359</latitude>\n <eventContactPhone>800-311-1255</eventContactPhone>\n <displayCloseDate>true</displayCloseDate>\n <excludedFromEmailing>false</excludedFromEmailing>\n <metaEventName>Rock 'n' Roll Half Marathon</metaEventName>\n <metaEventID>98616</metaEventID>\n <category>Activities</category>\n <mediaTypes>\n <mediaType>Event</mediaType>\n <mediaType>Event\\Half Marathon</mediaType>\n <mediaType>=difficulty:Advanced</mediaType>\n <mediaType>=difficulty:Beginner</mediaType>\n <mediaType>=difficulty:Intermediate</mediaType>\n </mediaTypes>\n <metaEvents>\n <event>\n <assetID>a401eaf3-6087-4dd2-822c-635a7ae45e74</assetID>\n <eventID>1614834</eventID>\n <eventName>Rock 'n' Roll Half Marathon - San Jose</eventName>\n <eventDate>2009-10-04T08:00:00-07:00</eventDate>\n <eventDetailsPageUrl>http://www.active.com/page/Event_Details.htm?event_id=1614834</eventDetailsPageUrl>\n </event>\n </metaEvents>\n <channels>\n <channel>\n <channelName>Running</channelName>\n <primaryChannel>true</primaryChannel>\n </channel>\n </channels>\n <eventCategories/>\n <eventDetails>\n <eventDetail>\n <eventDetailsName>Online Registration Closes</eventDetailsName>\n <eventDetailsOrder>1</eventDetailsOrder>\n <eventDetailsValue>Sunday, September 26, 2010</eventDetailsValue>\n </eventDetail>\n </eventDetails>\n <eventDonationLinks/>\n <eventSanctions/>\n <eventUrl>http://san-jose.competitor.com</eventUrl>\n <resultsUrl>http://results.active.com/pages/page.jsp?pubID=3&eventID=1802851</resultsUrl>\n <eventDetailsPageUrl>http://www.active.com/page/Event_Details.htm?event_id=1802851</eventDetailsPageUrl>\n <eventContactUrl>http://www.active.com/event_contact.cfm?event_id=1802851</eventContactUrl>\n <eventImageUrl>http://www.active.com/images/upimages/1802851.jpg</eventImageUrl>\n</event>\n"))
|
67
|
+
r.user.email.should be_nil
|
68
|
+
end
|
69
|
+
it "should have a nil user email" do
|
70
|
+
r = RegCenter.new(Hash.from_xml("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<event>\n <assetID>7e39ceb4-cebb-471f-ace3-21f697ae9e55</assetID>\n <eventID>1802851</eventID>\n <eventName>Rock 'n' Roll San Jose Half Marathon</eventName>\n <eventDate>2010-10-03T08:00:00-07:00</eventDate>\n <eventTime>08:00 am</eventTime>\n <eventLocation>Downtown</eventLocation>\n <eventAddress> </eventAddress>\n <eventCity>San Jose</eventCity>\n <eventState>CA</eventState>\n <eventZip>x95192</eventZip>\n <eventCountry>USA</eventCountry>\n <briefDescription>Registration Fees:* \t \n<p> \n1/2 Marathon \n<p> \n * $85.00 \342\200\223 October 2009- July 31, 2010<br> \n * $100.00 \342\200\223 August 1, 2010- September 26<br> \n * $120.00 \342\200\223 Expo Price<br> \n<p> \n*Registration fees are non-refundable and non-transferable. Fees listed above do not include the Active Network processing fee. NO RACE DAY REGISTRATION</briefDescription>\n <usatSanctioned>false</usatSanctioned>\n <regOnline>false</regOnline>\n <currencyCode>USD</currencyCode>\n <eventTypeID>7</eventTypeID>\n <eventType>Event, Race</eventType>\n <hasEventResults>false</hasEventResults>\n <hasMetaResults>true</hasMetaResults>\n <showMap>true</showMap>\n <longitude>-121.8818</longitude>\n <latitude>37.3359</latitude>\n <eventContactPhone>800-311-1255</eventContactPhone>\n <displayCloseDate>true</displayCloseDate>\n <excludedFromEmailing>false</excludedFromEmailing>\n <metaEventName>Rock 'n' Roll Half Marathon</metaEventName>\n <metaEventID>98616</metaEventID>\n <category>Activities</category>\n <mediaTypes>\n <mediaType>Event</mediaType>\n <mediaType>Event\\Half Marathon</mediaType>\n <mediaType>=difficulty:Advanced</mediaType>\n <mediaType>=difficulty:Beginner</mediaType>\n <mediaType>=difficulty:Intermediate</mediaType>\n </mediaTypes>\n <metaEvents>\n <event>\n <assetID>a401eaf3-6087-4dd2-822c-635a7ae45e74</assetID>\n <eventID>1614834</eventID>\n <eventName>Rock 'n' Roll Half Marathon - San Jose</eventName>\n <eventDate>2009-10-04T08:00:00-07:00</eventDate>\n <eventDetailsPageUrl>http://www.active.com/page/Event_Details.htm?event_id=1614834</eventDetailsPageUrl>\n </event>\n </metaEvents>\n <channels>\n <channel>\n <channelName>Running</channelName>\n <primaryChannel>true</primaryChannel>\n </channel>\n </channels>\n <eventCategories/>\n <eventDetails>\n <eventDetail>\n <eventDetailsName>Online Registration Closes</eventDetailsName>\n <eventDetailsOrder>1</eventDetailsOrder>\n <eventDetailsValue>Sunday, September 26, 2010</eventDetailsValue>\n </eventDetail>\n </eventDetails>\n <eventDonationLinks/>\n <eventSanctions/>\n <eventUrl>http://san-jose.competitor.com</eventUrl>\n <resultsUrl>http://results.active.com/pages/page.jsp?pubID=3&eventID=1802851</resultsUrl>\n <eventDetailsPageUrl>http://www.active.com/page/Event_Details.htm?event_id=1802851</eventDetailsPageUrl>\n <eventContactUrl>http://www.active.com/event_contact.cfm?event_id=1802851</eventContactUrl>\n <eventImageUrl>http://www.active.com/images/upimages/1802851.jpg</eventImageUrl>\n</event>\n"))
|
71
|
+
r.user.email.should be_nil
|
72
|
+
end
|
73
|
+
it "should have a nil user email when the email is not valid" do
|
74
|
+
r = RegCenter.new(Hash.from_xml("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<event>\n <assetID>7e39ceb4-cebb-471f-ace3-21f697ae9e55</assetID>\n <eventID>1802851</eventID>\n <eventName>Rock 'n' Roll San Jose Half Marathon</eventName>\n <eventDate>2010-10-03T08:00:00-07:00</eventDate>\n <eventTime>08:00 am</eventTime>\n <eventLocation>Downtown</eventLocation>\n <eventAddress> </eventAddress>\n <eventCity>San Jose</eventCity>\n <eventState>CA</eventState>\n <eventZip>x95192</eventZip>\n <eventCountry>USA</eventCountry>\n <briefDescription>Registration Fees:* \t \n<p> \n1/2 Marathon \n<p> \n * $85.00 \342\200\223 October 2009- July 31, 2010<br> \n * $100.00 \342\200\223 August 1, 2010- September 26<br> \n * $120.00 \342\200\223 Expo Price<br> \n<p> \n*Registration fees are non-refundable and non-transferable. Fees listed above do not include the Active Network processing fee. NO RACE DAY REGISTRATION</briefDescription>\n <usatSanctioned>false</usatSanctioned>\n <regOnline>false</regOnline>\n <currencyCode>USD</currencyCode>\n <eventTypeID>7</eventTypeID>\n <eventType>Event, Race</eventType>\n <hasEventResults>false</hasEventResults>\n <hasMetaResults>true</hasMetaResults>\n <showMap>true</showMap>\n <longitude>-121.8818</longitude>\n <latitude>37.3359</latitude>\n <eventContactEmail>rnrsjeliteracingcom</eventContactEmail>\n <eventContactPhone>800-311-1255</eventContactPhone>\n <displayCloseDate>true</displayCloseDate>\n <excludedFromEmailing>false</excludedFromEmailing>\n <metaEventName>Rock 'n' Roll Half Marathon</metaEventName>\n <metaEventID>98616</metaEventID>\n <category>Activities</category>\n <mediaTypes>\n <mediaType>Event</mediaType>\n <mediaType>Event\\Half Marathon</mediaType>\n <mediaType>=difficulty:Advanced</mediaType>\n <mediaType>=difficulty:Beginner</mediaType>\n <mediaType>=difficulty:Intermediate</mediaType>\n </mediaTypes>\n <metaEvents>\n <event>\n <assetID>a401eaf3-6087-4dd2-822c-635a7ae45e74</assetID>\n <eventID>1614834</eventID>\n <eventName>Rock 'n' Roll Half Marathon - San Jose</eventName>\n <eventDate>2009-10-04T08:00:00-07:00</eventDate>\n <eventDetailsPageUrl>http://www.active.com/page/Event_Details.htm?event_id=1614834</eventDetailsPageUrl>\n </event>\n </metaEvents>\n <channels>\n <channel>\n <channelName>Running</channelName>\n <primaryChannel>true</primaryChannel>\n </channel>\n </channels>\n <eventCategories/>\n <eventDetails>\n <eventDetail>\n <eventDetailsName>Online Registration Closes</eventDetailsName>\n <eventDetailsOrder>1</eventDetailsOrder>\n <eventDetailsValue>Sunday, September 26, 2010</eventDetailsValue>\n </eventDetail>\n </eventDetails>\n <eventDonationLinks/>\n <eventSanctions/>\n <eventUrl>http://san-jose.competitor.com</eventUrl>\n <resultsUrl>http://results.active.com/pages/page.jsp?pubID=3&eventID=1802851</resultsUrl>\n <eventDetailsPageUrl>http://www.active.com/page/Event_Details.htm?event_id=1802851</eventDetailsPageUrl>\n <eventContactUrl>http://www.active.com/event_contact.cfm?event_id=1802851</eventContactUrl>\n <eventImageUrl>http://www.active.com/images/upimages/1802851.jpg</eventImageUrl>\n</event>\n"))
|
75
|
+
r.user.email.should be_nil
|
76
|
+
end
|
77
|
+
it "should have a valid user email" do
|
78
|
+
r = RegCenter.new(Hash.from_xml("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<event>\n <assetID>7e39ceb4-cebb-471f-ace3-21f697ae9e55</assetID>\n <eventID>1802851</eventID>\n <eventName>Rock 'n' Roll San Jose Half Marathon</eventName>\n <eventDate>2010-10-03T08:00:00-07:00</eventDate>\n <eventTime>08:00 am</eventTime>\n <eventLocation>Downtown</eventLocation>\n <eventAddress> </eventAddress>\n <eventCity>San Jose</eventCity>\n <eventState>California</eventState>\n <eventZip>x95192</eventZip>\n <eventCountry>USA</eventCountry>\n <briefDescription>Registration Fees:* \t \n<p> \n1/2 Marathon \n<p> \n * $85.00 \342\200\223 October 2009- July 31, 2010<br> \n * $100.00 \342\200\223 August 1, 2010- September 26<br> \n * $120.00 \342\200\223 Expo Price<br> \n<p> \n*Registration fees are non-refundable and non-transferable. Fees listed above do not include the Active Network processing fee. NO RACE DAY REGISTRATION</briefDescription>\n <usatSanctioned>false</usatSanctioned>\n <regOnline>false</regOnline>\n <currencyCode>USD</currencyCode>\n <eventTypeID>7</eventTypeID>\n <eventType>Event, Race</eventType>\n <hasEventResults>false</hasEventResults>\n <hasMetaResults>true</hasMetaResults>\n <showMap>true</showMap>\n <longitude>-121.8818</longitude>\n <latitude>37.3359</latitude>\n <eventContactEmail>rnrsj@eliteracing.com</eventContactEmail>\n <eventContactPhone>800-311-1255</eventContactPhone>\n <displayCloseDate>true</displayCloseDate>\n <excludedFromEmailing>false</excludedFromEmailing>\n <metaEventName>Rock 'n' Roll Half Marathon</metaEventName>\n <metaEventID>98616</metaEventID>\n <category>Activities</category>\n <mediaTypes>\n <mediaType>Event</mediaType>\n <mediaType>Event\\Half Marathon</mediaType>\n <mediaType>=difficulty:Advanced</mediaType>\n <mediaType>=difficulty:Beginner</mediaType>\n <mediaType>=difficulty:Intermediate</mediaType>\n </mediaTypes>\n <metaEvents>\n <event>\n <assetID>a401eaf3-6087-4dd2-822c-635a7ae45e74</assetID>\n <eventID>1614834</eventID>\n <eventName>Rock 'n' Roll Half Marathon - San Jose</eventName>\n <eventDate>2009-10-04T08:00:00-07:00</eventDate>\n <eventDetailsPageUrl>http://www.active.com/page/Event_Details.htm?event_id=1614834</eventDetailsPageUrl>\n </event>\n </metaEvents>\n <channels>\n <channel>\n <channelName>Running</channelName>\n <primaryChannel>true</primaryChannel>\n </channel>\n </channels>\n <eventCategories/>\n <eventDetails>\n <eventDetail>\n <eventDetailsName>Online Registration Closes</eventDetailsName>\n <eventDetailsOrder>1</eventDetailsOrder>\n <eventDetailsValue>Sunday, September 26, 2010</eventDetailsValue>\n </eventDetail>\n </eventDetails>\n <eventDonationLinks/>\n <eventSanctions/>\n <eventUrl>http://san-jose.competitor.com</eventUrl>\n <resultsUrl>http://results.active.com/pages/page.jsp?pubID=3&eventID=1802851</resultsUrl>\n <eventDetailsPageUrl>http://www.active.com/page/Event_Details.htm?event_id=1802851</eventDetailsPageUrl>\n <eventContactUrl>http://www.active.com/event_contact.cfm?event_id=1802851</eventContactUrl>\n <eventImageUrl>http://www.active.com/images/upimages/1802851.jpg</eventImageUrl>\n</event>\n"))
|
79
|
+
r.user.email.should eql("rnrsj@eliteracing.com")
|
80
|
+
end
|
81
|
+
|
82
|
+
|
22
83
|
it "should set find by id" do
|
23
84
|
a = RegCenter.find_by_id(@valid_id)
|
24
85
|
a.data.should_not be_nil
|
@@ -34,10 +95,6 @@ describe RegCenter do
|
|
34
95
|
a = RegCenter.find_by_id(@valid_id)
|
35
96
|
a.data["event"].should_not be_nil
|
36
97
|
end
|
37
|
-
it "should have an address Hash" do
|
38
|
-
a = RegCenter.find_by_id(@valid_id)
|
39
|
-
a.address.should be_an_instance_of(HashWithIndifferentAccess)
|
40
|
-
end
|
41
98
|
it "should have a desc String" do
|
42
99
|
a = RegCenter.find_by_id(@valid_id)
|
43
100
|
a.desc.should be_an_instance_of(String)
|
data/spec/validators_spec.rb
CHANGED
@@ -10,6 +10,7 @@ include Active::Services
|
|
10
10
|
describe Validators do
|
11
11
|
|
12
12
|
it "should find a valid email address" do
|
13
|
+
Validators.email("Jeremy.Sheppard@co.kent.de.u").should be_true
|
13
14
|
Validators.email("diney.bom-fim_23db@google.com").should be_true
|
14
15
|
Validators.email("jspooner@gmail.com").should be_true
|
15
16
|
Validators.email("jspooner@ga").should be_false
|
data/version.txt
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.23
|
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: Active
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
+
hash: 49
|
4
5
|
prerelease: false
|
5
6
|
segments:
|
6
7
|
- 0
|
7
8
|
- 0
|
8
|
-
-
|
9
|
-
version: 0.0.
|
9
|
+
- 23
|
10
|
+
version: 0.0.23
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- Jonathan Spooner, Brian Levine
|
@@ -14,16 +15,18 @@ autorequire:
|
|
14
15
|
bindir: bin
|
15
16
|
cert_chain: []
|
16
17
|
|
17
|
-
date: 2010-10-
|
18
|
+
date: 2010-10-07 00:00:00 -07:00
|
18
19
|
default_executable:
|
19
20
|
dependencies:
|
20
21
|
- !ruby/object:Gem::Dependency
|
21
22
|
name: savon
|
22
23
|
prerelease: false
|
23
24
|
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
24
26
|
requirements:
|
25
27
|
- - ">="
|
26
28
|
- !ruby/object:Gem::Version
|
29
|
+
hash: 17
|
27
30
|
segments:
|
28
31
|
- 0
|
29
32
|
- 7
|
@@ -35,9 +38,11 @@ dependencies:
|
|
35
38
|
name: dalli
|
36
39
|
prerelease: false
|
37
40
|
requirement: &id002 !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
38
42
|
requirements:
|
39
43
|
- - ">="
|
40
44
|
- !ruby/object:Gem::Version
|
45
|
+
hash: 43
|
41
46
|
segments:
|
42
47
|
- 0
|
43
48
|
- 9
|
@@ -49,9 +54,11 @@ dependencies:
|
|
49
54
|
name: bones
|
50
55
|
prerelease: false
|
51
56
|
requirement: &id003 !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
52
58
|
requirements:
|
53
59
|
- - ">="
|
54
60
|
- !ruby/object:Gem::Version
|
61
|
+
hash: 25
|
55
62
|
segments:
|
56
63
|
- 3
|
57
64
|
- 4
|
@@ -69,20 +76,18 @@ extra_rdoc_files:
|
|
69
76
|
- History.txt
|
70
77
|
- README.txt
|
71
78
|
- bin/Active
|
72
|
-
- lib/.DS_Store
|
73
|
-
- lib/services/.DS_Store
|
74
79
|
- lib/services/search.txt
|
75
80
|
- version.txt
|
76
81
|
files:
|
82
|
+
- .bnsignore
|
77
83
|
- Active.gemspec
|
78
84
|
- History.txt
|
79
85
|
- README.txt
|
80
86
|
- Rakefile
|
81
87
|
- bin/Active
|
82
|
-
- lib/.DS_Store
|
83
88
|
- lib/Active.rb
|
84
|
-
- lib/services/.DS_Store
|
85
89
|
- lib/services/IActivity.rb
|
90
|
+
- lib/services/_ats.rb
|
86
91
|
- lib/services/active_works.rb
|
87
92
|
- lib/services/activity.rb
|
88
93
|
- lib/services/address.rb
|
@@ -120,23 +125,27 @@ rdoc_options:
|
|
120
125
|
require_paths:
|
121
126
|
- lib
|
122
127
|
required_ruby_version: !ruby/object:Gem::Requirement
|
128
|
+
none: false
|
123
129
|
requirements:
|
124
130
|
- - ">="
|
125
131
|
- !ruby/object:Gem::Version
|
132
|
+
hash: 3
|
126
133
|
segments:
|
127
134
|
- 0
|
128
135
|
version: "0"
|
129
136
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
130
138
|
requirements:
|
131
139
|
- - ">="
|
132
140
|
- !ruby/object:Gem::Version
|
141
|
+
hash: 3
|
133
142
|
segments:
|
134
143
|
- 0
|
135
144
|
version: "0"
|
136
145
|
requirements: []
|
137
146
|
|
138
147
|
rubyforge_project: Active
|
139
|
-
rubygems_version: 1.3.
|
148
|
+
rubygems_version: 1.3.7
|
140
149
|
signing_key:
|
141
150
|
specification_version: 3
|
142
151
|
summary: Search api for Active Network
|
data/lib/.DS_Store
DELETED
Binary file
|
data/lib/services/.DS_Store
DELETED
Binary file
|