3
3
from main.models import *
4
4
from main.forms import *
8
9
def new_user(username):
9
user = User(username=username)
10
user = User(username=username)
14
15
def new_oneliner(user, line, summary=None, explanation=None, limitations=None):
16
summary = '(incorrectly omitted)'
17
if explanation is None:
18
explanation = '(incorrectly omitted)'
19
if limitations is None:
20
limitations = '(this is optional)'
21
oneliner = OneLiner(user=user, line=line, summary=summary, explanation=explanation, limitations=limitations)
17
summary = '(incorrectly omitted)'
18
if explanation is None:
19
explanation = '(incorrectly omitted)'
20
if limitations is None:
21
limitations = '(this is optional)'
22
oneliner = OneLiner(user=user, line=line, summary=summary, explanation=explanation, limitations=limitations)
30
31
def new_question(user):
31
question = Question(user=user)
32
question = Question(user=user)
36
37
def new_answer(question, oneliner):
37
answer = Answer(question=question, oneliner=oneliner)
38
answer = Answer(question=question, oneliner=oneliner)
42
43
class EditOneLinerTests(TestCase):
44
self.jack = Util.new_user('jack')
45
self.jacks_oneliner = Util.new_oneliner(self.jack, 'echo jack')
45
self.jack = Util.new_user('jack')
46
self.jacks_oneliner = Util.new_oneliner(self.jack, 'echo jack')
47
self.frank = Util.new_user('frank')
48
self.franks_oneliner = Util.new_oneliner(self.frank, 'echo frank')
48
self.frank = Util.new_user('frank')
49
self.franks_oneliner = Util.new_oneliner(self.frank, 'echo frank')
50
51
def test_save_own_success(self):
51
oneliner0 = self.jacks_oneliner
53
'summary': oneliner0.summary,
54
'line': oneliner0.line,
55
'explanation': oneliner0.explanation,
56
'action': EditOneLinerForm.action_save,
58
new_summary = oneliner0.summary + ' some change'
59
data['summary'] = new_summary
61
form = EditOneLinerForm(self.jack, data, instance=oneliner0)
62
self.assertTrue(form.is_valid())
63
oneliner1 = form.save()
65
self.assertEquals(oneliner1.summary, new_summary)
66
self.assertEquals(oneliner1.user, self.jack)
52
oneliner0 = self.jacks_oneliner
54
'summary': oneliner0.summary,
55
'line': oneliner0.line,
56
'explanation': oneliner0.explanation,
57
'action': EditOneLinerForm.action_save,
59
new_summary = oneliner0.summary + ' some change'
60
data['summary'] = new_summary
62
form = EditOneLinerForm(self.jack, data, instance=oneliner0)
63
self.assertTrue(form.is_valid())
64
oneliner1 = form.save()
66
self.assertEquals(oneliner1.summary, new_summary)
67
self.assertEquals(oneliner1.user, self.jack)
68
69
def test_save_own_failure(self):
69
oneliner0 = self.jacks_oneliner
71
'summary': oneliner0.summary,
72
'line': oneliner0.line,
73
'action': EditOneLinerForm.action_save,
75
new_summary = oneliner0.summary + ' some change'
76
data['summary'] = new_summary
78
form = EditOneLinerForm(self.jack, data, instance=oneliner0)
79
self.assertFalse(form.is_valid())
81
error_items = form.errors.items()
82
self.assertEquals(len(error_items), 1)
83
self.assertEquals(error_items[0][0], 'explanation')
70
oneliner0 = self.jacks_oneliner
72
'summary': oneliner0.summary,
73
'line': oneliner0.line,
74
'action': EditOneLinerForm.action_save,
76
new_summary = oneliner0.summary + ' some change'
77
data['summary'] = new_summary
79
form = EditOneLinerForm(self.jack, data, instance=oneliner0)
80
self.assertFalse(form.is_valid())
82
error_items = form.errors.items()
83
self.assertEquals(len(error_items), 1)
84
self.assertEquals(error_items[0][0], 'explanation')
85
86
def test_save_notown_failure(self):
86
oneliner0 = self.jacks_oneliner
88
'summary': oneliner0.summary,
89
'line': oneliner0.line,
90
'explanation': oneliner0.explanation,
91
'action': EditOneLinerForm.action_save,
94
form = EditOneLinerForm(self.frank, data, instance=self.jacks_oneliner)
95
self.assertFalse(form.is_valid())
97
error_items = form.errors.items()
98
self.assertEquals(len(error_items), 1)
99
self.assertEquals(error_items[0][0], '__all__')
87
oneliner0 = self.jacks_oneliner
89
'summary': oneliner0.summary,
90
'line': oneliner0.line,
91
'explanation': oneliner0.explanation,
92
'action': EditOneLinerForm.action_save,
95
form = EditOneLinerForm(self.frank, data, instance=self.jacks_oneliner)
96
self.assertFalse(form.is_valid())
98
error_items = form.errors.items()
99
self.assertEquals(len(error_items), 1)
100
self.assertEquals(error_items[0][0], '__all__')
102
103
class VoteTests(TestCase):
104
self.jack = Util.new_user('jack')
105
self.jacks_oneliner = Util.new_oneliner(self.jack, 'echo jack')
107
self.mike = Util.new_user('mike')
108
self.mikes_oneliner = Util.new_oneliner(self.mike, 'echo mike')
110
self.frank = Util.new_user('frank')
111
self.franks_oneliner = Util.new_oneliner(self.frank, 'echo frank')
105
self.jack = Util.new_user('jack')
106
self.jacks_oneliner = Util.new_oneliner(self.jack, 'echo jack')
108
self.mike = Util.new_user('mike')
109
self.mikes_oneliner = Util.new_oneliner(self.mike, 'echo mike')
111
self.frank = Util.new_user('frank')
112
self.franks_oneliner = Util.new_oneliner(self.frank, 'echo frank')
113
114
def test_multiple_vote_tolerance(self):
114
self.assertEquals(self.jacks_oneliner.get_votes_up(), 0)
115
self.jacks_oneliner.vote_up(self.jack)
116
self.assertEquals(self.jacks_oneliner.get_votes_up(), 0)
117
self.jacks_oneliner.vote_up(self.mike)
118
self.assertEquals(self.jacks_oneliner.get_votes_up(), 1)
119
self.jacks_oneliner.vote_up(self.mike)
120
self.assertEquals(self.jacks_oneliner.get_votes_up(), 1)
121
self.jacks_oneliner.vote_up(self.mike)
122
self.assertEquals(self.jacks_oneliner.get_votes_up(), 1)
115
self.assertEquals(self.jacks_oneliner.get_votes_up(), 0)
116
self.jacks_oneliner.vote_up(self.jack)
117
self.assertEquals(self.jacks_oneliner.get_votes_up(), 0)
118
self.jacks_oneliner.vote_up(self.mike)
119
self.assertEquals(self.jacks_oneliner.get_votes_up(), 1)
120
self.jacks_oneliner.vote_up(self.mike)
121
self.assertEquals(self.jacks_oneliner.get_votes_up(), 1)
122
self.jacks_oneliner.vote_up(self.mike)
123
self.assertEquals(self.jacks_oneliner.get_votes_up(), 1)
124
125
def test_vote_counts(self):
125
self.assertEquals(self.jacks_oneliner.get_votes_up(), 0)
126
self.jacks_oneliner.vote_up(self.jack)
127
self.assertEquals(self.jacks_oneliner.get_votes_up(), 0)
128
self.jacks_oneliner.vote_up(self.mike)
129
self.assertEquals(self.jacks_oneliner.get_votes_up(), 1)
130
self.jacks_oneliner.vote_up(self.frank)
131
self.assertEquals(self.jacks_oneliner.get_votes_up(), 2)
132
self.jacks_oneliner.vote_up(self.frank)
133
self.assertEquals(self.jacks_oneliner.get_votes_up(), 2)
134
self.jacks_oneliner.vote_down(self.frank)
135
self.assertEquals(self.jacks_oneliner.get_votes_up(), 1)
136
self.assertEquals(self.jacks_oneliner.get_votes_down(), 1)
137
self.assertEquals(self.jacks_oneliner.get_votes(), (1, 1))
126
self.assertEquals(self.jacks_oneliner.get_votes_up(), 0)
127
self.jacks_oneliner.vote_up(self.jack)
128
self.assertEquals(self.jacks_oneliner.get_votes_up(), 0)
129
self.jacks_oneliner.vote_up(self.mike)
130
self.assertEquals(self.jacks_oneliner.get_votes_up(), 1)
131
self.jacks_oneliner.vote_up(self.frank)
132
self.assertEquals(self.jacks_oneliner.get_votes_up(), 2)
133
self.jacks_oneliner.vote_up(self.frank)
134
self.assertEquals(self.jacks_oneliner.get_votes_up(), 2)
135
self.jacks_oneliner.vote_down(self.frank)
136
self.assertEquals(self.jacks_oneliner.get_votes_up(), 1)
137
self.assertEquals(self.jacks_oneliner.get_votes_down(), 1)
138
self.assertEquals(self.jacks_oneliner.get_votes(), (1, 1))
140
141
class RecentTests(TestCase):
142
self.jack = Util.new_user('jack')
143
self.jacks_oneliner = Util.new_oneliner(self.jack, 'echo jack')
143
self.jack = Util.new_user('jack')
144
self.jacks_oneliner = Util.new_oneliner(self.jack, 'echo jack')
145
self.mike = Util.new_user('mike')
146
self.mikes_oneliner = Util.new_oneliner(self.mike, 'echo mike')
146
self.mike = Util.new_user('mike')
147
self.mikes_oneliner = Util.new_oneliner(self.mike, 'echo mike')
148
149
def xtest_recent(self):
149
u1 = Util.new_user('u1')
150
u2 = Util.new_user('u2')
151
u3 = Util.new_user('u3')
153
self.jacks_oneliner.vote_up(u1)
154
self.assertEquals(OneLiner.recent()[0], self.jacks_oneliner)
156
self.mikes_oneliner.vote_up(u1)
157
self.mikes_oneliner.vote_up(u2)
158
self.assertEquals(OneLiner.recent()[0], self.mikes_oneliner)
160
self.jacks_oneliner.vote_up(u2)
161
self.jacks_oneliner.vote_up(u3)
162
self.assertEquals(OneLiner.recent()[0], self.jacks_oneliner)
164
u4 = Util.new_user('u4')
165
u5 = Util.new_user('u5')
166
self.mikes_oneliner.vote_down(u4)
167
self.mikes_oneliner.vote_down(u5)
168
self.assertEquals(OneLiner.recent()[0], self.jacks_oneliner)
150
u1 = Util.new_user('u1')
151
u2 = Util.new_user('u2')
152
u3 = Util.new_user('u3')
154
self.jacks_oneliner.vote_up(u1)
155
self.assertEquals(OneLiner.recent()[0], self.jacks_oneliner)
157
self.mikes_oneliner.vote_up(u1)
158
self.mikes_oneliner.vote_up(u2)
159
self.assertEquals(OneLiner.recent()[0], self.mikes_oneliner)
161
self.jacks_oneliner.vote_up(u2)
162
self.jacks_oneliner.vote_up(u3)
163
self.assertEquals(OneLiner.recent()[0], self.jacks_oneliner)
165
u4 = Util.new_user('u4')
166
u5 = Util.new_user('u5')
167
self.mikes_oneliner.vote_down(u4)
168
self.mikes_oneliner.vote_down(u5)
169
self.assertEquals(OneLiner.recent()[0], self.jacks_oneliner)
171
172
class SearchTests(TestCase):
173
self.jack = Util.new_user('jack')
174
self.jacks_oneliner = Util.new_oneliner(self.jack, 'echo jack')
176
self.mike = Util.new_user('mike')
177
self.mikes_oneliner = Util.new_oneliner(self.mike, 'echo mike')
179
self.vi_oneliner = Util.new_oneliner(self.mike, 'vi is an editor', summary='vi oneliner')
180
self.video_oneliner = Util.new_oneliner(self.mike, 'mplayer is a video manipulator', summary='mplayer oneliner')
182
self.mline_oneliner = Util.new_oneliner(self.jack, 'mline')
183
self.msummary_oneliner = Util.new_oneliner(self.jack, '', summary='msummary')
184
self.mexplanation_oneliner = Util.new_oneliner(self.jack, '', explanation='mexplanation')
185
self.mlimitations_oneliner = Util.new_oneliner(self.jack, '', limitations='mlimitations')
174
self.jack = Util.new_user('jack')
175
self.jacks_oneliner = Util.new_oneliner(self.jack, 'echo jack')
177
self.mike = Util.new_user('mike')
178
self.mikes_oneliner = Util.new_oneliner(self.mike, 'echo mike')
180
self.vi_oneliner = Util.new_oneliner(self.mike, 'vi is an editor', summary='vi oneliner')
181
self.video_oneliner = Util.new_oneliner(self.mike, 'mplayer is a video manipulator', summary='mplayer oneliner')
183
self.mline_oneliner = Util.new_oneliner(self.jack, 'mline')
184
self.msummary_oneliner = Util.new_oneliner(self.jack, '', summary='msummary')
185
self.mexplanation_oneliner = Util.new_oneliner(self.jack, '', explanation='mexplanation')
186
self.mlimitations_oneliner = Util.new_oneliner(self.jack, '', limitations='mlimitations')
187
188
def test_simplesearch(self):
188
self.assertEquals(OneLiner.simplesearch('echo').count(), 2)
189
self.assertEquals(OneLiner.simplesearch('echo jack').count(), 1)
190
self.assertEquals(OneLiner.simplesearch('echo mike').count(), 1)
191
self.assertEquals(OneLiner.simplesearch('jack')[0], self.jacks_oneliner)
192
self.assertEquals(OneLiner.simplesearch('echo jack')[0], self.jacks_oneliner)
193
self.assertEquals(OneLiner.simplesearch('echo mike')[0], self.mikes_oneliner)
189
self.assertEquals(OneLiner.simplesearch('echo').count(), 2)
190
self.assertEquals(OneLiner.simplesearch('echo jack').count(), 1)
191
self.assertEquals(OneLiner.simplesearch('echo mike').count(), 1)
192
self.assertEquals(OneLiner.simplesearch('jack')[0], self.jacks_oneliner)
193
self.assertEquals(OneLiner.simplesearch('echo jack')[0], self.jacks_oneliner)
194
self.assertEquals(OneLiner.simplesearch('echo mike')[0], self.mikes_oneliner)
195
196
def get_form(self, data):
197
'match_summary': True,
199
'match_explanation': True,
200
'match_limitations': True,
203
form = SearchOneLinerForm(data=initial)
204
self.assertTrue(form.is_valid())
198
'match_summary': True,
200
'match_explanation': True,
201
'match_limitations': True,
204
form = SearchOneLinerForm(data=initial)
205
self.assertTrue(form.is_valid())
207
208
def test_match_summary(self):
208
results = OneLiner.search(self.get_form({ 'query': 'msummary' }))
209
self.assertEquals(len(results), 1)
210
self.assertEquals(results[0], self.msummary_oneliner)
209
results = OneLiner.search(self.get_form({'query': 'msummary', }))
210
self.assertEquals(len(results), 1)
211
self.assertEquals(results[0], self.msummary_oneliner)
212
results = OneLiner.search(self.get_form({ 'query': 'msummary', 'match_summary': False }))
213
self.assertEquals(len(results), 0)
213
results = OneLiner.search(self.get_form({'query': 'msummary', 'match_summary': False, }))
214
self.assertEquals(len(results), 0)
215
216
def test_match_line(self):
216
results = OneLiner.search(self.get_form({ 'query': 'mline' }))
217
self.assertEquals(len(results), 1)
218
self.assertEquals(results[0], self.mline_oneliner)
217
results = OneLiner.search(self.get_form({'query': 'mline', }))
218
self.assertEquals(len(results), 1)
219
self.assertEquals(results[0], self.mline_oneliner)
220
results = OneLiner.search(self.get_form({ 'query': 'mline', 'match_line': False }))
221
self.assertEquals(len(results), 0)
221
results = OneLiner.search(self.get_form({'query': 'mline', 'match_line': False, }))
222
self.assertEquals(len(results), 0)
223
224
def test_match_explanation(self):
224
results = OneLiner.search(self.get_form({ 'query': 'mexplanation' }))
225
self.assertEquals(len(results), 1)
226
self.assertEquals(results[0], self.mexplanation_oneliner)
225
results = OneLiner.search(self.get_form({'query': 'mexplanation', }))
226
self.assertEquals(len(results), 1)
227
self.assertEquals(results[0], self.mexplanation_oneliner)
228
results = OneLiner.search(self.get_form({ 'query': 'mexplanation', 'match_explanation': False }))
229
self.assertEquals(len(results), 0)
229
results = OneLiner.search(self.get_form({'query': 'mexplanation', 'match_explanation': False, }))
230
self.assertEquals(len(results), 0)
231
232
def test_match_limitations(self):
232
results = OneLiner.search(self.get_form({ 'query': 'mlimitations' }))
233
self.assertEquals(len(results), 1)
234
self.assertEquals(results[0], self.mlimitations_oneliner)
233
results = OneLiner.search(self.get_form({'query': 'mlimitations', }))
234
self.assertEquals(len(results), 1)
235
self.assertEquals(results[0], self.mlimitations_oneliner)
236
results = OneLiner.search(self.get_form({ 'query': 'mlimitations', 'match_limitations': False }))
237
self.assertEquals(len(results), 0)
237
results = OneLiner.search(self.get_form({'query': 'mlimitations', 'match_limitations': False, }))
238
self.assertEquals(len(results), 0)
239
240
def test_match_whole_words(self):
240
results = OneLiner.search(self.get_form({ 'query': 'vi', }))
241
self.assertEquals(len(results), 2)
241
results = OneLiner.search(self.get_form({'query': 'vi', }))
242
self.assertEquals(len(results), 2)
243
results = OneLiner.search(self.get_form({ 'query': 'vi', 'match_whole_words': True }))
244
self.assertEquals(len(results), 1)
245
self.assertEquals(results[0], self.vi_oneliner)
244
results = OneLiner.search(self.get_form({'query': 'vi', 'match_whole_words': True, }))
245
self.assertEquals(len(results), 1)
246
self.assertEquals(results[0], self.vi_oneliner)
247
248
def test_match_nothing(self):
248
form = SearchOneLinerForm(data={'query': 'NOTHINGSHOULDMATCH'})
249
self.assertTrue(form.is_valid())
250
results = OneLiner.search(form)
251
self.assertEquals(len(results), 0)
249
form = SearchOneLinerForm(data={'query': 'NOTHINGSHOULDMATCH'})
250
self.assertTrue(form.is_valid())
251
results = OneLiner.search(form)
252
self.assertEquals(len(results), 0)
254
255
class QuestionTests(TestCase):
256
self.user = Util.new_user('user1')
257
self.user = Util.new_user('user1')
258
259
def test_create_question(self):
259
Util.new_question(self.user)
260
Util.new_question(self.user)
261
262
def test_list_questions(self):
262
self.assertTrue(Question.objects.all().count() == 0)
263
Util.new_question(self.user)
264
self.assertTrue(Question.objects.all().count() > 0)
263
self.assertTrue(Question.objects.all().count() == 0)
264
Util.new_question(self.user)
265
self.assertTrue(Question.objects.all().count() > 0)
266
267
def test_list_questions_latestfirst(self):
267
q1 = Util.new_question(self.user)
268
q2 = Util.new_question(self.user)
269
self.assertTrue(Question.objects.latest() == q2)
268
q1 = Util.new_question(self.user)
269
q2 = Util.new_question(self.user)
270
self.assertTrue(Question.objects.latest() == q2)
271
272
def test_list_excludes_nonpublished(self):
272
q1 = Util.new_question(self.user)
273
q2 = Util.new_question(self.user)
274
self.assertEquals(Question.latest(), q2)
275
q2.is_published = False
277
self.assertNotEquals(Question.latest(), q2)
273
q1 = Util.new_question(self.user)
274
q2 = Util.new_question(self.user)
275
self.assertEquals(Question.latest(), q2)
276
q2.is_published = False
278
self.assertNotEquals(Question.latest(), q2)
279
280
def test_list_excludes_answered(self):
280
q1 = Util.new_question(self.user)
281
q2 = Util.new_question(self.user)
282
self.assertEquals(Question.latest(), q2)
283
q2.is_answered = True
285
self.assertNotEquals(Question.latest(), q2)
281
q1 = Util.new_question(self.user)
282
q2 = Util.new_question(self.user)
283
self.assertEquals(Question.latest(), q2)
284
q2.is_answered = True
286
self.assertNotEquals(Question.latest(), q2)
287
288
def test_answer(self):
288
q1 = Util.new_question(self.user)
289
jack = Util.new_user('jack')
290
o1 = Util.new_oneliner(jack, 'echo jack')
291
a1 = Util.new_answer(q1, o1)
289
q1 = Util.new_question(self.user)
290
jack = Util.new_user('jack')
291
o1 = Util.new_oneliner(jack, 'echo jack')
292
a1 = Util.new_answer(q1, o1)
293
294
def test_multiple_answers(self):
294
q1 = Util.new_question(self.user)
295
jack = Util.new_user('jack')
296
o1 = Util.new_oneliner(jack, 'echo jack')
297
a1 = Util.new_answer(q1, o1)
298
mike = Util.new_user('mike')
299
o2 = Util.new_oneliner(mike, 'echo mike')
300
a2 = Util.new_answer(q1, o2)
295
q1 = Util.new_question(self.user)
296
jack = Util.new_user('jack')
297
o1 = Util.new_oneliner(jack, 'echo jack')
298
a1 = Util.new_answer(q1, o1)
299
mike = Util.new_user('mike')
300
o2 = Util.new_oneliner(mike, 'echo mike')
301
a2 = Util.new_answer(q1, o2)
303
304
class AcceptedAnswerTests(TestCase):
305
self.jack = Util.new_user('jack')
306
self.oneliner = OneLiner(user=self.jack)
309
self.bill = Util.new_user('bill')
310
OneLiner(user=self.bill).save()
312
self.mike = Util.new_user('mike')
313
self.question = Question(user=self.mike)
306
self.jack = Util.new_user('jack')
307
self.oneliner = OneLiner(user=self.jack)
310
self.bill = Util.new_user('bill')
311
OneLiner(user=self.bill).save()
313
self.mike = Util.new_user('mike')
314
self.question = Question(user=self.mike)
316
317
def test_accept(self):
317
self.assertEqual(AcceptedAnswer.objects.count(), 0)
318
self.assertTrue(not self.question.is_answered)
320
self.question.accept_answer(self.oneliner)
321
self.assertTrue(self.question.is_answered)
322
self.assertEqual(AcceptedAnswer.objects.count(), 1)
324
self.question.accept_answer(self.oneliner)
325
self.assertTrue(self.question.is_answered)
326
self.assertEqual(AcceptedAnswer.objects.count(), 1)
318
self.assertEqual(AcceptedAnswer.objects.count(), 0)
319
self.assertTrue(not self.question.is_answered)
321
self.question.accept_answer(self.oneliner)
322
self.assertTrue(self.question.is_answered)
323
self.assertEqual(AcceptedAnswer.objects.count(), 1)
325
self.question.accept_answer(self.oneliner)
326
self.assertTrue(self.question.is_answered)
327
self.assertEqual(AcceptedAnswer.objects.count(), 1)
328
329
def test_accept_clear(self):
330
self.assertTrue(AcceptedAnswer.objects.count() > 0)
331
self.assertTrue(self.question.is_answered)
331
self.assertTrue(AcceptedAnswer.objects.count() > 0)
332
self.assertTrue(self.question.is_answered)
333
self.question.clear_all_answers()
334
self.assertFalse(AcceptedAnswer.objects.count() > 0)
335
self.assertFalse(self.question.is_answered)
334
self.question.clear_all_answers()
335
self.assertFalse(AcceptedAnswer.objects.count() > 0)
336
self.assertFalse(self.question.is_answered)
337
338
def test_clear_answers_when_is_answered_is_cleared(self):
339
self.assertTrue(AcceptedAnswer.objects.count() > 0)
340
self.assertTrue(self.question.is_answered)
340
self.assertTrue(AcceptedAnswer.objects.count() > 0)
341
self.assertTrue(self.question.is_answered)
342
self.question.is_answered = False
344
self.assertFalse(AcceptedAnswer.objects.count() > 0)
343
self.question.is_answered = False
345
self.assertFalse(AcceptedAnswer.objects.count() > 0)
347
348
class TagTests(TestCase):
348
349
def test_tag_generator(self):
349
user = Util.new_user('jack')
351
line = 'find grep xargs'
352
oneliner = Util.new_oneliner(user, line)
353
self.assertItemsEqual(('xargs', 'grep', 'find'), oneliner.get_tags())
355
line = '''find /etc -type f -print0 2>/dev/null | xargs -0 grep --color=AUTO -Hn 'nameserver' 2>/dev/null'''
356
oneliner = Util.new_oneliner(user, line)
357
self.assertItemsEqual(('xargs', 'grep', 'find'), oneliner.get_tags())
359
line = '''MAX=$(NUM=1;cat author.xml |perl -p -e 's/(Times Cited)/\n$1/g'|grep "Times Cited" |perl -p -e 's/^Times Cited:([0-9]*).*$/$1/g'|sort -nr | while read LINE; do if [ $LINE -ge $NUM ]; then echo "$NUM"; fi; NUM=$[$NUM+1]; done;); echo "$MAX"|tail -1'''
360
oneliner = Util.new_oneliner(user, line)
361
self.assertItemsEqual((u'sort', u'do', u'grep', u'then', u'read', u'tail', u'perl', u'while', u'done', u'echo', u'fi', u'cat', u'if'), oneliner.get_tags())
350
user = Util.new_user('jack')
352
line = 'find grep xargs'
353
oneliner = Util.new_oneliner(user, line)
354
self.assertItemsEqual(('xargs', 'grep', 'find'), oneliner.get_tags())
356
line = '''find /etc -type f -print0 2>/dev/null | xargs -0 grep --color=AUTO -Hn 'nameserver' 2>/dev/null'''
357
oneliner = Util.new_oneliner(user, line)
358
self.assertItemsEqual(('xargs', 'grep', 'find'), oneliner.get_tags())
360
line = '''MAX=$(NUM=1;cat author.xml |perl -p -e 's/(Times Cited)/\n$1/g'|grep "Times Cited" |perl -p -e 's/^Times Cited:([0-9]*).*$/$1/g'|sort -nr | while read LINE; do if [ $LINE -ge $NUM ]; then echo "$NUM"; fi; NUM=$[$NUM+1]; done;); echo "$MAX"|tail -1'''
361
oneliner = Util.new_oneliner(user, line)
362
self.assertItemsEqual((u'sort', u'do', u'grep', u'then', u'read', u'tail', u'perl', u'while', u'done', u'echo', u'fi', u'cat', u'if'), oneliner.get_tags())
363
364
def test_tag_cloud(self):
364
user = Util.new_user('jack')
366
Util.new_oneliner(user, 'xargs find grep')
367
Util.new_oneliner(user, 'xargs ls rm find')
368
Util.new_oneliner(user, 'xargs xargs while sleep done do')
370
tagcloud = Tag.tagcloud()
371
tagcloud = tagcloud.values_list('text', 'count')
373
self.assertEquals(3, dd['xargs'])
374
self.assertEquals(3, dd.get('xargs'))
375
self.assertEquals(2, dd['find'])
376
self.assertFalse(dd.get('BLAH'))
365
user = Util.new_user('jack')
367
Util.new_oneliner(user, 'xargs find grep')
368
Util.new_oneliner(user, 'xargs ls rm find')
369
Util.new_oneliner(user, 'xargs xargs while sleep done do')
371
tagcloud = Tag.tagcloud()
372
tagcloud = tagcloud.values_list('text', 'count')
374
self.assertEquals(3, dd['xargs'])
375
self.assertEquals(3, dd.get('xargs'))
376
self.assertEquals(2, dd['find'])
377
self.assertFalse(dd.get('BLAH'))