yanser 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/README +21 -1
- data/Rakefile +31 -4
- data/bin/yanser +8 -8
- data/lib/yanser/error.rb +11 -0
- data/lib/yanser/opt_parser.rb +313 -0
- data/lib/yanser/version.rb +3 -0
- data/lib/yanser/yanser.rb +135 -0
- data/test/test_opt_parser.rb +138 -0
- data/test/test_yanser.rb +7 -3
- metadata +13 -22
- data/README.rdoc +0 -21
- data/lib/option_parser.rb +0 -263
- data/lib/version.rb +0 -3
- data/lib/yanser.rb +0 -121
- data/test/data/bad_xml.txt +0 -236
- data/test/data/empty_result.txt +0 -13
- data/test/data/error_code.txt +0 -237
- data/test/data/response_with_error.txt +0 -15
- data/test/data/successfull_response.txt +0 -237
- data/test/test_option_parser.rb +0 -91
- data/test/yanapi/test_query.rb +0 -112
- data/test/yanapi/test_term_query.rb +0 -64
@@ -1,237 +0,0 @@
|
|
1
|
-
HTTP/1.1 200 OK
|
2
|
-
Date: Thu, 27 Jan 2011 14:08:59 GMT
|
3
|
-
P3P: policyref="http://info.yahoo.com/w3c/p3p.xml", CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE LOC GOV"
|
4
|
-
Vary: Accept-Encoding
|
5
|
-
Connection: close
|
6
|
-
Transfer-Encoding: chunked
|
7
|
-
Content-Type: text/xml; charset=utf-8
|
8
|
-
Cache-Control: private
|
9
|
-
|
10
|
-
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
11
|
-
<ResultSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:yahoo:answers" xsi:schemaLocation="urn:yahoo:answers http://answers.yahooapis.com/AnswersService/V1/QuestionResponse.xsd">
|
12
|
-
<Question id="20080307115814AARQDKS" type="Answered">
|
13
|
-
<Subject>Wo kann ich in RheinlandPfalz Region Donnersberg ein Gemuesekistenabo vom Biobauern bekommen?</Subject>
|
14
|
-
<Content>
|
15
|
-
</Content>
|
16
|
-
<Date>2008-03-07 11:58:14</Date>
|
17
|
-
<Timestamp>1204919894</Timestamp>
|
18
|
-
<Link>http://de.answers.yahoo.com/question/?qid=20080307115814AARQDKS</Link>
|
19
|
-
<Category id="396545372">Sonstiges - Essen & Trinken</Category>
|
20
|
-
<UserId>EBt4evYzaa</UserId>
|
21
|
-
<UserNick>Anja</UserNick>
|
22
|
-
<UserPhotoURL>http://l.yimg.com/a/i/identity/nopic_48.gif</UserPhotoURL>
|
23
|
-
<NumAnswers>2</NumAnswers>
|
24
|
-
<NumComments>0</NumComments>
|
25
|
-
<ChosenAnswer>http://www.gemuesekiste.de/index.cfm?page=anbieter_bl</ChosenAnswer>
|
26
|
-
<ChosenAnswererId>QfhvwrqPaa</ChosenAnswererId>
|
27
|
-
<ChosenAnswererNick>feinschmeckerde</ChosenAnswererNick>
|
28
|
-
<ChosenAnswerTimestamp>1204929973</ChosenAnswerTimestamp>
|
29
|
-
<ChosenAnswerAwardTimestamp>1205435661</ChosenAnswerAwardTimestamp>
|
30
|
-
</Question>
|
31
|
-
<Question id="20090623132429AAvoGCw" type="Answered">
|
32
|
-
<Subject>Freiwilliges ökologisches jahr in Rheinlandpfalz zu spät?</Subject>
|
33
|
-
<Content>Bin ich da zu spät oder geht noch was?
|
34
|
-
|
35
|
-
|
36
|
-
Wenn nicht was kann ich machen? Wie könnte ich das Jahr überbrücken.
|
37
|
-
</Content>
|
38
|
-
<Date>2009-06-23 13:24:29</Date>
|
39
|
-
<Timestamp>1245788669</Timestamp>
|
40
|
-
<Link>http://de.answers.yahoo.com/question/?qid=20090623132429AAvoGCw</Link>
|
41
|
-
<Category id="396545364">Sonstiges - Schule & Bildung</Category>
|
42
|
-
<UserId>J6pND01qaa</UserId>
|
43
|
-
<UserNick>Schack K</UserNick>
|
44
|
-
<UserPhotoURL>http://l.yimg.com/a/i/identity/nopic_48.gif</UserPhotoURL>
|
45
|
-
<NumAnswers>1</NumAnswers>
|
46
|
-
<NumComments>0</NumComments>
|
47
|
-
<ChosenAnswer>Es ist noch nicht zu spät, aber beeil dich. Du solltest bis 30.7. Zeit haben:
|
48
|
-
http://www.foej.de/traeger.html
|
49
|
-
|
50
|
-
bzw. nur für RLP: http://www.foej-rlp.de/, evtl. vorab telefonisch anfragen und dann ggf. die Bewerbung (sollte fertig sein) hinterherschicken, erspart Bewerbungen, die sowieso in der Tonne landen.
|
51
|
-
|
52
|
-
Viel Glück und viel Spaß!</ChosenAnswer>
|
53
|
-
<ChosenAnswererId>LgL6WSoraa</ChosenAnswererId>
|
54
|
-
<ChosenAnswererNick>momo</ChosenAnswererNick>
|
55
|
-
<ChosenAnswerTimestamp>1245822423</ChosenAnswerTimestamp>
|
56
|
-
<ChosenAnswerAwardTimestamp>1246115817</ChosenAnswerAwardTimestamp>
|
57
|
-
</Question>
|
58
|
-
<Question id="20080506133823AAmd6Xj" type="Answered">
|
59
|
-
<Subject>Gibt es noch eine Region in Deutschland wo es so viele verschiedene Dialekte gibt wie in der Pfalz?</Subject>
|
60
|
-
<Content>Pfälzisch ist ein Dialekt, der schwierig zu erlernen und nachzuahmen ist, denn in der ländlich geprägten Pfalz spricht noch heute jede Region und Ortschaft ihren spezifischen Dialekt, der alle paar Kilometer seine Färbung ändert. Ein Pirmasenser (Südwestpfalz) unterscheidet sich deutlich von einem Landauer. Ein Landauer (Südpfalz) unterscheidet sich deutlich von einem Ludwigshäfer (Vorderpfalz). Und ein Ludwigshafener unterscheidet sich ebenso deutlich von einem Kaiserslauterer (Westpfalz).
|
61
|
-
</Content>
|
62
|
-
<Date>2008-05-06 13:38:23</Date>
|
63
|
-
<Timestamp>1210106303</Timestamp>
|
64
|
-
<Link>http://de.answers.yahoo.com/question/?qid=20080506133823AAmd6Xj</Link>
|
65
|
-
<Category id="396546962">Rheinland-Pfalz</Category>
|
66
|
-
<UserId>9QeMUvgdaa</UserId>
|
67
|
-
<UserNick>Heidi</UserNick>
|
68
|
-
<UserPhotoURL>http://l.yimg.com/dg/users/1IzLIImc-AAEBQqFpQBPkArJCGTlbd98x4gI=.medium.png</UserPhotoURL>
|
69
|
-
<NumAnswers>5</NumAnswers>
|
70
|
-
<NumComments>0</NumComments>
|
71
|
-
<ChosenAnswer>mir pälzer sinn ähmolisch :-)
|
72
|
-
Wir Pfälzer sind einmalig :-)</ChosenAnswer>
|
73
|
-
<ChosenAnswererId>JIpBCUdMaa</ChosenAnswererId>
|
74
|
-
<ChosenAnswererNick>ஜ.DARK.ஜ</ChosenAnswererNick>
|
75
|
-
<ChosenAnswerTimestamp>1210138558</ChosenAnswerTimestamp>
|
76
|
-
<ChosenAnswerAwardTimestamp>1210160631</ChosenAnswerAwardTimestamp>
|
77
|
-
</Question>
|
78
|
-
<Question id="20090201080835AAS78iS" type="Answered">
|
79
|
-
<Subject>Wo kann man sich in Rheinland Pfalz auf Geschlechtskrankheiten untersuchen lassen?</Subject>
|
80
|
-
<Content>Ich würde mich gern auf Geschlechtskrankheiten untersuchen lassen, aber ich weiss nicht wie das in Deutschland geht. Gibt es besondere Kliniks oder sollte ich dem Krankenhaus anrufen?
|
81
|
-
Ich bin Ausländerin und wohne seit ein paar Monaten hier...
|
82
|
-
</Content>
|
83
|
-
<Date>2009-02-01 08:08:35</Date>
|
84
|
-
<Timestamp>1233504515</Timestamp>
|
85
|
-
<Link>http://de.answers.yahoo.com/question/?qid=20090201080835AAS78iS</Link>
|
86
|
-
<Category id="396545390">Geschlechtskrankheiten</Category>
|
87
|
-
<UserId>75WCghuTaa</UserId>
|
88
|
-
<UserNick>Laura C</UserNick>
|
89
|
-
<UserPhotoURL>http://l.yimg.com/q/users/14zzdbfYBAAEB4wSDNt3ACw==.medium.jpg</UserPhotoURL>
|
90
|
-
<NumAnswers>12</NumAnswers>
|
91
|
-
<NumComments>0</NumComments>
|
92
|
-
<ChosenAnswer>Du kannst einfach ins Krankenhaus oder zum Frauen artz gehen, und dich dort informeiren.
|
93
|
-
Einige Kliniken bieten das auch an.
|
94
|
-
Aber du kannst dort einfach Nachfragen, dei wissen es am besten</ChosenAnswer>
|
95
|
-
<ChosenAnswererId>lb5u6wNkaa</ChosenAnswererId>
|
96
|
-
<ChosenAnswererNick>Nisi</ChosenAnswererNick>
|
97
|
-
<ChosenAnswerTimestamp>1233504759</ChosenAnswerTimestamp>
|
98
|
-
<ChosenAnswerAwardTimestamp>1233648510</ChosenAnswerAwardTimestamp>
|
99
|
-
</Question>
|
100
|
-
<Question id="20090118023353AAXzf4k" type="Answered">
|
101
|
-
<Subject>Was kann ich machen bei regenwetter in Landau in der Pfalz und umgebung?</Subject>
|
102
|
-
<Content>
|
103
|
-
</Content>
|
104
|
-
<Date>2009-01-18 02:33:53</Date>
|
105
|
-
<Timestamp>1232274833</Timestamp>
|
106
|
-
<Link>http://de.answers.yahoo.com/question/?qid=20090118023353AAXzf4k</Link>
|
107
|
-
<Category id="396547136">Sonstige Städte - Deutschland</Category>
|
108
|
-
<UserId>rx6f8RhZaa</UserId>
|
109
|
-
<UserNick>Seppo29</UserNick>
|
110
|
-
<UserPhotoURL>http://l.yimg.com/a/i/identity/nopic_48.gif</UserPhotoURL>
|
111
|
-
<NumAnswers>6</NumAnswers>
|
112
|
-
<NumComments>0</NumComments>
|
113
|
-
<ChosenAnswer>Im Cart-Center Indoor Cart fahren oder auch ins schöne Kino ( es gibt ein älteres billigeres Kino ich bevorzuge jedoch das Kino FilmWelt ) Auch shoppen kann sehr schön sein.
|
114
|
-
|
115
|
-
|
116
|
-
Abends würde ich mich jedoch nicht in Landau aufhalten ( in den straßen herum laufen , in kinos oder cafes sind O.K. ) dar die jungendlichen sehr gerne ärger ( also schlägereien oder leute zum beleidigen) suchen .
|
117
|
-
|
118
|
-
ICH WÜNSCHE DIR VIEL SPASS IN LANDAU
|
119
|
-
MFG Trashy xD</ChosenAnswer>
|
120
|
-
<ChosenAnswererId>cgrzC1HRaa</ChosenAnswererId>
|
121
|
-
<ChosenAnswererNick>trashkill</ChosenAnswererNick>
|
122
|
-
<ChosenAnswerTimestamp>1232275350</ChosenAnswerTimestamp>
|
123
|
-
<ChosenAnswerAwardTimestamp>1232495758</ChosenAnswerAwardTimestamp>
|
124
|
-
</Question>
|
125
|
-
<Question id="20090331072343AAGU6ZL" type="Answered">
|
126
|
-
<Subject>Parcour Verein in der Oberpfalz Raum Weiden oder Umgebung?</Subject>
|
127
|
-
<Content>Hi kennt ihr einen Verein der Parcour anbietet oder sowas in der Richtung??
|
128
|
-
Also ich wohn in Weiden i.d.Opf und der Verein sollt halt ned zuweit entfernt sein...
|
129
|
-
</Content>
|
130
|
-
<Date>2009-03-31 07:23:43</Date>
|
131
|
-
<Timestamp>1238509423</Timestamp>
|
132
|
-
<Link>http://de.answers.yahoo.com/question/?qid=20090331072343AAGU6ZL</Link>
|
133
|
-
<Category id="396545468">Sonstige Sportarten</Category>
|
134
|
-
<UserId>oIW6fEB8aa</UserId>
|
135
|
-
<UserNick>Philip</UserNick>
|
136
|
-
<UserPhotoURL>http://l.yimg.com/a/i/identity/nopic_48.gif</UserPhotoURL>
|
137
|
-
<NumAnswers>2</NumAnswers>
|
138
|
-
<NumComments>0</NumComments>
|
139
|
-
<ChosenAnswer>Am besten fragst du mal die Reitvereine in dieser Umgebung an, ob die welche Parcours kennen. Die werden dir sicherlich sagen, wo es welche gibt.
|
140
|
-
|
141
|
-
|
142
|
-
Z.B.: http://www.bayerntours.com/opw/freizeit/reiten.htm
|
143
|
-
|
144
|
-
Reiten in der Oberpfalz, - ein unvergessliches Erlebnis für Sie und Ihr Pferd. Genießen Sie die einzigartige Landschaft zwischen dem Urgebirge des Bayerischen und des Oberpfälzer Waldes mit seinen weiten schwingenden Höhen (300-800m ü. N.N.) und dem Kalkgebirge des Jura mit seinen bizarren Felsen und tiefen Höhlen im Westen, - ein herbes, dünn besiedeltes land mit vielen Teichen, klaren Bächen und unergründlichen Flüssen, die aus den tiefen Wälder kommen, überragt von den alten Burgen und mächtigen Ruinen, die einen weiten Blick über die stille Landschaft gewähren und stumme Zeugen unserer Geschichte sind. Hier mit dem Pferd unterwegs zu sein, heißt auch auf fast 10.000 km2 alle Möglichkeiten zu finden: von leichten Tagesetappen bis hin zu anspruchsvollen Berg- und Distanzritten, von der kleinen gemütlichen Wanderreitstation bis hin zur professionellen Reitsportanlage.</ChosenAnswer>
|
145
|
-
<ChosenAnswererId>E1Q70EQvaa</ChosenAnswererId>
|
146
|
-
<ChosenAnswererNick>paratrooper</ChosenAnswererNick>
|
147
|
-
<ChosenAnswerTimestamp>1238883853</ChosenAnswerTimestamp>
|
148
|
-
<ChosenAnswerAwardTimestamp>1239374636</ChosenAnswerAwardTimestamp>
|
149
|
-
</Question>
|
150
|
-
<Question id="20110123171356AAX0nSj" type="Answered">
|
151
|
-
<Subject>Warum räumt man einem Irren in der Pfalz sein Waffenarsenal aus, und Iran die Atombombe bauen?</Subject>
|
152
|
-
<Content>
|
153
|
-
@?: Erkläre mir bitte den Inhalt Deiner Antwort. Danke
|
154
|
-
@Engin: Und läßt Iran die Atombombe bauen.
|
155
|
-
|
156
|
-
So mancher Superarsch hier sollte sich einmal seine Rechtschreibung und Satzstellung betrachten, bevor er andere maß regelt.
|
157
|
-
</Content>
|
158
|
-
<Date>2011-01-23 17:13:56</Date>
|
159
|
-
<Timestamp>1295831636</Timestamp>
|
160
|
-
<Link>http://de.answers.yahoo.com/question/?qid=20110123171356AAX0nSj</Link>
|
161
|
-
<Category id="396545442">Sonstiges - Nachrichten & Medien</Category>
|
162
|
-
<UserId>7i0Zjl6Faa</UserId>
|
163
|
-
<UserNick>Manamana</UserNick>
|
164
|
-
<UserPhotoURL>http://l.yimg.com/a/i/identity/profile_48a.png</UserPhotoURL>
|
165
|
-
<NumAnswers>14</NumAnswers>
|
166
|
-
<NumComments>0</NumComments>
|
167
|
-
<ChosenAnswer>Weil im Iran nicht das deutsche Waffengesetz gilt.</ChosenAnswer>
|
168
|
-
<ChosenAnswererId>J9STtpUnaa</ChosenAnswererId>
|
169
|
-
<ChosenAnswererNick>Desperadox</ChosenAnswererNick>
|
170
|
-
<ChosenAnswerTimestamp>1295834232</ChosenAnswerTimestamp>
|
171
|
-
<ChosenAnswerAwardTimestamp>1295917544</ChosenAnswerAwardTimestamp>
|
172
|
-
</Question>
|
173
|
-
<Question id="20071231002838AAV6P8g" type="Answered">
|
174
|
-
<Subject>Wie lange hat der Aldi Süd in Rheinland-Pfalz heute geöffnet!?..:-D?</Subject>
|
175
|
-
<Content>
|
176
|
-
</Content>
|
177
|
-
<Date>2007-12-31 00:28:38</Date>
|
178
|
-
<Timestamp>1199089718</Timestamp>
|
179
|
-
<Link>http://de.answers.yahoo.com/question/?qid=20071231002838AAV6P8g</Link>
|
180
|
-
<Category id="396545372">Sonstiges - Essen & Trinken</Category>
|
181
|
-
<UserId>d913b2c41d1223e16b35ef2127cae18caa</UserId>
|
182
|
-
<UserNick>Sweety</UserNick>
|
183
|
-
<UserPhotoURL>http://l.yimg.com/q/users/1XNi2YcGMAAED-GF6PBPpwpmkFgHjYaEM.medium.jpg</UserPhotoURL>
|
184
|
-
<NumAnswers>7</NumAnswers>
|
185
|
-
<NumComments>0</NumComments>
|
186
|
-
<ChosenAnswer>Jo, der erste hat recht. es haben heute deutschlandweit alle Lebensmittelgeschäfte bis max. 14 Uhr geöffnet. RLP erst recht.</ChosenAnswer>
|
187
|
-
<ChosenAnswererId>bPCz7JOCaa</ChosenAnswererId>
|
188
|
-
<ChosenAnswererNick>Tolula</ChosenAnswererNick>
|
189
|
-
<ChosenAnswerTimestamp>1199090785</ChosenAnswerTimestamp>
|
190
|
-
<ChosenAnswerAwardTimestamp>1199299531</ChosenAnswerAwardTimestamp>
|
191
|
-
</Question>
|
192
|
-
<Question id="20090621063405AAZ4Q67" type="Answered">
|
193
|
-
<Subject>Wer kennt einen Badesee für Menschen und Hunde im Umkreis von 100 km von Frankenthal in der Pfalz?</Subject>
|
194
|
-
<Content>Unser Hund ist total verrückt nach Wasser und wir schwimmen selber gerne. Vielleicht weiß ja jemand einen See in unserer Nähe.
|
195
|
-
Danke im Vorraus
|
196
|
-
</Content>
|
197
|
-
<Date>2009-06-21 06:34:05</Date>
|
198
|
-
<Timestamp>1245591245</Timestamp>
|
199
|
-
<Link>http://de.answers.yahoo.com/question/?qid=20090621063405AAZ4Q67</Link>
|
200
|
-
<Category id="396546021">Hunde</Category>
|
201
|
-
<UserId>dwmZQQz2aa</UserId>
|
202
|
-
<UserNick>xyz</UserNick>
|
203
|
-
<UserPhotoURL>http://l.yimg.com/a/i/identity/nopic_48.gif</UserPhotoURL>
|
204
|
-
<NumAnswers>2</NumAnswers>
|
205
|
-
<NumComments>0</NumComments>
|
206
|
-
<ChosenAnswer>Leider wohne ich nicht in deinem BL.
|
207
|
-
Ich kann dir aber den Tipp geben, mal beim Ordnungsamt nachzufragen. Die kennen alle für Hunde freigegebenen Flächen und auch Badeseen in deiner Umgebung. Wenn es da etwas gibt, können die dir das ganz sicher sagen. Und du hast die Gewissheit, dass es stimmt; das es nicht auf einmal ein böses Erwachen gibt, wenn der eine oder andere Tipp nicht korrekt sein sollte und du dir ein saftiges Bußgeld einhandelst...</ChosenAnswer>
|
208
|
-
<ChosenAnswererId>98cbabfe27423bbb32604382c4c71f1eaa</ChosenAnswererId>
|
209
|
-
<ChosenAnswererNick>Conny N</ChosenAnswererNick>
|
210
|
-
<ChosenAnswerTimestamp>1245591911</ChosenAnswerTimestamp>
|
211
|
-
<ChosenAnswerAwardTimestamp>1246307055</ChosenAnswerAwardTimestamp>
|
212
|
-
</Question>
|
213
|
-
<Question id="20090310111213AAs0Rtp" type="Answered">
|
214
|
-
<Subject>Dieser Vera Test in Mathe in Rheinlandpfalz ist der Wichtig?</Subject>
|
215
|
-
<Content>Dieser Vera Test in Mathe in Rheinlandpfalz ist der Wichtig
|
216
|
-
</Content>
|
217
|
-
<Date>2009-03-10 11:12:13</Date>
|
218
|
-
<Timestamp>1236708733</Timestamp>
|
219
|
-
<Link>http://de.answers.yahoo.com/question/?qid=20090310111213AAs0Rtp</Link>
|
220
|
-
<Category id="396547121">Prüfungen & Tests</Category>
|
221
|
-
<UserId>iTqmmCfgaa</UserId>
|
222
|
-
<UserNick>alexanderpeskov</UserNick>
|
223
|
-
<UserPhotoURL>http://l.yimg.com/a/i/identity/nopic_48.gif</UserPhotoURL>
|
224
|
-
<NumAnswers>3</NumAnswers>
|
225
|
-
<NumComments>0</NumComments>
|
226
|
-
<ChosenAnswer>Also ich komme aus NRW. Man hat uns das so erklärt wenn man zwischen zwei Noten steht wird dann der Vera Test mitgezählt .
|
227
|
-
Erste Arbeit schreibst du zum Beispiel eine 3 und die zweite eine 4. Du stehst dann wahrscheinlich zwischen 3 und 4.
|
228
|
-
Aber wenn du im Vera Test eine 3 hast. Bekommst du die 3. Im Vera Test gibt es nur die Bewertung 1,2,3,4. 4 ist das Beste und 1 das schlechteste. Wenn du Ende des Schuljahres nicht zwischen zwei Noten stehst ,kannst du die so schlecht schreiben wie du willst, ich würde es aber nicht drauf ankommen lassen.
|
229
|
-
Hier ist noch ein guter Link mit guten Übungen!
|
230
|
-
Lg Jasmin</ChosenAnswer>
|
231
|
-
<ChosenAnswererId>txY2KnKvaa</ChosenAnswererId>
|
232
|
-
<ChosenAnswererNick>Minnie.</ChosenAnswererNick>
|
233
|
-
<ChosenAnswerTimestamp>1236709511</ChosenAnswerTimestamp>
|
234
|
-
<ChosenAnswerAwardTimestamp>1237228410</ChosenAnswerAwardTimestamp>
|
235
|
-
</Question>
|
236
|
-
</ResultSet>
|
237
|
-
<!-- ws15.ydn.ac4.yahoo.com uncompressed/chunked Thu Jan 27 06:08:59 PST 2011 -->
|
data/test/test_option_parser.rb
DELETED
@@ -1,91 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
require 'test/unit'
|
3
|
-
require 'option_parser'
|
4
|
-
|
5
|
-
class TestOptionParser < Test::Unit::TestCase
|
6
|
-
def setup
|
7
|
-
@output = {
|
8
|
-
:query_params => {
|
9
|
-
:appid => 'YahooDemo',
|
10
|
-
:query => 'Haus AND grün',
|
11
|
-
:region => 'de',
|
12
|
-
:search_in => 'question'
|
13
|
-
},
|
14
|
-
:query_type => 'TermQuery',
|
15
|
-
:output_dir => '/tmp',
|
16
|
-
:limit => 10
|
17
|
-
}
|
18
|
-
|
19
|
-
@cmd_args = ['--appid', 'YahooDemo']
|
20
|
-
end
|
21
|
-
|
22
|
-
def teardown
|
23
|
-
end
|
24
|
-
|
25
|
-
# it should have a public class method 'parse'
|
26
|
-
def test_public_methods
|
27
|
-
assert_respond_to(OptionParser, :parse)
|
28
|
-
end
|
29
|
-
|
30
|
-
# it should return a non empty parameter hash
|
31
|
-
def test_parse_method
|
32
|
-
return_value = OptionParser.parse(@cmd_args)
|
33
|
-
assert(return_value.instance_of? Hash)
|
34
|
-
assert(! return_value.empty?)
|
35
|
-
end
|
36
|
-
|
37
|
-
# it should return a right complex output
|
38
|
-
def test_output
|
39
|
-
cmd_args = ['--appid', 'YahooDemo', '-r',
|
40
|
-
'de', '-l', '10', '-o', '/tmp',
|
41
|
-
'-k' 'Haus AND grün'
|
42
|
-
]
|
43
|
-
assert_equal(@output, OptionParser.parse(cmd_args))
|
44
|
-
end
|
45
|
-
|
46
|
-
|
47
|
-
# it should set up the right method
|
48
|
-
def test_method
|
49
|
-
|
50
|
-
cmd_args = ['-k', 'Haus'] | @cmd_args
|
51
|
-
assert_equal('TermQuery', OptionParser.parse(cmd_args)[:query_type])
|
52
|
-
|
53
|
-
cmd_args = ['-k', 'Haus', '-c', '09876543'] | @cmd_args
|
54
|
-
assert_equal('TermQuery', OptionParser.parse(cmd_args)[:query_type])
|
55
|
-
|
56
|
-
cmd_args = ['-c', '09876543'] | @cmd_args
|
57
|
-
assert_equal('CategoryQuery', OptionParser.parse(cmd_args)[:query_type])
|
58
|
-
|
59
|
-
cmd_args = ['-c', 'Ausgehen'] | @cmd_args
|
60
|
-
assert_equal('CategoryQuery', OptionParser.parse(cmd_args)[:query_type])
|
61
|
-
|
62
|
-
cmd_args = ['--user-id', '12345'] | @cmd_args
|
63
|
-
assert_equal('UserQuery', OptionParser.parse(cmd_args)[:query_type])
|
64
|
-
|
65
|
-
cmd_args = ['--question-id', '12345'] | @cmd_args
|
66
|
-
assert_equal('QuestionQuery', OptionParser.parse(cmd_args)[:query_type])
|
67
|
-
end
|
68
|
-
|
69
|
-
# it should set either :category_id or :category_name
|
70
|
-
def test_category_identifier
|
71
|
-
args = ['-k', 'Haus', '-c', '123'] | @cmd_args
|
72
|
-
opts = OptionParser.parse(args)
|
73
|
-
assert_equal('123', opts[:query_params][:category_id])
|
74
|
-
assert(! opts[:query_params].has_key?(:category_name))
|
75
|
-
|
76
|
-
args = ['-k', 'Haus', '-c', 'Haushalt'] | @cmd_args
|
77
|
-
opts = OptionParser.parse(args)
|
78
|
-
assert_equal('Haushalt', opts[:query_params][:category_name])
|
79
|
-
assert(! opts[:query_params].has_key?(:category_id))
|
80
|
-
|
81
|
-
end
|
82
|
-
|
83
|
-
def test_output_dir
|
84
|
-
end
|
85
|
-
|
86
|
-
def test_query
|
87
|
-
end
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
end
|
data/test/yanapi/test_query.rb
DELETED
@@ -1,112 +0,0 @@
|
|
1
|
-
require 'test/unit'
|
2
|
-
require 'yanapi/query'
|
3
|
-
require 'fakeweb'
|
4
|
-
|
5
|
-
class TestQuery < Test::Unit::TestCase
|
6
|
-
def setup
|
7
|
-
@params = {:appid => 'MyID', :method => 'questionSearch'}
|
8
|
-
end
|
9
|
-
def teardown
|
10
|
-
end
|
11
|
-
|
12
|
-
def test_public_methods
|
13
|
-
q = YANAPI::Query.new(@params)
|
14
|
-
assert_respond_to(q, :get)
|
15
|
-
end
|
16
|
-
|
17
|
-
def test_constants
|
18
|
-
assert_equal('http://answers.yahooapis.com', YANAPI::Query::HOST)
|
19
|
-
assert_equal('AnswersService', YANAPI::Query::SERVICE)
|
20
|
-
assert_equal('V1', YANAPI::Query::SERVICE_VERSION)
|
21
|
-
end
|
22
|
-
|
23
|
-
def test_missing_appid
|
24
|
-
@params.delete(:appid)
|
25
|
-
assert_raises(YANAPI::Error) do
|
26
|
-
q = YANAPI::Query.new(@params)
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
# a Query can be only initialized with a valid value for :method
|
31
|
-
def test_missing_method
|
32
|
-
@params.delete(:method)
|
33
|
-
assert_raises(YANAPI::Error) do
|
34
|
-
q = YANAPI::Query.new(@params)
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
# :method may have only the following values:
|
39
|
-
# questionSearch|getByCategory|getQuestion|getByUser
|
40
|
-
def test_method_semantics
|
41
|
-
@params[:method] = 'someSampleMethod'
|
42
|
-
assert_raises(YANAPI::Error) do
|
43
|
-
q = YANAPI::Query.new(@params)
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
# :output may be missing
|
48
|
-
def test_missing_output
|
49
|
-
@params.delete(:output)
|
50
|
-
q = YANAPI::Query.new(@params)
|
51
|
-
assert_equal('xml', q.output)
|
52
|
-
end
|
53
|
-
|
54
|
-
# :output may be NIL or have values xml|json|php|rss
|
55
|
-
def test_output_semantics
|
56
|
-
@params[:output] = 'trash'
|
57
|
-
assert_raises(YANAPI::Error) do
|
58
|
-
q = YANAPI::Query.new(@params)
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
# :callback may be used only with :output => 'json'
|
63
|
-
def test_parameters_clash
|
64
|
-
# the default value 'xml' is set internally during the initialization
|
65
|
-
# we may delete the input value
|
66
|
-
@params.delete(:output)
|
67
|
-
@params[:callback] = 'wrapper'
|
68
|
-
assert_raises(YANAPI::Error) do
|
69
|
-
q = YANAPI::Query.new(@params)
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
# :callback may be used only with :output => 'json'
|
74
|
-
def test_parameters_pairing
|
75
|
-
@params[:output] = 'json'
|
76
|
-
@params[:callback] = 'wrapper'
|
77
|
-
assert_nothing_raised {q = YANAPI::Query.new(@params)}
|
78
|
-
end
|
79
|
-
|
80
|
-
# we can get an empty response set with valid xml structure
|
81
|
-
# and the status code 200 HTTP OK
|
82
|
-
# but we should declene this
|
83
|
-
def test_empty_response
|
84
|
-
q = YANAPI::Query.new(@params)
|
85
|
-
page = File.open('test/data/empty_result.txt') {|f| f.read}
|
86
|
-
FakeWeb.register_uri(:get, q.url, :response => page)
|
87
|
-
assert_raises(YANAPI::EmptyResponse) {q.get}
|
88
|
-
end
|
89
|
-
|
90
|
-
def test_response_with_error
|
91
|
-
q = YANAPI::Query.new(@params)
|
92
|
-
|
93
|
-
page = File.open('test/data/response_with_error.txt') {|f| f.read}
|
94
|
-
FakeWeb.register_uri(:get, q.url, :response => page)
|
95
|
-
assert_raises(YANAPI::ContentError) {q.get}
|
96
|
-
|
97
|
-
page = File.open('test/data/error_code.txt') {|f| f.read}
|
98
|
-
FakeWeb.register_uri(:get, q.url, :response => page)
|
99
|
-
assert_raises(YANAPI::ContentError) {q.get}
|
100
|
-
|
101
|
-
page = File.open('test/data/bad_xml.txt') {|f| f.read}
|
102
|
-
FakeWeb.register_uri(:get, q.url, :response => page)
|
103
|
-
assert_raises(YANAPI::ContentError) {q.get}
|
104
|
-
end
|
105
|
-
|
106
|
-
def test_successfull_response
|
107
|
-
q = YANAPI::Query.new(@params)
|
108
|
-
page = File.open('test/data/successfull_response.txt') {|f| f.read}
|
109
|
-
FakeWeb.register_uri(:get, q.url, :response => page)
|
110
|
-
assert_nothing_raised {q.get}
|
111
|
-
end
|
112
|
-
end
|
@@ -1,64 +0,0 @@
|
|
1
|
-
require 'test/unit'
|
2
|
-
require 'yanapi/term_query'
|
3
|
-
require 'fakeweb'
|
4
|
-
|
5
|
-
class TestTermQuery < Test::Unit::TestCase
|
6
|
-
def setup
|
7
|
-
@params = {
|
8
|
-
:query => 'Auto',
|
9
|
-
:appid => 'YahooDemo'
|
10
|
-
}
|
11
|
-
end
|
12
|
-
def teardown
|
13
|
-
end
|
14
|
-
|
15
|
-
# questionSearch needs a unique :query
|
16
|
-
def test_missing_query
|
17
|
-
@params.delete(:query)
|
18
|
-
assert_raises(YANAPI::Error) do
|
19
|
-
q = YANAPI::TermQuery.new(@params)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
# parameters can be only: query|search_in|category_query|category_name|
|
24
|
-
# region|date_range|sort|appid|type|start|results|output|callback
|
25
|
-
def test_parameters_semantics
|
26
|
-
assert_nothing_raised {q = YANAPI::TermQuery.new(@params)}
|
27
|
-
@params[:trash] = 'trash'
|
28
|
-
assert_raises(YANAPI::Error) do
|
29
|
-
q = YANAPI::TermQuery.new(@params)
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
# validates presense of query
|
34
|
-
# validates uniqueness of query
|
35
|
-
# validates the range of :start
|
36
|
-
# validates the range of :results
|
37
|
-
# validates the :region semantics
|
38
|
-
# validates the :type uniqueness and semantics
|
39
|
-
# validates uniqueness of the :date_range and its semantics
|
40
|
-
# validates semantics of all possible parameter names
|
41
|
-
|
42
|
-
def test_start_range
|
43
|
-
end
|
44
|
-
|
45
|
-
def test_result_range
|
46
|
-
end
|
47
|
-
|
48
|
-
def test_region_semantics
|
49
|
-
|
50
|
-
end
|
51
|
-
|
52
|
-
# ?? not sure
|
53
|
-
def test_type_uniqueness
|
54
|
-
end
|
55
|
-
|
56
|
-
def test_type_semantics
|
57
|
-
end
|
58
|
-
|
59
|
-
def test_date_uniqueness
|
60
|
-
end
|
61
|
-
|
62
|
-
def test_date_semantics
|
63
|
-
end
|
64
|
-
end #TestTermQuery
|