yanser 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,15 @@
1
+ HTTP/1.1 200 OK
2
+ Date: Thu, 27 Jan 2011 13:57:47 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"?>
11
+ <Error xmlns="urn:yahoo:api">
12
+ The following errors were detected:
13
+ <Message>multiple occurences: user_id - only one allowed</Message>
14
+ </Error>
15
+ <!-- ws05.ydn.ac4.yahoo.com uncompressed/chunked Thu Jan 27 05:57:47 PST 2011 -->
@@ -0,0 +1,237 @@
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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 -->
@@ -0,0 +1,91 @@
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
@@ -0,0 +1,31 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'test/unit'
3
+ require 'yanser'
4
+
5
+ class TestYanser < Test::Unit::TestCase
6
+ def setup
7
+ end
8
+
9
+ def teardown
10
+ end
11
+
12
+ def test_public_methods
13
+ yanser = Yanser.new(
14
+ :query_params => {
15
+ :appid => 'YahooDemo',
16
+ :query => 'Haus AND grün',
17
+ :region => 'de',
18
+ :search_in => 'question'
19
+ },
20
+ :query_type => 'TermQuery',
21
+ :output_dir => '/tmp',
22
+ :limit => 10
23
+ )
24
+
25
+ assert_respond_to(yanser, :start)
26
+ end
27
+
28
+ def test_mandatory_options
29
+ end
30
+
31
+ end
@@ -0,0 +1,112 @@
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