Active 0.0.14 → 0.0.17
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/Rakefile +1 -0
- data/lib/Active.rb +15 -0
- data/lib/services/IActivity.rb +34 -17
- data/lib/services/active_works.rb +5 -4
- data/lib/services/activity.rb +253 -70
- data/lib/services/address.rb +17 -0
- data/lib/services/ats.rb +82 -35
- data/lib/services/gsa.rb +153 -0
- data/lib/services/reg_center.rb +43 -21
- data/lib/services/sanitize.rb +108 -0
- data/lib/services/search.rb +101 -18
- data/lib/services/search.txt +403 -0
- data/lib/services/validators.rb +91 -0
- data/spec/Active_spec.rb +24 -1
- data/spec/activeworks_spec.rb +1 -1
- data/spec/activity_spec.rb +101 -170
- data/spec/ats_spec.rb +9 -3
- data/spec/gsa_spec.rb +123 -0
- data/spec/reg_spec.rb +17 -8
- data/spec/search_memcached_spec.rb +49 -0
- data/spec/search_spec.rb +404 -356
- data/version.txt +1 -1
- metadata +30 -6
@@ -0,0 +1,91 @@
|
|
1
|
+
module Active
|
2
|
+
module Services
|
3
|
+
class Validators
|
4
|
+
|
5
|
+
STATES = [
|
6
|
+
[ "Alabama", "AL" ],
|
7
|
+
[ "Alaska", "AK" ],
|
8
|
+
[ "Arizona", "AZ" ],
|
9
|
+
[ "Arkansas", "AR" ],
|
10
|
+
[ "California", "CA" ],
|
11
|
+
[ "Colorado", "CO" ],
|
12
|
+
[ "Connecticut", "CT" ],
|
13
|
+
[ "Delaware", "DE" ],
|
14
|
+
[ "District Of Columbia", "DC" ],
|
15
|
+
[ "Florida", "FL" ],
|
16
|
+
[ "Georgia", "GA" ],
|
17
|
+
[ "Hawaii", "HI" ],
|
18
|
+
[ "Idaho", "ID" ],
|
19
|
+
[ "Illinois", "IL" ],
|
20
|
+
[ "Indiana", "IN" ],
|
21
|
+
[ "Iowa", "IA" ],
|
22
|
+
[ "Kansas", "KS" ],
|
23
|
+
[ "Kentucky", "KY" ],
|
24
|
+
[ "Louisiana", "LA" ],
|
25
|
+
[ "Maine", "ME" ],
|
26
|
+
[ "Maryland", "MD" ],
|
27
|
+
[ "Massachusetts", "MA" ],
|
28
|
+
[ "Michigan", "MI" ],
|
29
|
+
[ "Minnesota", "MN" ],
|
30
|
+
[ "Mississippi", "MS" ],
|
31
|
+
[ "Missouri", "MO" ],
|
32
|
+
[ "Montana", "MT" ],
|
33
|
+
[ "Nebraska", "NE" ],
|
34
|
+
[ "Nevada", "NV" ],
|
35
|
+
[ "New Hampshire", "NH" ],
|
36
|
+
[ "New Jersey", "NJ" ],
|
37
|
+
[ "New Mexico", "NM" ],
|
38
|
+
[ "New York", "NY" ],
|
39
|
+
[ "North Carolina", "NC" ],
|
40
|
+
[ "North Dakota", "ND" ],
|
41
|
+
[ "Ohio", "OH" ],
|
42
|
+
[ "Oklahoma", "OK" ],
|
43
|
+
[ "Oregon", "OR" ],
|
44
|
+
[ "Pennsylvania", "PA" ],
|
45
|
+
[ "Rhode Island", "RI" ],
|
46
|
+
[ "South Carolina", "SC" ],
|
47
|
+
[ "South Dakota", "SD" ],
|
48
|
+
[ "Tennessee", "TN" ],
|
49
|
+
[ "Texas", "TX" ],
|
50
|
+
[ "Utah", "UT" ],
|
51
|
+
[ "Vermont", "VT" ],
|
52
|
+
[ "Virginia", "VA" ],
|
53
|
+
[ "Washington", "WA" ],
|
54
|
+
[ "West Virginia", "WV" ],
|
55
|
+
[ "Wisconsin", "WI" ],
|
56
|
+
[ "Wyoming", "WY" ]
|
57
|
+
]
|
58
|
+
|
59
|
+
def self.full_name(abbr)
|
60
|
+
STATES.find do |i|
|
61
|
+
if i[1] == abbr.upcase
|
62
|
+
return i[0]
|
63
|
+
end
|
64
|
+
end
|
65
|
+
return nil
|
66
|
+
end
|
67
|
+
|
68
|
+
def self.valid_state(name)
|
69
|
+
STATES.find do |i|
|
70
|
+
if i[0].upcase==name.strip.upcase
|
71
|
+
return i[0]
|
72
|
+
elsif i[1] == name.upcase
|
73
|
+
return i[0]
|
74
|
+
end
|
75
|
+
end
|
76
|
+
return nil
|
77
|
+
end
|
78
|
+
|
79
|
+
# clean zip
|
80
|
+
# (http://geekswithblogs.net/MainaD/archive/2007/12/03/117321.aspx)
|
81
|
+
def self.valid_zip(zip)
|
82
|
+
if zip!="00000" && zip.to_s.strip=~/(^\d{5}(-\d{4})?$)|(^[ABCEGHJKLMNPRSTVXY]{1}\d{1}[A-Z]{1} *\d{1}[A-Z]{1}\d{1}$)/
|
83
|
+
return zip.to_s.strip
|
84
|
+
else
|
85
|
+
return nil
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
end
|
91
|
+
end
|
data/spec/Active_spec.rb
CHANGED
@@ -1,6 +1,29 @@
|
|
1
|
-
|
1
|
+
# Require the spec helper relative to this file
|
2
2
|
require File.join(File.dirname(__FILE__), %w[spec_helper])
|
3
|
+
require File.join(File.dirname(__FILE__), %w[custom_matchers_spec])
|
4
|
+
require File.join(File.dirname(__FILE__), %w[ .. lib services search])
|
5
|
+
require File.join(File.dirname(__FILE__), %w[ .. lib services activity])
|
6
|
+
include Active
|
7
|
+
include Active::Services
|
8
|
+
|
3
9
|
|
4
10
|
describe Active do
|
11
|
+
|
12
|
+
it "shouls set memcache" do
|
13
|
+
Active.CACHE.should be_nil
|
14
|
+
Active.memcache_host "localhost:11211"
|
15
|
+
Active.CACHE.should_not be_nil
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should have a working memcache" do
|
19
|
+
Active.memcache_host "localhost:11211"
|
20
|
+
Active.CACHE.set("active","rocks");
|
21
|
+
Active.CACHE.get("active").should eql("rocks")
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should cache the data" do
|
25
|
+
Active.memcache_host "localhost:11211"
|
26
|
+
end
|
27
|
+
|
5
28
|
end
|
6
29
|
|
data/spec/activeworks_spec.rb
CHANGED
@@ -26,7 +26,7 @@ describe ActiveWorks do
|
|
26
26
|
end
|
27
27
|
it "should have an address Hash" do
|
28
28
|
a = ActiveWorks.find_by_id(@valid_id)
|
29
|
-
a.address.should be_an_instance_of(
|
29
|
+
a.address.should be_an_instance_of(HashWithIndifferentAccess)
|
30
30
|
end
|
31
31
|
it "should have a desc" do
|
32
32
|
a = ActiveWorks.find_by_id(@valid_id)
|
data/spec/activity_spec.rb
CHANGED
@@ -8,180 +8,111 @@ require File.join(File.dirname(__FILE__), %w[ .. lib services IActivity])
|
|
8
8
|
include Active::Services
|
9
9
|
|
10
10
|
describe Activity do
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
:url => "http://www.active.com/running/lake-buena-vista-fl/walt-disney-world-marathon-2011",
|
15
|
-
:language => "en",
|
16
|
-
:meta => {
|
17
|
-
:trackbackurl => "http://www.active.com/running/lake-buena-vista-fl/walt-disney-world-marathon-2011",
|
18
|
-
:substitutionUrl => "1820830",
|
19
|
-
:assetId => ['3584C7D6-14FD-4FD1-BD07-C2A9B2925B6C','3584c7d6-14fd-4fd1-bd07-c2a9b2925b6c'],
|
20
|
-
:channel => ['action_sports','running'],
|
21
|
-
:city => "Lake Buena Vista",
|
22
|
-
:latitude => "28.39494",
|
23
|
-
:category => "Activities",
|
24
|
-
:zip => "32830",
|
25
|
-
:eventId => "1820830",
|
26
|
-
:eventLongitude => "-81.56783",
|
27
|
-
:location => "Walt Disney World Resort",
|
28
|
-
:eventDate => "2011-01-09T05:40:00-08:00",
|
29
|
-
:country => 'United States',
|
30
|
-
:participationCriteria => 'Adult',
|
31
|
-
:locationName => "Walt Disney World Resort",
|
32
|
-
:sortDate => "2001-01-09",
|
33
|
-
:lastModifiedDate => "2010-08-17",
|
34
|
-
:image1 => 'http://www.active.com/images/events/hotrace.gif',
|
35
|
-
:lastModifiedDateTime => "2010-08-17 21:00:03.77",
|
36
|
-
:eventState => "Florida",
|
37
|
-
:contactPhone => "407-938-3398",
|
38
|
-
:startDate => "2011-01-09",
|
39
|
-
:onlineDonationAvailable => "true",
|
40
|
-
:assetTypeId => "3BF82BBE-CF88-4E8C-A56F-78F5CE87E4C6",
|
41
|
-
:UpdateDateTime => "8/18/2010 10:16:26 AM",
|
42
|
-
:contactEmail => 'wdw.sports.marathon.endurance@disneysports.com',
|
43
|
-
:longitude => "-81.56783",
|
44
|
-
:description => "This is the description",
|
45
|
-
:startTime => "5:40:00",
|
46
|
-
:endTime => "5:40:00",
|
47
|
-
:eventZip => "32830",
|
48
|
-
:onlineRegistrationAvailable => "true",
|
49
|
-
:onlineMembershipAvailable => "false",
|
50
|
-
:endDate => "2011-01-09",
|
51
|
-
:keywords => "Event",
|
52
|
-
:eventLatitude => "28.39494",
|
53
|
-
:state => "Florida"
|
54
|
-
},
|
55
|
-
:escapedUrl => 'http://www.active.com/running/lake-buena-vista-fl/walt-disney-world-marathon-2011',
|
56
|
-
:summary => "This is the summary."
|
57
|
-
}
|
58
|
-
end
|
59
|
-
|
60
|
-
it "should strip out html from the title" do
|
61
|
-
pending
|
62
|
-
a = Activity.new(@valid_attributes)
|
63
|
-
a.title.should eql("2011 Walt Disney World Marathon")
|
64
|
-
end
|
65
|
-
|
66
|
-
it "should strip out unicode from the title"
|
67
|
-
|
68
|
-
it "should use the first group if title contains pipes."
|
69
|
-
|
70
|
-
it "should have 2 channels" do
|
71
|
-
a = Activity.new(@valid_attributes)
|
72
|
-
a.categories.should be_an_instance_of(Array)
|
73
|
-
a.should have(2).categories
|
74
|
-
end
|
75
|
-
|
76
|
-
it "should be a valid activity" do
|
77
|
-
a = Activity.new(@valid_attributes)
|
78
|
-
a.url.should eql("http://www.active.com/running/lake-buena-vista-fl/walt-disney-world-marathon-2011")
|
79
|
-
a.categories.include?("action_sports").should be_true
|
80
|
-
a.asset_id.should eql("3584C7D6-14FD-4FD1-BD07-C2A9B2925B6C")
|
81
|
-
|
82
|
-
a.title.should_not be_nil
|
83
|
-
a.start_date.should_not be_nil
|
84
|
-
a.end_date.should_not be_nil
|
85
|
-
a.categories.should_not be_nil
|
86
|
-
a.desc.should_not be_nil
|
87
|
-
a.start_time.should_not be_nil
|
88
|
-
a.end_time.should_not be_nil
|
89
|
-
|
90
|
-
a.start_date.should be_a_kind_of(Date)
|
91
|
-
a.end_date.should be_a_kind_of(Date)
|
92
|
-
|
93
|
-
a.address.should_not be_nil
|
94
|
-
a.address[:city].should_not be_nil
|
95
|
-
a.address[:state].should_not be_nil
|
96
|
-
a.address[:country].should_not be_nil
|
97
|
-
a.address[:zip].should_not be_nil
|
98
|
-
a.address[:lat].should_not be_nil
|
99
|
-
a.address[:lng].should_not be_nil
|
100
|
-
a.address[:name].should_not be_nil
|
101
|
-
end
|
102
|
-
|
103
|
-
describe "Activity url" do
|
104
|
-
it "should have a valid seo url: type 1" do
|
105
|
-
a = Activity.new({ :url => "http://active.com/foo.php", :meta => { :trackbackurl => "http://active.com/running/funrun", :seourl => "http://foo" } })
|
106
|
-
a.url.should == "http://active.com/running/funrun"
|
11
|
+
describe "Creating an activity from a GSA object" do
|
12
|
+
before(:each) do
|
13
|
+
@a = Activity.new( GSA.new(JSON.parse('{"escapedUrl":"http://www.active.com/triathlon/oceanside-ca/rohto-ironman-703-california-2011","language":"en","title":"2011 Rohto Ironman 70.3 California | Oceanside, California \u003cb\u003e...\u003c/b\u003e","url":"http://www.active.com/triathlon/oceanside-ca/rohto-ironman-703-california-2011","summary":"","meta":{"eventDate":"2011-04-02T00:00:00-07:00","location":"Oceanside Harbor","tag":["event:10","Triathlon:10"],"eventLongitude":"-117.3586","endDate":"2011-04-02","locationName":"Oceanside Harbor","lastModifiedDateTime":"2010-09-30 06:16:05.107","splitMediaType":["Event","Ironman","Long Course"],"endTime":"0:00:00","city":"Oceanside","google-site-verification":"","startTime":"0:00:00","eventId":"1838902","description":"","longitude":"-117.3586","substitutionUrl":"1838902","sortDate":"2001-04-02","eventState":"California","eventLatitude":"33.19783","keywords":"Event","eventAddress":"1540 Harbor Drive North","dma":"San Diego","seourl":"http://www.active.com/triathlon/oceanside-ca/rohto-ironman-703-california-2011","country":"United States","category":"Activities","market":"San Diego","contactName":"World Triathlon Corporation","assetTypeId":"3BF82BBE-CF88-4E8C-A56F-78F5CE87E4C6","eventZip":"92054","UpdateDateTime":"9/22/2010 11:46:24 AM","latitude":"33.19783","startDate":"2011-04-02","state":"California","mediaType":["Event","Event\\Ironman","Event\\Long Course"],"estParticipants":"2500","assetId":["77ACABBD-BA83-4C78-925D-CE49DEDDF20C","77acabbd-ba83-4c78-925d-ce49deddf20c"],"participationCriteria":"All","onlineDonationAvailable":"0","assetName":["2011 Rohto Ironman 70.3 California","2011 Rohto Ironman 70.3 California"],"zip":"92054","eventURL":"http://www.ironmancalifornia.com/","contactPhone":"813-868-5940","contactEmail":"california70.3@ironman.com","onlineMembershipAvailable":"0","trackbackurl":"http://www.active.com/triathlon/oceanside-ca/rohto-ironman-703-california-2011","onlineRegistrationAvailable":"true","image1":"http://www.active.com/images/events/hotrace.gif","lastModifiedDate":"2010-09-30","channel":"Triathlon"}}')) )
|
107
14
|
end
|
108
|
-
it "should have
|
109
|
-
a
|
110
|
-
a.
|
15
|
+
it "should have asset ids" do
|
16
|
+
@a.asset_id.should_not be_nil
|
17
|
+
@a.asset_id.should eql("77ACABBD-BA83-4C78-925D-CE49DEDDF20C")
|
18
|
+
@a.asset_type_id.should_not be_nil
|
19
|
+
@a.asset_type_id.should eql("3BF82BBE-CF88-4E8C-A56F-78F5CE87E4C6")
|
20
|
+
end
|
21
|
+
it "should have a title" do
|
22
|
+
g = GSA.new(JSON.parse('{"title":"2011 Rohto Ironman 70.3 California\u003cb\u003e...\u003c/b\u003e | Oceanside, California \u003cb\u003e...\u003c/b\u003e"}'))
|
23
|
+
g.source.should eql(:gsa)
|
24
|
+
g.title.should eql("2011 Rohto Ironman 70.3 California")
|
25
|
+
a = Activity.new( g )
|
26
|
+
a.gsa.should_not be_nil
|
27
|
+
a.title.should eql("2011 Rohto Ironman 70.3 California")
|
111
28
|
end
|
112
|
-
|
113
|
-
|
114
|
-
a.
|
29
|
+
# start date
|
30
|
+
it "should have a valid start date" do
|
31
|
+
@a.start_date.should_not be_nil
|
32
|
+
@a.start_date.should be_an_instance_of(DateTime)
|
115
33
|
end
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
it "should retrive the ats data"
|
120
|
-
it "should store the date when ats was"
|
121
|
-
end
|
122
|
-
|
123
|
-
describe "ActiveNet data fetch" do
|
124
|
-
# todo get a list of ActiveNet ids
|
125
|
-
# assetTypeId: FB27C928-54DB-4ECD-B42F-482FC3C8681F
|
126
|
-
# assetTypeName: ActiveNet
|
127
|
-
# assetId: 4C2C70F1-9D53-4ECA-A04C-68A76C3A53F4
|
128
|
-
# assetId: 34DB5609-6697-400D-8C52-0305D479C9C1
|
129
|
-
# assetId: 65B56E1A-5C3E-4D9B-8EA6-0417C07E5956
|
130
|
-
|
131
|
-
|
132
|
-
it "should retrive data from ActiveNet" do
|
133
|
-
# a = Activity.new({})
|
134
|
-
# a.should receive al call to a.get_ats_data
|
135
|
-
# a.rawdata.should be a freaking hash
|
136
|
-
pending
|
34
|
+
it "should have nil is no date" do
|
35
|
+
a = Activity.new( GSA.new(JSON.parse('{"title":"Calabasas Classic 2010 - 5k \u003cb\u003e10k\u003c/b\u003e Runs | Calabasas, California 91302 \u003cb\u003e...\u003c/b\u003e"}')) )
|
36
|
+
a.start_date.should be_nil
|
137
37
|
end
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
end
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
end
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
38
|
+
# end date
|
39
|
+
it "should have a valid end date" do
|
40
|
+
@a.end_date.should_not be_nil
|
41
|
+
@a.end_date.should be_an_instance_of(DateTime)
|
42
|
+
end
|
43
|
+
it "should have nil is no date" do
|
44
|
+
a = Activity.new( GSA.new(JSON.parse('{"title":"Calabasas Classic 2010 - 5k \u003cb\u003e10k\u003c/b\u003e Runs | Calabasas, California 91302 \u003cb\u003e...\u003c/b\u003e"}')) )
|
45
|
+
a.end_date.should be_nil
|
46
|
+
end
|
47
|
+
# start time
|
48
|
+
it "should have a valid start date" do
|
49
|
+
@a.start_time.should_not be_nil
|
50
|
+
@a.start_time.should be_an_instance_of(DateTime)
|
51
|
+
end
|
52
|
+
it "should have nil is no date" do
|
53
|
+
g = GSA.new(JSON.parse('{"title":"Calabasas Classic 2010 - 5k \u003cb\u003e10k\u003c/b\u003e Runs | Calabasas, California 91302 \u003cb\u003e...\u003c/b\u003e"}'))
|
54
|
+
g.start_time.should be_nil
|
55
|
+
end
|
56
|
+
# end time
|
57
|
+
it "should have a valid end date" do
|
58
|
+
@a.start_time.should_not be_nil
|
59
|
+
@a.start_time.should be_an_instance_of(DateTime)
|
60
|
+
end
|
61
|
+
it "should have nil is no date" do
|
62
|
+
g = GSA.new(JSON.parse('{"title":"Calabasas Classic 2010 - 5k \u003cb\u003e10k\u003c/b\u003e Runs | Calabasas, California 91302 \u003cb\u003e...\u003c/b\u003e"}'))
|
63
|
+
g.start_time.should be_nil
|
64
|
+
end
|
65
|
+
# asset_id
|
66
|
+
it "should have nil is no date" do
|
67
|
+
g = Activity.new GSA.new(JSON.parse('{"title":"Calabasas Classic 2010 - 5k \u003cb\u003e10k\u003c/b\u003e Runs | Calabasas, California 91302 \u003cb\u003e...\u003c/b\u003e"}'))
|
68
|
+
g.start_time.should be_nil
|
69
|
+
end
|
70
|
+
it "should have an asset_id" do
|
71
|
+
Activity.new(GSA.new).asset_id.should be_nil
|
72
|
+
@a.asset_id.should_not be_nil
|
73
|
+
end
|
74
|
+
it "should have an asset_type_id" do
|
75
|
+
Activity.new(GSA.new).asset_type_id.should be_nil
|
76
|
+
@a.asset_type_id.should_not be_nil
|
77
|
+
end
|
78
|
+
#address
|
79
|
+
it "should have a full address" do
|
80
|
+
g = Activity.new (GSA.new(JSON.parse('{"title":"Calabasas", "meta":{"location":"Oceanside Harbor","eventLongitude":"-117.3586","locationName":"Oceanside Harbor","eventAddress":"1540 Harbor Drive North", "city":"San Diego", "eventState":"CA", "eventZip":"92121", "latitude":"-22", "longitude":"222", "country":"USA" }}')) )
|
81
|
+
g.address.should_not be_nil
|
82
|
+
g.address[:name].should eql("Oceanside Harbor")
|
83
|
+
g.address[:address].should eql("1540 Harbor Drive North")
|
84
|
+
g.address[:city].should eql("San Diego")
|
85
|
+
g.address[:state].should eql("CA")
|
86
|
+
g.address[:zip].should eql("92121")
|
87
|
+
g.address[:country].should eql("USA")
|
88
|
+
g.address[:lat].should eql("-22")
|
89
|
+
g.address[:lng].should eql("222")
|
90
|
+
end
|
91
|
+
it "should have a partial address that it's full data doesn't live in WORKS or REGCENTER" do
|
92
|
+
g = Activity.new(GSA.new(JSON.parse('{"language":"en", "title":"Zumba Punch Card (Adult) - Oct. (5) | Vista, CA, 92084 |", "url":"http://www.active.com/community-services-class/vista-ca/zumba-punch-card-adult-oct-5-2010", "escapedUrl":"http://www.active.com/community-services-class/vista-ca/zumba-punch-card-adult-oct-5-2010", "meta":{"city":"Vista", "assetId":"3ae995d9-5c16-4176-b44e-fa0577644ca4", "substitutionUrl":"vistarecreation/registrationmain.sdi?source=showAsset.sdi&activity_id=4900", "trackbackurl":"http://www.active.com/community-services-class/vista-ca/zumba-punch-card-adult-oct-5-2010", "onlineRegistrationAvailable":"false", "zip":"92084", "sortDate":"2000-10-02", "category":"Activities", "latitude":"33.2000368", "dma":"San Diego", "lastModifiedDate":"2010-09-29", "tags":"2348.321", "lastModifiedDateTime":"2010-09-29 16:46:43.33", "country":"United States of America", "startDate":"2010-10-02", "assetName":"Zumba Punch Card (Adult) - Oct. (5)", "summary":"People of all ages are falling in love with Zumba, one of the fastest growing dance-based fitness crazes in the country. With Zumbas easy-to-follow dance moves you receive body beautifying benefits while enjoying Latin rhythms including Salsa, Meringue, Cumbia, Reggaeton, even belly dance and hip-hop. Zumba is ", "description":"", "seourl":"http://www.active.com/community-services-class/vista-ca/zumba-punch-card-adult-oct-5-2010", "channel":"Community Services", "splitMediaType":"Class", "mediaType":"Class", "longitude":"-117.2425355", "UpdateDateTime":"8/20/2008 9:03:50 AM", "assetTypeId":"FB27C928-54DB-4ECD-B42F-482FC3C8681F", "state":"California", "keywords":""}, "summary":""}')))
|
93
|
+
g.address[:name].should be_nil # eql("City of Vista Recreation")
|
94
|
+
g.address[:address].should be_nil # eql("200 Civic Center Dr.")
|
95
|
+
g.address[:city].should eql("Vista")
|
96
|
+
g.address[:state].should eql("California")
|
97
|
+
g.address[:zip].should eql("92084")
|
98
|
+
g.address[:country].should eql("United States of America")
|
99
|
+
g.address[:lat].should eql("33.2000368")
|
100
|
+
g.address[:lng].should eql("-117.2425355")
|
101
|
+
end
|
102
|
+
# TODO FIND OUT WHERE THIS DATA COMES FROM AND GET IT WORKING
|
103
|
+
# it "should have a partial address that it's full data doesn't live in WORKS or REGCENTER" do
|
104
|
+
# g = Activity.new(GSA.new(JSON.parse('{"language":"en", "title":"Zumba Punch Card (Adult) - Oct. (5) | Vista, CA, 92084 |", "url":"http://www.active.com/community-services-class/vista-ca/zumba-punch-card-adult-oct-5-2010", "escapedUrl":"http://www.active.com/community-services-class/vista-ca/zumba-punch-card-adult-oct-5-2010", "meta":{"city":"Vista", "assetId":"3ae995d9-5c16-4176-b44e-fa0577644ca4", "substitutionUrl":"vistarecreation/registrationmain.sdi?source=showAsset.sdi&activity_id=4900", "trackbackurl":"http://www.active.com/community-services-class/vista-ca/zumba-punch-card-adult-oct-5-2010", "onlineRegistrationAvailable":"false", "zip":"92084", "sortDate":"2000-10-02", "category":"Activities", "latitude":"33.2000368", "dma":"San Diego", "lastModifiedDate":"2010-09-29", "tags":"2348.321", "lastModifiedDateTime":"2010-09-29 16:46:43.33", "country":"United States of America", "startDate":"2010-10-02", "assetName":"Zumba Punch Card (Adult) - Oct. (5)", "summary":"People of all ages are falling in love with Zumba, one of the fastest growing dance-based fitness crazes in the country. With Zumbas easy-to-follow dance moves you receive body beautifying benefits while enjoying Latin rhythms including Salsa, Meringue, Cumbia, Reggaeton, even belly dance and hip-hop. Zumba is ", "description":"", "seourl":"http://www.active.com/community-services-class/vista-ca/zumba-punch-card-adult-oct-5-2010", "channel":"Community Services", "splitMediaType":"Class", "mediaType":"Class", "longitude":"-117.2425355", "UpdateDateTime":"8/20/2008 9:03:50 AM", "assetTypeId":"FB27C928-54DB-4ECD-B42F-482FC3C8681F", "state":"California", "keywords":""}, "summary":""}')))
|
105
|
+
# g.address[:name].should eql("City of Vista Recreation")
|
106
|
+
# g.address[:address].should eql("200 Civic Center Dr.")
|
107
|
+
# g.address[:city].should eql("Vista")
|
108
|
+
# g.address[:state].should eql("California")
|
109
|
+
# g.address[:zip].should eql("92084")
|
110
|
+
# g.address[:country].should eql("United States of America")
|
111
|
+
# g.address[:lat].should eql("33.2000368")
|
112
|
+
# g.address[:lng].should eql("-117.2425355")
|
113
|
+
# end
|
185
114
|
|
186
115
|
|
187
116
|
|
117
|
+
end
|
118
|
+
end
|
data/spec/ats_spec.rb
CHANGED
@@ -4,11 +4,13 @@ require File.join(File.dirname(__FILE__), %w[custom_matchers_spec])
|
|
4
4
|
require File.join(File.dirname(__FILE__), %w[ .. lib services search])
|
5
5
|
require File.join(File.dirname(__FILE__), %w[ .. lib services activity])
|
6
6
|
require File.join(File.dirname(__FILE__), %w[ .. lib services ats])
|
7
|
+
require File.join(File.dirname(__FILE__), %w[ .. lib services address])
|
7
8
|
include Active::Services
|
8
9
|
|
9
10
|
describe ATS do
|
10
11
|
before(:each) do
|
11
|
-
@valid_id = "A9EF9D79-F859-4443-A9BB-91E1833DF2D5"
|
12
|
+
# @valid_id = "A9EF9D79-F859-4443-A9BB-91E1833DF2D5"
|
13
|
+
@valid_id="61BB7D71-EC01-46B8-A601-38CA1C9AE893"
|
12
14
|
@reg_center_id = "D9A22F33-8A14-4175-8D5B-D11578212A98"
|
13
15
|
end
|
14
16
|
it "should set find by id" do
|
@@ -42,7 +44,7 @@ describe ATS do
|
|
42
44
|
end
|
43
45
|
it "should have an address Hash" do
|
44
46
|
a = ATS.find_by_id(@valid_id)
|
45
|
-
a.address.should be_an_instance_of(
|
47
|
+
a.address.should be_an_instance_of(HashWithIndifferentAccess)
|
46
48
|
end
|
47
49
|
it "should have a startDate Date" do
|
48
50
|
a = ATS.find_by_id(@valid_id)
|
@@ -52,6 +54,10 @@ describe ATS do
|
|
52
54
|
a = ATS.find_by_id(@valid_id)
|
53
55
|
a.title.should be_an_instance_of(String)
|
54
56
|
end
|
55
|
-
|
57
|
+
##########
|
58
|
+
it "should have an address" do
|
59
|
+
a = ATS.new('<importSource><asset row="1" destinationID=""><isSearchable>true</isSearchable><assetTypeId>FB27C928-54DB-4ECD-B42F-482FC3C8681F</assetTypeId><substitutionUrl>vistarecreation/registrationmain.sdi?source=showAsset.sdi&activity_id=4900</substitutionUrl><assetName>Zumba Punch Card (Adult) - Oct. (5)</assetName><category>Activities</category><channel>Community Services</channel><mediaType>Class</mediaType><searchWeight>1</searchWeight><summary>People of all ages are falling in love with Zumba, one of the fastest growing dance-based fitness crazes in the country. With Zumbas easy-to-follow dance moves you receive body beautifying benefits while enjoying Latin rhythms including Salsa, Meringue, Cumbia, Reggaeton, even belly dance and hip-hop. Zumba is sure to put the fun back into your work outs!</summary><zip>92084</zip><city>Vista</city><state>California</state><country>United States of America</country><startDate>2010-10-02</startDate><onlineRegistrationAvailable>false</onlineRegistrationAvailable><tags>2348.321</tags><assetId>3ae995d9-5c16-4176-b44e-fa0577644ca4</assetId><trackbackurl>http://www.active.com/page/event_details_an.htm?type=activenet&subUrl=vistarecreation/registrationmain.sdi?source=showAsset.sdi&activity_id=4900</trackbackurl><seourl>http://www.active.com/community-services-class/vista-ca/zumba-punch-card-adult-oct-5-2010</seourl><dma>San Diego</dma><longitude>-117.2425355</longitude><latitude>33.2000368</latitude></asset></importSource>')
|
60
|
+
a.data.should_not be_nil
|
61
|
+
end
|
56
62
|
|
57
63
|
end
|
data/spec/gsa_spec.rb
ADDED
@@ -0,0 +1,123 @@
|
|
1
|
+
# Require the spec helper relative to this file
|
2
|
+
require File.join(File.dirname(__FILE__), %w[spec_helper])
|
3
|
+
require File.join(File.dirname(__FILE__), %w[custom_matchers_spec])
|
4
|
+
require File.join(File.dirname(__FILE__), %w[ .. lib services search])
|
5
|
+
require File.join(File.dirname(__FILE__), %w[ .. lib services activity])
|
6
|
+
require File.join(File.dirname(__FILE__), %w[ .. lib services reg_center])
|
7
|
+
require File.join(File.dirname(__FILE__), %w[ .. lib services address])
|
8
|
+
include Active::Services
|
9
|
+
# EFF92D9D-D487-4FBD-A879-38B3D3BBC8CD
|
10
|
+
describe GSA do
|
11
|
+
before(:each) do
|
12
|
+
@a = GSA.new(JSON.parse('{"escapedUrl":"http://www.active.com/triathlon/oceanside-ca/rohto-ironman-703-california-2011","language":"en","title":"2011 Rohto Ironman 70.3 California | Oceanside, California \u003cb\u003e...\u003c/b\u003e","url":"http://www.active.com/triathlon/oceanside-ca/rohto-ironman-703-california-2011","summary":"","meta":{"eventDate":"2011-04-02T00:00:00-07:00","location":"Oceanside Harbor","tag":["event:10","Triathlon:10"],"eventLongitude":"-117.3586","endDate":"2011-04-02","locationName":"Oceanside Harbor","lastModifiedDateTime":"2010-09-30 06:16:05.107","splitMediaType":["Event","Ironman","Long Course"],"endTime":"0:00:00","city":"Oceanside","google-site-verification":"","startTime":"0:00:00","eventId":"1838902","description":"","longitude":"-117.3586","substitutionUrl":"1838902","sortDate":"2001-04-02","eventState":"California","eventLatitude":"33.19783","keywords":"Event","eventAddress":"1540 Harbor Drive North","dma":"San Diego","seourl":"http://www.active.com/triathlon/oceanside-ca/rohto-ironman-703-california-2011","country":"United States","category":"Activities","market":"San Diego","contactName":"World Triathlon Corporation","assetTypeId":"3BF82BBE-CF88-4E8C-A56F-78F5CE87E4C6","eventZip":"92054","UpdateDateTime":"9/22/2010 11:46:24 AM","latitude":"33.19783","startDate":"2011-04-02","state":"California","mediaType":["Event","Event\\Ironman","Event\\Long Course"],"estParticipants":"2500","assetId":["77ACABBD-BA83-4C78-925D-CE49DEDDF20C","77acabbd-ba83-4c78-925d-ce49deddf20c"],"participationCriteria":"All","onlineDonationAvailable":"0","assetName":["2011 Rohto Ironman 70.3 California","2011 Rohto Ironman 70.3 California"],"zip":"92054","eventURL":"http://www.ironmancalifornia.com/","contactPhone":"813-868-5940","contactEmail":"california70.3@ironman.com","onlineMembershipAvailable":"0","trackbackurl":"http://www.active.com/triathlon/oceanside-ca/rohto-ironman-703-california-2011","onlineRegistrationAvailable":"true","image1":"http://www.active.com/images/events/hotrace.gif","lastModifiedDate":"2010-09-30","channel":"Triathlon"}}'))
|
13
|
+
end
|
14
|
+
it "should have asset ids" do
|
15
|
+
@a.asset_id.should_not be_nil
|
16
|
+
@a.asset_type_id.should_not be_nil
|
17
|
+
end
|
18
|
+
# TITLE
|
19
|
+
it "should have a clean title" do
|
20
|
+
@a.title.should_not be_nil
|
21
|
+
@a.title.should eql("2011 Rohto Ironman 70.3 California")
|
22
|
+
end
|
23
|
+
it "should have a clean title" do
|
24
|
+
g = GSA.new(JSON.parse('{"title":"2011 Rohto Ironman 70.3 California\u003cb\u003e...\u003c/b\u003e | Oceanside, California \u003cb\u003e...\u003c/b\u003e"}'))
|
25
|
+
g.title.should eql("2011 Rohto Ironman 70.3 California")
|
26
|
+
g = GSA.new(JSON.parse('{"title":"Calabasas Classic 2010 - 5k \u003cb\u003e10k\u003c/b\u003e Runs | Calabasas, California 91302 \u003cb\u003e...\u003c/b\u003e"}'))
|
27
|
+
g.title.should eql("Calabasas Classic 2010 - 5k 10k Runs")
|
28
|
+
end
|
29
|
+
it "should have a nil title" do
|
30
|
+
GSA.new({}).title.should be_nil
|
31
|
+
end
|
32
|
+
# start date
|
33
|
+
it "should have a valid start date" do
|
34
|
+
@a.start_date.should_not be_nil
|
35
|
+
@a.start_date.should be_an_instance_of(DateTime)
|
36
|
+
end
|
37
|
+
it "should have nil is no date" do
|
38
|
+
g = GSA.new(JSON.parse('{"title":"Calabasas Classic 2010 - 5k \u003cb\u003e10k\u003c/b\u003e Runs | Calabasas, California 91302 \u003cb\u003e...\u003c/b\u003e"}'))
|
39
|
+
g.start_date.should be_nil
|
40
|
+
end
|
41
|
+
# end date
|
42
|
+
it "should have a valid end date" do
|
43
|
+
@a.end_date.should_not be_nil
|
44
|
+
@a.end_date.should be_an_instance_of(DateTime)
|
45
|
+
end
|
46
|
+
it "should have nil is no date" do
|
47
|
+
g = GSA.new(JSON.parse('{"title":"Calabasas Classic 2010 - 5k \u003cb\u003e10k\u003c/b\u003e Runs | Calabasas, California 91302 \u003cb\u003e...\u003c/b\u003e"}'))
|
48
|
+
g.end_date.should be_nil
|
49
|
+
end
|
50
|
+
# start time
|
51
|
+
it "should have a valid start date" do
|
52
|
+
@a.start_time.should_not be_nil
|
53
|
+
@a.start_time.should be_an_instance_of(DateTime)
|
54
|
+
end
|
55
|
+
it "should have nil is no date" do
|
56
|
+
g = GSA.new(JSON.parse('{"title":"Calabasas Classic 2010 - 5k \u003cb\u003e10k\u003c/b\u003e Runs | Calabasas, California 91302 \u003cb\u003e...\u003c/b\u003e"}'))
|
57
|
+
g.start_time.should be_nil
|
58
|
+
end
|
59
|
+
# end time
|
60
|
+
it "should have a valid end date" do
|
61
|
+
@a.start_time.should_not be_nil
|
62
|
+
@a.start_time.should be_an_instance_of(DateTime)
|
63
|
+
end
|
64
|
+
it "should have nil is no date" do
|
65
|
+
g = GSA.new(JSON.parse('{"title":"Calabasas Classic 2010 - 5k \u003cb\u003e10k\u003c/b\u003e Runs | Calabasas, California 91302 \u003cb\u003e...\u003c/b\u003e"}'))
|
66
|
+
g.start_time.should be_nil
|
67
|
+
end
|
68
|
+
it "should have an asset_id" do
|
69
|
+
GSA.new().asset_id.should be_nil
|
70
|
+
@a.asset_id.should_not be_nil
|
71
|
+
end
|
72
|
+
it "should have an asset_type_id" do
|
73
|
+
GSA.new().asset_type_id.should be_nil
|
74
|
+
@a.asset_type_id.should_not be_nil
|
75
|
+
end
|
76
|
+
# substitutionUrl
|
77
|
+
it "should have an id for substitutionUrl" do
|
78
|
+
@a.substitutionUrl.should eql("1838902")
|
79
|
+
g = GSA.new(JSON.parse('{"title":"Calabasas", "meta":{"substitutionUrl":"vistarecreation/registrationmain.sdi?source=showAsset.sdi&activity_id=4900"}}'))
|
80
|
+
g.substitutionUrl.should eql("4900")
|
81
|
+
end
|
82
|
+
# bounding_box
|
83
|
+
it "should raise an error with a bad bounding box" do
|
84
|
+
lambda {s = Search.search({ :bounding_box => { :sw => "37.695141,-123.013657"}}) }.should raise_error(RuntimeError)
|
85
|
+
end
|
86
|
+
it "should search a bounding box String" do
|
87
|
+
s = Search.search({ :bounding_box => { :sw => "37.695141,-123.013657", :ne => "37.832371,-122.356979"}})
|
88
|
+
r = s.results.first
|
89
|
+
r.address["city"].should eql("San Francisco")
|
90
|
+
end
|
91
|
+
it "should search a bounding box Hash" do
|
92
|
+
s = Search.search({ :bounding_box => { :sw => [37.695141, -123.013657], :ne => [37.832371,-122.356979] }})
|
93
|
+
r = s.results.first
|
94
|
+
r.address["city"].should eql("San Francisco")
|
95
|
+
end
|
96
|
+
|
97
|
+
|
98
|
+
# address
|
99
|
+
it "should have a full address" do
|
100
|
+
g = GSA.new(JSON.parse('{"title":"Calabasas", "meta":{"location":"Oceanside Harbor","eventLongitude":"-117.3586","locationName":"Oceanside Harbor","eventAddress":"1540 Harbor Drive North", "city":"San Diego", "eventState":"CA", "eventZip":"92121", "latitude":"-22", "longitude":"222", "country":"USA" }}'))
|
101
|
+
g.address.should_not be_nil
|
102
|
+
g.address[:name].should eql("Oceanside Harbor")
|
103
|
+
g.address[:address].should eql("1540 Harbor Drive North")
|
104
|
+
g.address[:city].should eql("San Diego")
|
105
|
+
g.address[:state].should eql("CA")
|
106
|
+
g.address[:zip].should eql("92121")
|
107
|
+
g.address[:country].should eql("USA")
|
108
|
+
g.address[:lat].should eql("-22")
|
109
|
+
g.address[:lng].should eql("222")
|
110
|
+
end
|
111
|
+
it "should have a partial address" do
|
112
|
+
g = GSA.new(JSON.parse('{"language":"en", "title":"Zumba Punch Card (Adult) - Oct. (5) | Vista, CA, 92084 |", "url":"http://www.active.com/community-services-class/vista-ca/zumba-punch-card-adult-oct-5-2010", "escapedUrl":"http://www.active.com/community-services-class/vista-ca/zumba-punch-card-adult-oct-5-2010", "meta":{"city":"Vista", "assetId":"3ae995d9-5c16-4176-b44e-fa0577644ca4", "substitutionUrl":"vistarecreation/registrationmain.sdi?source=showAsset.sdi&activity_id=4900", "trackbackurl":"http://www.active.com/community-services-class/vista-ca/zumba-punch-card-adult-oct-5-2010", "onlineRegistrationAvailable":"false", "zip":"92084", "sortDate":"2000-10-02", "category":"Activities", "latitude":"33.2000368", "dma":"San Diego", "lastModifiedDate":"2010-09-29", "tags":"2348.321", "lastModifiedDateTime":"2010-09-29 16:46:43.33", "country":"United States of America", "startDate":"2010-10-02", "assetName":"Zumba Punch Card (Adult) - Oct. (5)", "summary":"People of all ages are falling in love with Zumba, one of the fastest growing dance-based fitness crazes in the country. With Zumbas easy-to-follow dance moves you receive body beautifying benefits while enjoying Latin rhythms including Salsa, Meringue, Cumbia, Reggaeton, even belly dance and hip-hop. Zumba is ", "description":"", "seourl":"http://www.active.com/community-services-class/vista-ca/zumba-punch-card-adult-oct-5-2010", "channel":"Community Services", "splitMediaType":"Class", "mediaType":"Class", "longitude":"-117.2425355", "UpdateDateTime":"8/20/2008 9:03:50 AM", "assetTypeId":"FB27C928-54DB-4ECD-B42F-482FC3C8681F", "state":"California", "keywords":""}, "summary":""}'))
|
113
|
+
g.address[:name].should be_nil
|
114
|
+
g.address[:address].should be_nil
|
115
|
+
g.address[:city].should eql("Vista")
|
116
|
+
g.address[:state].should eql("California")
|
117
|
+
g.address[:zip].should eql("92084")
|
118
|
+
g.address[:country].should eql("United States of America")
|
119
|
+
g.address[:lat].should eql("33.2000368")
|
120
|
+
g.address[:lng].should eql("-117.2425355")
|
121
|
+
end
|
122
|
+
|
123
|
+
end
|