bcardarella-deepthroat 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/LICENSE +20 -0
- data/README +7 -0
- data/Rakefile +51 -0
- data/VERSION.yml +4 -0
- data/lib/deepthroat/base.rb +41 -0
- data/lib/deepthroat/contributions.rb +29 -0
- data/lib/deepthroat/industries.rb +31 -0
- data/lib/deepthroat/industry.rb +35 -0
- data/lib/deepthroat/summaries.rb +28 -0
- data/lib/deepthroat/top_sectors.rb +34 -0
- data/lib/deepthroat.rb +28 -0
- data/test/test_deepthroat.rb +26 -0
- data/test/test_helper.rb +52 -0
- data/test/unit/test_base.rb +156 -0
- data/test/unit/test_contributions.rb +181 -0
- data/test/unit/test_contributions_contributor.rb +38 -0
- data/test/unit/test_industries.rb +181 -0
- data/test/unit/test_industries_industry.rb +50 -0
- data/test/unit/test_industry.rb +243 -0
- data/test/unit/test_summaries.rb +263 -0
- data/test/unit/test_top_sectors.rb +181 -0
- data/test/unit/test_top_sectors_sector.rb +56 -0
- data/test/xml_samples/bad_api_key.xml +11 -0
- data/test/xml_samples/bad_cid.xml +11 -0
- data/test/xml_samples/bad_cycle.xml +11 -0
- data/test/xml_samples/bad_indcode.xml +11 -0
- data/test/xml_samples/contributions.xml +11 -0
- data/test/xml_samples/deep_throat_bad_method.xml +11 -0
- data/test/xml_samples/industries.xml +11 -0
- data/test/xml_samples/industry.xml +11 -0
- data/test/xml_samples/member_pfd_profile.xml +11 -0
- data/test/xml_samples/member_travel_trips.xml +11 -0
- data/test/xml_samples/summaries.xml +11 -0
- data/test/xml_samples/top_sectors.xml +11 -0
- metadata +97 -0
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper'
|
|
2
|
+
|
|
3
|
+
class TestSummaries < Test::Unit::TestCase
|
|
4
|
+
|
|
5
|
+
def setup
|
|
6
|
+
shared_attributes
|
|
7
|
+
DeepThroat.api_key = "validApiKey"
|
|
8
|
+
web_faker(:summaries, :cid => @cid, :cycle => @cycle, :apikey => DeepThroat.api_key)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
context "Finding all summaries for Hilary Clinton in 2006" do
|
|
12
|
+
setup { @summaries = DeepThroat::Summaries.find(:cid => @cid, :cycle => @cycle) }
|
|
13
|
+
|
|
14
|
+
should "map #cid" do
|
|
15
|
+
assert_equal @cid, @summaries.cid
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
should "map #cycle" do
|
|
19
|
+
assert_equal @cycle, @summaries.cycle
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
should "map #name" do
|
|
23
|
+
assert_equal @name, @summaries.name
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
should "map #state" do
|
|
27
|
+
assert_equal @state, @summaries.state
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
should "map #party" do
|
|
31
|
+
assert_equal @party, @summaries.party
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
should "map #chamber" do
|
|
35
|
+
assert_equal @chamber, @summaries.chamber
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
should "map #first_elected" do
|
|
39
|
+
assert_equal @first_elected, @summaries.first_elected
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
should "map #next_election" do
|
|
43
|
+
assert_equal @next_election, @summaries.next_election
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
should "map #total" do
|
|
47
|
+
assert_equal @total, @summaries.total
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
should "map #spent" do
|
|
51
|
+
assert_equal @spent, @summaries.spent
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
should "map #cash_on_hand" do
|
|
55
|
+
assert_equal @cash_on_hand, @summaries.cash_on_hand
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
should "map #debt" do
|
|
59
|
+
assert_equal @debt, @summaries.debt
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
should "map #origin" do
|
|
63
|
+
assert_equal @origin, @summaries.origin
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
should "map #source" do
|
|
67
|
+
assert_equal @source, @summaries.source
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
context "Finding all summaries for Hillary Clinton with no cycle defined" do
|
|
72
|
+
setup do
|
|
73
|
+
web_faker(:summaries, :cid => @cid, :apikey => DeepThroat.api_key)
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
should "not raise any errors" do
|
|
77
|
+
assert_nothing_raised do
|
|
78
|
+
@summaries = DeepThroat::Summaries.find(:cid => @cid)
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
context "A new instance with missing attributes" do
|
|
84
|
+
should "raise a 'DeepThroat::NoCIDError' when not given a cid" do
|
|
85
|
+
assert_raise DeepThroat::NoCIDError do
|
|
86
|
+
DeepThroat::Summaries.find(:cycle => @cycle)
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
context "Obtaining the XML" do
|
|
92
|
+
setup { @xml_response = DeepThroat::Summaries.get_xml(:cid => @cid, :cycle => @cycle, :method => "candSummary") }
|
|
93
|
+
|
|
94
|
+
should "return an XML feed" do
|
|
95
|
+
assert_equal @test_xml, @xml_response
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
context "Parsing the XML" do
|
|
100
|
+
setup { @summaries = DeepThroat::Summaries.parse(@test_xml)[0] }
|
|
101
|
+
|
|
102
|
+
should "the return a 'DeepThroat::Summaries::Details' object" do
|
|
103
|
+
assert_kind_of DeepThroat::Summaries, @summaries
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
should "assign :name" do
|
|
107
|
+
assert_equal @name, @summaries.name
|
|
108
|
+
assert_kind_of String, @summaries.name
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
should "assign :state" do
|
|
112
|
+
assert_equal @state, @summaries.state
|
|
113
|
+
assert_kind_of String, @summaries.state
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
should "assign :party" do
|
|
117
|
+
assert_equal @party, @summaries.party
|
|
118
|
+
assert_kind_of String, @summaries.party
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
should "assign :chamber" do
|
|
122
|
+
assert_equal @chamber, @summaries.chamber
|
|
123
|
+
assert_kind_of String, @summaries.chamber
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
should "assign :first_elected" do
|
|
127
|
+
assert_equal @first_elected, @summaries.first_elected
|
|
128
|
+
assert_kind_of String, @summaries.first_elected
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
should "assign :next_election" do
|
|
132
|
+
assert_equal @next_election, @summaries.next_election
|
|
133
|
+
assert_kind_of String, @summaries.next_election
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
should "assign :total" do
|
|
137
|
+
assert_equal @total, @summaries.total
|
|
138
|
+
assert_kind_of Integer, @summaries.total
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
should "assign :spent" do
|
|
142
|
+
assert_equal @spent, @summaries.spent
|
|
143
|
+
assert_kind_of Integer, @summaries.spent
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
should "assign :cash_on_hand" do
|
|
147
|
+
assert_equal @cash_on_hand, @summaries.cash_on_hand
|
|
148
|
+
assert_kind_of Integer, @summaries.cash_on_hand
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
should "assign :debt" do
|
|
152
|
+
assert_equal @debt, @summaries.debt
|
|
153
|
+
assert_kind_of Integer, @summaries.debt
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
should "assign :origin" do
|
|
157
|
+
assert_equal @origin, @summaries.origin
|
|
158
|
+
assert_kind_of String, @summaries.origin
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
should "assign :source" do
|
|
162
|
+
assert_equal @source, @summaries.source
|
|
163
|
+
assert_kind_of String, @summaries.source
|
|
164
|
+
end
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
context "Sad Paths" do
|
|
169
|
+
setup do
|
|
170
|
+
# invalid ApiKey
|
|
171
|
+
web_faker(:summaries_bad_api_key, :cid => @cid, :cycle => @cycle, :apikey => "badApiKey")
|
|
172
|
+
# blank ApiKey
|
|
173
|
+
web_faker(:summaries_bad_api_key, :cid => @cid, :cycle => @cycle, :apikey => "")
|
|
174
|
+
# no ApiKey
|
|
175
|
+
web_faker(:summaries_bad_api_key, :cid => @cid, :cycle => @cycle)
|
|
176
|
+
|
|
177
|
+
# invalid CID
|
|
178
|
+
web_faker(:summaries_bad_cid, :cid => "badCID", :cycle => @cycle, :apikey => @api_key)
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
context "ApiKey" do
|
|
182
|
+
should "raise 'DeepThroat::InvalidOrMissing::ApiKeyError' when given a bad ApiKey" do
|
|
183
|
+
DeepThroat.api_key = "badApiKey"
|
|
184
|
+
assert_raise DeepThroat::InvalidOrMissing::ApiKeyError do
|
|
185
|
+
DeepThroat::Summaries.find(:cid => @cid, :cycle => @cycle)
|
|
186
|
+
end
|
|
187
|
+
end
|
|
188
|
+
|
|
189
|
+
should "raise 'DeepThroat::InvalidOrMissing::ApiKeyError' when given a blank ApiKey" do
|
|
190
|
+
DeepThroat.api_key = ""
|
|
191
|
+
assert_raise DeepThroat::InvalidOrMissing::ApiKeyError do
|
|
192
|
+
DeepThroat::Summaries.find(:cid => @cid, :cycle => @cycle)
|
|
193
|
+
end
|
|
194
|
+
end
|
|
195
|
+
|
|
196
|
+
should "raise 'DeepThroat::InvalidOrMissing::ApiKeyError' when given no ApiKey" do
|
|
197
|
+
DeepThroat.api_key = nil
|
|
198
|
+
assert_raise DeepThroat::InvalidOrMissing::ApiKeyError do
|
|
199
|
+
DeepThroat::Summaries.find(:cid => @cid, :cycle => @cycle)
|
|
200
|
+
end
|
|
201
|
+
end
|
|
202
|
+
end
|
|
203
|
+
|
|
204
|
+
context "CID" do
|
|
205
|
+
should "raise 'DeepThroat::InvalidOrMissing::CIDError' when given a bad CID" do
|
|
206
|
+
@bad_cid = "badCID"
|
|
207
|
+
assert_raise DeepThroat::InvalidOrMissing::CIDError do
|
|
208
|
+
DeepThroat::Summaries.find(:cid => @bad_cid, :cycle => @cycle)
|
|
209
|
+
end
|
|
210
|
+
end
|
|
211
|
+
end
|
|
212
|
+
|
|
213
|
+
context "Cycle" do
|
|
214
|
+
should "raise 'DeepThroat::InvalidOrMissing::CycleError' when given a bad Cycle" do
|
|
215
|
+
@bad_cycle = 2000
|
|
216
|
+
assert_raise DeepThroat::InvalidOrMissing::CycleError do
|
|
217
|
+
DeepThroat::Summaries.find(:cid => @cid, :cycle => @bad_cycle)
|
|
218
|
+
end
|
|
219
|
+
end
|
|
220
|
+
end
|
|
221
|
+
|
|
222
|
+
end
|
|
223
|
+
|
|
224
|
+
context "CONSTANTS" do
|
|
225
|
+
should "have CYCLES defined as an Array" do
|
|
226
|
+
assert_kind_of Array, DeepThroat::Summaries::CYCLES
|
|
227
|
+
end
|
|
228
|
+
|
|
229
|
+
context "CYCLES" do
|
|
230
|
+
should "include the year 2006" do
|
|
231
|
+
assert DeepThroat::Summaries::CYCLES.include?(2006)
|
|
232
|
+
end
|
|
233
|
+
|
|
234
|
+
should "include the year 2008" do
|
|
235
|
+
assert DeepThroat::Summaries::CYCLES.include?(2008)
|
|
236
|
+
end
|
|
237
|
+
end
|
|
238
|
+
end
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
private
|
|
242
|
+
|
|
243
|
+
def shared_attributes
|
|
244
|
+
@cid = "N00000019"
|
|
245
|
+
@cycle = 2006
|
|
246
|
+
@api_key = DeepThroat.api_key
|
|
247
|
+
|
|
248
|
+
@test_xml = summaries_xml.match(/<response>.*/)[0]
|
|
249
|
+
|
|
250
|
+
@name = "Clinton, Hillary"
|
|
251
|
+
@state = "NY"
|
|
252
|
+
@party = "D"
|
|
253
|
+
@chamber = "S"
|
|
254
|
+
@first_elected = "2000"
|
|
255
|
+
@next_election = "2006"
|
|
256
|
+
@total = 51567732
|
|
257
|
+
@spent = 40828991
|
|
258
|
+
@cash_on_hand = 11021087
|
|
259
|
+
@debt = 93363
|
|
260
|
+
@origin = "Center for Responsive Politics"
|
|
261
|
+
@source = "http://www.opensecrets.org/politicians/summary.php?cid=N00000019&cycle=2006"
|
|
262
|
+
end
|
|
263
|
+
end
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper'
|
|
2
|
+
|
|
3
|
+
class TestTopSectors < Test::Unit::TestCase
|
|
4
|
+
|
|
5
|
+
def setup
|
|
6
|
+
shared_attributes
|
|
7
|
+
DeepThroat.api_key = "validApiKey"
|
|
8
|
+
web_faker(:top_sectors, :cid => @cid, :cycle => @cycle, :apikey => DeepThroat.api_key)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
context "Finding all top_sectors for Hilary Clinton in 2006" do
|
|
12
|
+
setup { @top_sectors = DeepThroat::TopSectors.find(:cid => @cid, :cycle => @cycle) }
|
|
13
|
+
|
|
14
|
+
should "map #cid" do
|
|
15
|
+
assert_equal @cid, @top_sectors.cid
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
should "map #cycle" do
|
|
19
|
+
assert_equal @cycle, @top_sectors.cycle
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
should "map #name" do
|
|
23
|
+
assert_equal @name, @top_sectors.name
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
should "map #origin" do
|
|
27
|
+
assert_equal @origin, @top_sectors.origin
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
should "map #source" do
|
|
31
|
+
assert_equal @source, @top_sectors.source
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
should "map #sectors" do
|
|
35
|
+
assert_kind_of Array, @top_sectors.sectors
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
context "Finding all top_sectors for Hillary Clinton with no cycle defined" do
|
|
40
|
+
setup do
|
|
41
|
+
web_faker(:top_sectors, :cid => @cid, :apikey => DeepThroat.api_key)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
should "not raise any errors" do
|
|
45
|
+
assert_nothing_raised do
|
|
46
|
+
@top_sectors = DeepThroat::TopSectors.find(:cid => @cid)
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
context "A new instance with missing attributes" do
|
|
52
|
+
should "raise a 'DeepThroat::NoCIDError' when not given a cid" do
|
|
53
|
+
assert_raise DeepThroat::NoCIDError do
|
|
54
|
+
DeepThroat::TopSectors.find(:cycle => @cycle)
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
context "Obtaining the XML" do
|
|
60
|
+
setup { @xml_response = DeepThroat::TopSectors.get_xml(:cid => @cid, :cycle => @cycle, :method => "candSector") }
|
|
61
|
+
|
|
62
|
+
should "return an XML feed" do
|
|
63
|
+
assert_equal @test_xml, @xml_response
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
context "Parsing the XML" do
|
|
68
|
+
setup { @top_sectors = DeepThroat::TopSectors.parse(@test_xml)[0] }
|
|
69
|
+
|
|
70
|
+
should "the return a 'DeepThroat::TopSectors::Details' object" do
|
|
71
|
+
assert_kind_of DeepThroat::TopSectors, @top_sectors
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
should "assign :name" do
|
|
75
|
+
assert_equal @name, @top_sectors.name
|
|
76
|
+
assert_kind_of String, @top_sectors.name
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
should "assign :origin" do
|
|
80
|
+
assert_equal @origin, @top_sectors.origin
|
|
81
|
+
assert_kind_of String, @top_sectors.origin
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
should "assign :source" do
|
|
85
|
+
assert_equal @source, @top_sectors.source
|
|
86
|
+
assert_kind_of String, @top_sectors.source
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
should "assign :sectors" do
|
|
90
|
+
assert_kind_of Array, @top_sectors.sectors
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
context "Sad Paths" do
|
|
96
|
+
setup do
|
|
97
|
+
# invalid ApiKey
|
|
98
|
+
web_faker(:top_sectors_bad_api_key, :cid => @cid, :cycle => @cycle, :apikey => "badApiKey")
|
|
99
|
+
# blank ApiKey
|
|
100
|
+
web_faker(:top_sectors_bad_api_key, :cid => @cid, :cycle => @cycle, :apikey => "")
|
|
101
|
+
# no ApiKey
|
|
102
|
+
web_faker(:top_sectors_bad_api_key, :cid => @cid, :cycle => @cycle)
|
|
103
|
+
|
|
104
|
+
# invalid CID
|
|
105
|
+
web_faker(:top_sectors_bad_cid, :cid => "badCID", :cycle => @cycle, :apikey => @api_key)
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
context "ApiKey" do
|
|
109
|
+
should "raise 'DeepThroat::InvalidOrMissing::ApiKeyError' when given a bad ApiKey" do
|
|
110
|
+
DeepThroat.api_key = "badApiKey"
|
|
111
|
+
assert_raise DeepThroat::InvalidOrMissing::ApiKeyError do
|
|
112
|
+
DeepThroat::TopSectors.find(:cid => @cid, :cycle => @cycle)
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
should "raise 'DeepThroat::InvalidOrMissing::ApiKeyError' when given a blank ApiKey" do
|
|
117
|
+
DeepThroat.api_key = ""
|
|
118
|
+
assert_raise DeepThroat::InvalidOrMissing::ApiKeyError do
|
|
119
|
+
DeepThroat::TopSectors.find(:cid => @cid, :cycle => @cycle)
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
should "raise 'DeepThroat::InvalidOrMissing::ApiKeyError' when given no ApiKey" do
|
|
124
|
+
DeepThroat.api_key = nil
|
|
125
|
+
assert_raise DeepThroat::InvalidOrMissing::ApiKeyError do
|
|
126
|
+
DeepThroat::TopSectors.find(:cid => @cid, :cycle => @cycle)
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
context "CID" do
|
|
132
|
+
should "raise 'DeepThroat::InvalidOrMissing::CIDError' when given a bad CID" do
|
|
133
|
+
@bad_cid = "badCID"
|
|
134
|
+
assert_raise DeepThroat::InvalidOrMissing::CIDError do
|
|
135
|
+
DeepThroat::TopSectors.find(:cid => @bad_cid, :cycle => @cycle)
|
|
136
|
+
end
|
|
137
|
+
end
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
context "Cycle" do
|
|
141
|
+
should "raise 'DeepThroat::InvalidOrMissing::CycleError' when given a bad Cycle" do
|
|
142
|
+
@bad_cycle = 2000
|
|
143
|
+
assert_raise DeepThroat::InvalidOrMissing::CycleError do
|
|
144
|
+
DeepThroat::TopSectors.find(:cid => @cid, :cycle => @bad_cycle)
|
|
145
|
+
end
|
|
146
|
+
end
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
context "CONSTANTS" do
|
|
152
|
+
should "have CYCLES defined as an Array" do
|
|
153
|
+
assert_kind_of Array, DeepThroat::TopSectors::CYCLES
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
context "CYCLES" do
|
|
157
|
+
should "include the year 2006" do
|
|
158
|
+
assert DeepThroat::TopSectors::CYCLES.include?(2006)
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
should "include the year 2008" do
|
|
162
|
+
assert DeepThroat::TopSectors::CYCLES.include?(2008)
|
|
163
|
+
end
|
|
164
|
+
end
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
private
|
|
169
|
+
|
|
170
|
+
def shared_attributes
|
|
171
|
+
@cid = "N00000019"
|
|
172
|
+
@cycle = 2006
|
|
173
|
+
@api_key = DeepThroat.api_key
|
|
174
|
+
|
|
175
|
+
@test_xml = top_sectors_xml.match(/<response>.*/)[0]
|
|
176
|
+
|
|
177
|
+
@name = "Hillary Clinton (D)"
|
|
178
|
+
@origin = "Center for Responsive Politics"
|
|
179
|
+
@source = "http://www.opensecrets.org/politicians/industries.php?cid=N00000019&cycle=2006"
|
|
180
|
+
end
|
|
181
|
+
end
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper'
|
|
2
|
+
|
|
3
|
+
class TestTopSectorsSector < Test::Unit::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
shared_attributes
|
|
6
|
+
DeepThroat.api_key = "fakeapi_key"
|
|
7
|
+
web_faker(:contributions, :cid => @cid, :cycle => @cycle, :api_key => DeepThroat.api_key)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
context "Parsing the XML" do
|
|
11
|
+
setup { @sector = DeepThroat::TopSectors::Sector.parse(@test_xml) }
|
|
12
|
+
|
|
13
|
+
should "the return a 'DeepThroat::TopSectors::Sector' object" do
|
|
14
|
+
assert_kind_of DeepThroat::TopSectors::Sector, @sector
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
should "assign :sector" do
|
|
18
|
+
assert_equal @sector_name, @sector.sector
|
|
19
|
+
assert_kind_of String, @sector.sector
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
should "assign :sectorid" do
|
|
23
|
+
assert_equal @sectorid, @sector.sectorid
|
|
24
|
+
assert_kind_of String, @sector.sectorid
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
should "assign :indivs" do
|
|
28
|
+
assert_equal @indivs, @sector.indivs
|
|
29
|
+
assert_kind_of Integer, @sector.indivs
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
should "assign :pacs" do
|
|
33
|
+
assert_equal @pacs, @sector.pacs
|
|
34
|
+
assert_kind_of Integer, @sector.pacs
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
should "assign :total" do
|
|
38
|
+
assert_equal @total, @sector.total
|
|
39
|
+
assert_kind_of Integer, @sector.total
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
private
|
|
44
|
+
|
|
45
|
+
def shared_attributes
|
|
46
|
+
@cid = "N00000019"
|
|
47
|
+
@cycle = 2006
|
|
48
|
+
|
|
49
|
+
@test_xml = "<sector sector_name=\"Agribusiness\" sectorid=\"A\" indivs=\"210110\" pacs=\"46500\" total=\"256610\" />"
|
|
50
|
+
@sector_name = "Agribusiness"
|
|
51
|
+
@sectorid = "A"
|
|
52
|
+
@indivs = 210110
|
|
53
|
+
@pacs = 46500
|
|
54
|
+
@total = 256610
|
|
55
|
+
end
|
|
56
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
HTTP/1.0 400 Bad Request
|
|
2
|
+
Date: Fri, 06 Mar 2009 14:04:41 GMT
|
|
3
|
+
Server: Apache/2.0.63
|
|
4
|
+
X-Powered-By: PHP/5.2.5
|
|
5
|
+
Vary: Accept-Encoding
|
|
6
|
+
Content-Length: 39
|
|
7
|
+
Content-Type: text/plain
|
|
8
|
+
X-Cache: MISS from www.opensecrets.org
|
|
9
|
+
Connection: close
|
|
10
|
+
|
|
11
|
+
key does not have access to this method
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
HTTP/1.0 400 Bad Request
|
|
2
|
+
Date: Fri, 06 Mar 2009 14:05:59 GMT
|
|
3
|
+
Server: Apache/2.0.63
|
|
4
|
+
X-Powered-By: PHP/5.2.5
|
|
5
|
+
Vary: Accept-Encoding
|
|
6
|
+
Content-Length: 11
|
|
7
|
+
Content-Type: text/plain
|
|
8
|
+
X-Cache: MISS from www.opensecrets.org
|
|
9
|
+
Connection: close
|
|
10
|
+
|
|
11
|
+
Invalid CID
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
HTTP/1.0 400 Bad Request
|
|
2
|
+
Date: Fri, 06 Mar 2009 14:05:31 GMT
|
|
3
|
+
Server: Apache/2.0.63
|
|
4
|
+
X-Powered-By: PHP/5.2.5
|
|
5
|
+
Vary: Accept-Encoding
|
|
6
|
+
Content-Length: 18
|
|
7
|
+
Content-Type: text/plain
|
|
8
|
+
X-Cache: MISS from www.opensecrets.org
|
|
9
|
+
Connection: close
|
|
10
|
+
|
|
11
|
+
Invalid Year|Cycle
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
HTTP/1.0 404 Not Found
|
|
2
|
+
Date: Sun, 12 Apr 2009 20:31:04 GMT
|
|
3
|
+
Server: Apache/2.0.63
|
|
4
|
+
X-Powered-By: PHP/5.2.5
|
|
5
|
+
Vary: Accept-Encoding
|
|
6
|
+
Content-Length: 18
|
|
7
|
+
Content-Type: text/plain
|
|
8
|
+
X-Cache: MISS from www.opensecrets.org
|
|
9
|
+
Connection: close
|
|
10
|
+
|
|
11
|
+
Resource not found
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
HTTP/1.0 200 OK
|
|
2
|
+
Date: Wed, 04 Feb 2009 15:33:43 GMT
|
|
3
|
+
Server: Apache/2.0.63
|
|
4
|
+
X-Powered-By: PHP/5.2.5
|
|
5
|
+
Vary: Accept-Encoding
|
|
6
|
+
Content-Length: 1023
|
|
7
|
+
Content-Type: text/xml; charset=utf-8
|
|
8
|
+
X-Cache: MISS from www.opensecrets.org
|
|
9
|
+
Connection: close
|
|
10
|
+
|
|
11
|
+
<response><contributors cand_name="Hillary Clinton (D)" cid="N00000019" cycle="2006" origin="Center for Responsive Politics" source="http://www.opensecrets.org/politicians/contrib.php?cid=N00000019&cycle=2006" notice="The organizations themselves did not donate, rather the money came from the organization's PAC, its individual members or employees or owners, and those individuals' immediate families." ><contributor org_name="Citigroup Inc" total="228110" /><contributor org_name="Goldman Sachs" total="193570" /><contributor org_name="Metropolitan Life" total="154850" /><contributor org_name="Time Warner" total="138630" /><contributor org_name="Corning Inc" total="135750" /><contributor org_name="Morgan Stanley" total="122560" /><contributor org_name="JP Morgan Chase & Co" total="120075" /><contributor org_name="Credit Suisse Group" total="117650" /><contributor org_name="Skadden, Arps et al" total="108330" /><contributor org_name="Ernst & Young" total="98250" /></contributors></response>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
HTTP/1.0 500 Internal Server Error
|
|
2
|
+
Date: Fri, 06 Mar 2009 14:06:39 GMT
|
|
3
|
+
Server: Apache/2.0.63
|
|
4
|
+
X-Powered-By: PHP/5.2.5
|
|
5
|
+
Vary: Accept-Encoding
|
|
6
|
+
Content-Length: 27
|
|
7
|
+
Content-Type: text/plain
|
|
8
|
+
X-Cache: MISS from www.opensecrets.org
|
|
9
|
+
Connection: close
|
|
10
|
+
|
|
11
|
+
Invalid service: badMethodName
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
HTTP/1.0 200 OK
|
|
2
|
+
Date: Wed, 04 Feb 2009 15:40:38 GMT
|
|
3
|
+
Server: Apache/2.0.63
|
|
4
|
+
X-Powered-By: PHP/5.2.5
|
|
5
|
+
Vary: Accept-Encoding
|
|
6
|
+
Content-Length: 2056
|
|
7
|
+
Content-Type: text/xml; charset=utf-8
|
|
8
|
+
X-Cache: MISS from www.opensecrets.org
|
|
9
|
+
Connection: close
|
|
10
|
+
|
|
11
|
+
<response><industries cand_name="Hillary Clinton (D)" cid="N00000019" cycle="2006" origin="Center for Responsive Politics" source="http://www.opensecrets.org/politicians/industries.php?cid=N00000019&cycle=2006" last_updated="06/04/2007" ><industry industry_name="Lawyers/Law Firms" indivs="3921550" pacs="202695" total="4124245" /><industry industry_name="Securities & Investment" indivs="2302989" pacs="106964" total="2409953" /><industry industry_name="Retired" indivs="2166071" pacs="0" total="2166071" /><industry industry_name="Real Estate" indivs="1964653" pacs="56100" total="2020753" /><industry industry_name="TV/Movies/Music" indivs="1238328" pacs="60500" total="1298828" /><industry industry_name="Business Services" indivs="1096496" pacs="17500" total="1113996" /><industry industry_name="Women's Issues" indivs="940019" pacs="1200" total="941219" /><industry industry_name="Misc Finance" indivs="854572" pacs="0" total="854572" /><industry industry_name="Health Professionals" indivs="739656" pacs="63750" total="803406" /><industry industry_name="Education" indivs="713124" pacs="7000" total="720124" /><industry industry_name="Democratic/Liberal" indivs="514373" pacs="24047" total="538420" /><industry industry_name="Printing & Publishing" indivs="520650" pacs="4700" total="525350" /><industry industry_name="Insurance" indivs="420500" pacs="83150" total="503650" /><industry industry_name="Commercial Banks" indivs="442745" pacs="40750" total="483495" /><industry industry_name="Misc Business" indivs="394756" pacs="0" total="394756" /><industry industry_name="Lobbyists" indivs="341474" pacs="7152" total="348626" /><industry industry_name="Pro-Israel" indivs="305655" pacs="37618" total="343273" /><industry industry_name="Hospitals/Nursing Homes" indivs="277711" pacs="47000" total="324711" /><industry industry_name="Computers/Internet" indivs="297407" pacs="19687" total="317094" /><industry industry_name="Misc Manufacturing & Distributing" indivs="281865" pacs="29000" total="310865" /></industries></response>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
HTTP/1.0 200 OK
|
|
2
|
+
Date: Wed, 04 Feb 2009 15:39:00 GMT
|
|
3
|
+
Server: Apache/2.0.63
|
|
4
|
+
X-Powered-By: PHP/5.2.5
|
|
5
|
+
Vary: Accept-Encoding
|
|
6
|
+
Content-Length: 444
|
|
7
|
+
Content-Type: text/xml; charset=utf-8
|
|
8
|
+
X-Cache: MISS from www.opensecrets.org
|
|
9
|
+
Connection: close
|
|
10
|
+
|
|
11
|
+
<response><candIndus cand_name="Clinton, Hillary" cid="N00000019" cycle="2008" industry="Crop Production " chamber="S" party="D" state="New York " total="218291" indivs="211491" pacs="6800" rank="4" origin="Center for Responsive Politics" source="http://www.opensecrets.org/industries/recips.php?Ind=A01&cycle=2008&recipdetail=S&Mem=Y&sortorder=U" last_updated="1/5/09" /></response>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
HTTP/1.0 200 OK
|
|
2
|
+
Date: Wed, 04 Feb 2009 15:49:33 GMT
|
|
3
|
+
Server: Apache/2.0.63
|
|
4
|
+
X-Powered-By: PHP/5.2.5
|
|
5
|
+
Vary: Accept-Encoding
|
|
6
|
+
Content-Length: 5706
|
|
7
|
+
Content-Type: text/xml; charset=utf-8
|
|
8
|
+
X-Cache: MISS from www.opensecrets.org
|
|
9
|
+
Connection: close
|
|
10
|
+
|
|
11
|
+
<response><member_profile name="Clinton, Hillary" member_id="N00000019" net_low="10409018" net_high="51232000" positions_held_count="1" asset_count="168" asset_low="10409018" asset_high="51232000" transaction_count="169" tx_low="11241168" tx_high="26040000" source="http://www.opensecrets.org/pfds/CIDSummary.php?CID=N00000019&year=2007" origin="Center for Responsive Politics" update_timestamp="1/26/09" ><assets><asset name="Citibank Deposit Accounts" holdings_low="5000001" holdings_high="25000000" industry="" sector="" subsidiary_of="" /><asset name="Citibank Market Deposit Account" holdings_low="5000001" holdings_high="25000000" industry="" sector="" subsidiary_of="" /><asset name="US Treasury Note" holdings_low="133007" holdings_high="347000" industry="" sector="" subsidiary_of="" /><asset name="National Life Life Insurance" holdings_low="100001" holdings_high="250000" industry="" sector="" subsidiary_of="" /><asset name="Freddie Mac Bond" holdings_low="65002" holdings_high="150000" industry="Real Estate" sector="Finance/Insur/RealEst" subsidiary_of="Freddie Mac" /><asset name="Fannie Mae Bond" holdings_low="51002" holdings_high="116000" industry="Real Estate" sector="Finance/Insur/RealEst" subsidiary_of="" /><asset name="Northwestern Mutual Life Insurance" holdings_low="30002" holdings_high="100000" industry="Insurance" sector="Finance/Insur/RealEst" subsidiary_of="" /><asset name="Quellos Alpha Engine LP" holdings_low="15001" holdings_high="50000" industry="" sector="" subsidiary_of="" /><asset name="Arkansas Public Employees Retirement Sys" holdings_low="15001" holdings_high="50000" industry="" sector="" subsidiary_of="" /><asset name="New York State Thruway Authority Bond" holdings_low="0" holdings_high="4000" industry="" sector="" subsidiary_of="" /><asset name="New York, NY G/O Bond" holdings_low="0" holdings_high="2000" industry="" sector="" subsidiary_of="" /><asset name="New York City Bond" holdings_low="0" holdings_high="2000" industry="" sector="" subsidiary_of="" /><asset name="New York State Dorm Auth Bond" holdings_low="0" holdings_high="2000" industry="" sector="" subsidiary_of="" /><asset name="JPMorgan Chase & Co" holdings_low="0" holdings_high="2000" industry="Commercial Banks" sector="Finance/Insur/RealEst" subsidiary_of="" /><asset name="Triborough Bridge & Tunnel New York Bond" holdings_low="0" holdings_high="2000" industry="" sector="" subsidiary_of="" /><asset name="Liberty Global Inc" holdings_low="0" holdings_high="2000" industry="" sector="" subsidiary_of="" /><asset name="Liberty Media" holdings_low="0" holdings_high="2000" industry="TV/Movies/Music" sector="Communic/Electronics" subsidiary_of="" /><asset name="Magna International" holdings_low="0" holdings_high="1000" industry="Automotive" sector="Transportation" subsidiary_of="" /><asset name="Merrill Lynch" holdings_low="0" holdings_high="1000" industry="Securities & Investment" sector="Finance/Insur/RealEst" subsidiary_of="" /><asset name="Metropolitan New York Trns Auth Bond" holdings_low="0" holdings_high="1000" industry="" sector="" subsidiary_of="" /></assets><transactions><transaction asset_name="Biogen Idec" tx_date="May 16 2007" tx_action="Sold" value_low="250001" value_high="500000" /><transaction asset_name="Cisco Systems" tx_date="May 16 2007" tx_action="Sold" value_low="250001" value_high="500000" /><transaction asset_name="General Electric" tx_date="May 16 2007" tx_action="Sold" value_low="250001" value_high="500000" /><transaction asset_name="Home Depot" tx_date="May 16 2007" tx_action="Sold" value_low="250001" value_high="500000" /><transaction asset_name="Merrill Lynch" tx_date="May 16 2007" tx_action="Sold" value_low="250001" value_high="500000" /><transaction asset_name="Microsoft Corp" tx_date="May 16 2007" tx_action="Sold" value_low="250001" value_high="500000" /><transaction asset_name="Texas Instruments" tx_date="May 16 2007" tx_action="Sold" value_low="250001" value_high="500000" /><transaction asset_name="Time Warner" tx_date="May 16 2007" tx_action="Sold" value_low="250001" value_high="500000" /><transaction asset_name="Walt Disney Co" tx_date="May 16 2007" tx_action="Sold" value_low="250001" value_high="500000" /><transaction asset_name="Bank of America" tx_date="May 16 2007" tx_action="Sold" value_low="100001" value_high="250000" /><transaction asset_name="Autodesk Inc" tx_date="May 16 2007" tx_action="Sold" value_low="100001" value_high="250000" /><transaction asset_name="Abbott Laboratories" tx_date="May 16 2007" tx_action="Sold" value_low="100001" value_high="250000" /><transaction asset_name="Anadarko Petroleum" tx_date="May 16 2007" tx_action="Sold" value_low="100001" value_high="250000" /><transaction asset_name="Amgen Inc" tx_date="May 16 2007" tx_action="Sold" value_low="100001" value_high="250000" /><transaction asset_name="American International Group" tx_date="May 16 2007" tx_action="Sold" value_low="100001" value_high="250000" /><transaction asset_name="American Express" tx_date="May 16 2007" tx_action="Sold" value_low="100001" value_high="250000" /><transaction asset_name="Amazon.com" tx_date="May 16 2007" tx_action="Sold" value_low="100001" value_high="250000" /><transaction asset_name="Alcoa Inc" tx_date="May 16 2007" tx_action="Sold" value_low="100001" value_high="250000" /><transaction asset_name="Cablevision Systems" tx_date="May 16 2007" tx_action="Sold" value_low="100001" value_high="250000" /><transaction asset_name="Caterpillar Inc" tx_date="May 16 2007" tx_action="Sold" value_low="100001" value_high="250000" /></transactions><positions><position title="Secretary/Treasurer" organization="Clinton Family Foundation" /></positions></member_profile></response>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
HTTP/1.0 200 OK
|
|
2
|
+
Date: Wed, 04 Feb 2009 15:50:42 GMT
|
|
3
|
+
Server: Apache/2.0.63
|
|
4
|
+
X-Powered-By: PHP/5.2.5
|
|
5
|
+
Vary: Accept-Encoding
|
|
6
|
+
Content-Length: 6547
|
|
7
|
+
Content-Type: text/xml; charset=utf-8
|
|
8
|
+
X-Cache: MISS from www.opensecrets.org
|
|
9
|
+
Connection: close
|
|
10
|
+
|
|
11
|
+
<response><trips member_name="Clinton, Hillary" record_count="23" cid="N00000019" year="2006" origin="Center for Responsive Politics" source="http://opensecrets.org/travel/search_results.php?id=N00000019" last_updated="5/16/08" ><trip traveler="Tamera S. Luzzatto" start_date="01/02/2006" end_date="01/09/2006" destination="Israel" sponsor="Jewish Community Relations Cncl/NY" purpose="To observe security procedures and attend briefings." cost="4049.70" guests=" " relationship=" " /><trip traveler="Melissa Ho" start_date="02/23/2006" end_date="02/25/2006" destination="New York City, New York" sponsor="Stone Barns Center for Food & Agricul" purpose="Strategic planning meetings, constituent meetings" cost="375.54" guests=" " relationship=" " /><trip traveler="Amitabh Desai" start_date="04/07/2006" end_date="04/11/2006" destination="New York, New York" sponsor="Humpty Dumpty Institute" purpose="Participate in Congressional delegation to the United Nations" cost="420.00" guests=" " relationship=" " /><trip traveler="Tamera S. Luzzatto" start_date="04/19/2006" end_date="04/20/2006" destination="Boston, Massachusetts" sponsor="Institute of Politics at Harvard Univers" purpose="Met with leaders of the Kennedy School of Government and give guest lectures at their Institute of Politics" cost="759.77" guests=" " relationship=" " /><trip traveler="Tamera S. Luzzatto" start_date="06/12/2006" end_date="06/12/2006" destination="Binghamton, New York" sponsor="Lockheed Martin" purpose="Staff Senator Clinton's participation in ribbon-cutting ceremony of new Lockheed Martin facility generating jobs in New York." cost="526.00" guests=" " relationship=" " /><trip traveler="Andrew Shapiro" start_date="06/12/2006" end_date="06/12/2006" destination="Binghamton, New York" sponsor="Lockheed Martin" purpose="Staff Senator Clinton's participation in ribbon-cutting ceremony of new Lockheed Martin facility generating jobs in New York." cost="526.00" guests=" " relationship=" " /><trip traveler="Hillary Rodham Clinton" start_date="06/12/2006" end_date="06/12/2006" destination="Dulles, Virginia" sponsor="Lockheed Martin" purpose="Speaking engagement/Announcement" cost="385.00" guests=" " relationship=" " /><trip traveler="Huma Abedin" start_date="06/12/2006" end_date="06/12/2006" destination="Dulles, Virginia" sponsor="Lockheed Martin" purpose="Speaking engagement/Announcement" cost="385.00" guests=" " relationship=" " /><trip traveler="Gregory M. Walton" start_date="06/22/2006" end_date="06/25/2006" destination="Long Beach, California" sponsor="Multiple Sponsors" purpose="Attend Annual Conference of the Society for the Psychological Study of Social Issues" cost="1278.39" guests=" " relationship=" " /><trip traveler="Tamera S. Luzzatto" start_date="07/22/2006" end_date="07/24/2006" destination="Denver, Colorado" sponsor="Democratic Leadership Council" purpose="In conjunction with the Senator's keynote speech at the DLC convention" cost="1868.35" guests=" " relationship=" " /><trip traveler="Laurie Rubiner" start_date="07/22/2006" end_date="07/24/2006" destination="Denver, Colorado" sponsor="Democratic Leadership Council" purpose="In conjunction with the Senator's keynote speech at the DLC convention" cost="1846.15" guests=" " relationship=" " /><trip traveler="Huma Abedin" start_date="07/23/2006" end_date="07/24/2006" destination="Denver, Colorado" sponsor="Democratic Leadership Council" purpose="In conjunction with the Senator's keynote speech at the DLC Convention" cost="1133.00" guests=" " relationship=" " /><trip traveler="Hillary Rodham Clinton" start_date="07/23/2006" end_date="07/24/2006" destination="Denver, Colorado" sponsor="Democratic Leadership Council" purpose="Keynote speech at the DLC Convention" cost="1133.00" guests=" " relationship=" " /><trip traveler="Lorraine Voles" start_date="07/31/2006" end_date="07/31/2006" destination="Buffalo, New York" sponsor="Pfizer Inc" purpose="To staff Senator Clinton at &quot;Upstate New York Biotech Day,&quot; an event co-hosted by New Jobs for New York and Pfizer, where Sen. Clinton was a moderator and participant in panels." cost="670.00" guests=" " relationship=" " /><trip traveler="Laurie Rubiner" start_date="08/25/2006" end_date="08/31/2006" destination="Germany" sponsor="American Council on Germany" purpose="To participate in the Young Leader Conference hosted by American" cost="2075.00" guests=" " relationship=" " /><trip traveler="Andrew Shapiro" start_date="09/16/2006" end_date="09/17/2006" destination="Montebello, New York" sponsor="Montebello Jewish Center" purpose="Speech to members of Montebello Jewish Center congregation" cost="188.61" guests=" " relationship=" " /><trip traveler="Huma Abedin" start_date="09/21/2006" end_date="09/21/2006" destination="New York, New York" sponsor="William J Clinton Foundation" purpose="Speech and panel discussion" cost="475.00" guests=" " relationship=" " /><trip traveler="Hillary Rodham Clinton" start_date="09/21/2006" end_date="09/21/2006" destination="New York, New York" sponsor="William J Clinton Foundation" purpose="Speech and panel discussion" cost="900.00" guests=" " relationship=" " /><trip traveler="Ann Gavaghan" start_date="10/26/2006" end_date="10/27/2006" destination="Durham, North Carolina" sponsor="Multiple Sponsors" purpose="To present at and attend the Duke Environmental Law and Policy Forum" cost="700.60" guests=" " relationship=" " /><trip traveler="Kris M. Balderston" start_date="11/30/2006" end_date="" destination="New York, New York" sponsor="Commission on Indpt Colleges & Univs" purpose="To speak at a conference to university presidents about upstate issues and economic development." cost="376.59" guests=" " relationship=" " /><trip traveler="Joshua Williams" start_date="12/18/2006" end_date="12/18/2006" destination="New York, New York" sponsor="Managed Funds Assn" purpose="Hedge Fund site visits - to discuss policy and regulation issues with hedge fund professionals" cost="526.80" guests=" " relationship=" " /><trip traveler="Huma Abedin" start_date="12/30/2005" end_date="01/01/2006" destination="Charleston, South Carolina" sponsor="Renaissance Weekend" purpose="Speaking engagement and seminars" cost="380.00" guests=" " relationship=" " /><trip traveler="Hillary Rodham Clinton" start_date="12/30/2005" end_date="01/01/2006" destination="Charleston, South Carolina" sponsor="Renaissance Weekend" purpose="Speaking engagement and seminars" cost="380.00" guests=" " relationship=" " /></trips></response>
|