Skip to content
This repository was archived by the owner on Jun 30, 2024. It is now read-only.

Commit d450b72

Browse files
committed
Fix: By default, test on a child course instead of a base course.
1 parent 3801fe8 commit d450b72

File tree

5 files changed

+74
-74
lines changed

5 files changed

+74
-74
lines changed

tests/conftest.py

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -239,36 +239,40 @@ def __init__(self, runestone_db):
239239
# Create a new course. It returns an object with information about the created course.
240240
def create_course(self,
241241
# The name of the course to create, as a string.
242-
course_name='test_course_1',
242+
course_name='test_child_course_1',
243243
# The start date of the course, as a string.
244244
term_start_date='2000-01-01',
245245
# The value of the ``login_required`` flag for the course.
246246
login_required=True,
247247
# The base course for this course. If ``None``, it will use ``course_name``.
248-
base_course=None,
248+
base_course='test_course_1',
249249
# The student price for this course.
250250
student_price=None):
251251

252252
# Sanity check: this class shouldn't exist.
253-
assert not self.db(self.db.courses.course_name == course_name).select().first()
253+
db = self.db
254+
assert not db(db.courses.course_name == course_name).select().first()
255+
256+
# Create the base course if it doesn't exist.
257+
if (course_name != base_course and
258+
not db(db.courses.course_name == base_course).select(db.courses.id)):
259+
self.create_course(base_course, term_start_date, login_required,
260+
base_course, student_price)
254261

255262
# Store these values in an object for convenient access.
256263
obj = _object()
257264
obj.course_name = course_name
258265
obj.term_start_date = term_start_date
259266
obj.login_required = login_required
260-
obj.base_course = base_course or course_name
267+
obj.base_course = base_course
261268
obj.student_price = student_price
262-
263-
# Keep this in a local variable, in case the test bench changes the value stored in this object. This guarantees the deletion will work.
264-
course_id = self.db.courses.insert(
269+
obj.course_id = db.courses.insert(
265270
course_name=course_name, base_course=obj.base_course,
266271
term_start_date=term_start_date,
267272
login_required=login_required,
268273
student_price=student_price,
269274
)
270-
obj.course_id = course_id
271-
self.db.commit()
275+
db.commit()
272276
return obj
273277

274278

@@ -559,7 +563,7 @@ def test_user(test_client, runestone_db_tools):
559563
# Provide easy access to a test user and course.
560564
@pytest.fixture
561565
def test_user_1(runestone_db_tools, test_user):
562-
course = runestone_db_tools.create_course('test_course_1')
566+
course = runestone_db_tools.create_course()
563567
return test_user('test_user_1', 'password_1', course)
564568

565569

tests/test_ajax2.py

Lines changed: 34 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ def test_poll(test_client, test_user_1, test_user, runestone_db_tools):
99
shold come last.
1010
1111
test_client -- A client that can communicate with web2py server
12-
test_user_1 -- A pre-registered user for test_course_1
12+
test_user_1 -- A pre-registered user
1313
test_user -- a function to make more users
1414
runestone_db_tools -- a way to get manual access to the database
1515
@@ -19,7 +19,7 @@ def test_poll(test_client, test_user_1, test_user, runestone_db_tools):
1919

2020
# Make sure the user is logged in
2121
test_user_1.login()
22-
# Using hsblog have the user respond to a poll in the test_course_1 book
22+
# Using hsblog have the user respond to a poll
2323
# this is what you would do to simulate a user activity an any kind of runeston
2424
# component.
2525
test_user_1.hsblog(event='poll', act='1', div_id="LearningZone_poll", course=test_user_1.course.course_name)
@@ -76,7 +76,7 @@ def test_hsblog(test_client, test_user_1, test_user, runestone_db_tools):
7676
db = runestone_db_tools.db
7777
dbres = db(db.useinfo.div_id == 'unit_test_1').select(db.useinfo.ALL)
7878
assert len(dbres) == 1
79-
assert dbres[0].course_id == 'test_course_1'
79+
assert dbres[0].course_id == test_user_1.course.course_name
8080

8181

8282
def ajaxCall(client, funcName, **kwargs):
@@ -153,7 +153,7 @@ def test_GetParsonsResults(test_client, test_user_1,):
153153
answer = val,
154154
act = val,
155155
correct = 'F',
156-
course = 'test_course_1',
156+
course = test_user_1.course.course_name,
157157
source = 'test_source_1'
158158
)
159159
assert res['answer'] == val
@@ -166,7 +166,7 @@ def test_GetClickableResults(test_client, test_user_1):
166166
answer = val,
167167
act = val,
168168
correct = 'F',
169-
course = 'test_course_1'
169+
course = test_user_1.course.course_name
170170
)
171171
assert res['answer'] == val
172172
assert not res['correct']
@@ -179,7 +179,7 @@ def test_GetShortAnswerResults(test_client, test_user_1):
179179
answer = val,
180180
act = val,
181181
correct = 'F',
182-
course = 'test_course_1'
182+
course = test_user_1.course.course_name
183183
)
184184
assert res['answer'] == val
185185

@@ -194,7 +194,7 @@ def test_GetFITBAnswerResults(test_client, test_user_1, runestone_db_tools):
194194
div_id = 'test_fitb_1',
195195
answer = val,
196196
act = val,
197-
course = 'test_course_1'
197+
course = test_user_1.course.course_name
198198
)
199199
assert res['answer'] == val
200200
assert res['correct']
@@ -206,7 +206,7 @@ def test_GetFITBAnswerResults(test_client, test_user_1, runestone_db_tools):
206206
div_id = 'test_fitb_1',
207207
answer = val,
208208
act = val,
209-
course = 'test_course_1'
209+
course = test_user_1.course.course_name
210210
)
211211
assert res['answer'] == val
212212
assert not res['correct']
@@ -221,7 +221,7 @@ def test_GetFITBAnswerResults(test_client, test_user_1, runestone_db_tools):
221221
div_id = 'test_fitb_1',
222222
answer = val,
223223
act = val,
224-
course = 'test_course_1'
224+
course = test_user_1.course.course_name
225225
)
226226
assert res['answer'] == val
227227
assert res['correct']
@@ -233,7 +233,7 @@ def test_GetFITBAnswerResults(test_client, test_user_1, runestone_db_tools):
233233
div_id = 'test_fitb_1',
234234
answer = val,
235235
act = val,
236-
course = 'test_course_1'
236+
course = test_user_1.course.course_name
237237
)
238238
assert res['answer'] == val
239239
assert not res['correct']
@@ -245,7 +245,7 @@ def test_GetFITBAnswerResults(test_client, test_user_1, runestone_db_tools):
245245
div_id = 'test_fitb_regex',
246246
answer = val,
247247
act = val,
248-
course = 'test_course_1'
248+
course = test_user_1.course.course_name
249249
)
250250
assert res['correct']
251251

@@ -255,7 +255,7 @@ def test_GetFITBAnswerResults(test_client, test_user_1, runestone_db_tools):
255255
div_id = 'test_fitb_regex',
256256
answer = val,
257257
act = val,
258-
course = 'test_course_1'
258+
course = test_user_1.course.course_name
259259
)
260260
assert res['correct']
261261

@@ -265,7 +265,7 @@ def test_GetFITBAnswerResults(test_client, test_user_1, runestone_db_tools):
265265
div_id = 'test_fitb_regex',
266266
answer = val,
267267
act = val,
268-
course = 'test_course_1'
268+
course = test_user_1.course.course_name
269269
)
270270
assert not res['correct']
271271

@@ -276,7 +276,7 @@ def test_GetFITBAnswerResults(test_client, test_user_1, runestone_db_tools):
276276
div_id = 'test_fitb_numeric',
277277
answer = val,
278278
act = val,
279-
course = 'test_course_1'
279+
course = test_user_1.course.course_name
280280
)
281281
assert res['correct']
282282
# Sphinx 1.8.5 and Sphinx 2.0 render text a bit differently.
@@ -288,7 +288,7 @@ def test_GetFITBAnswerResults(test_client, test_user_1, runestone_db_tools):
288288
div_id = 'test_fitb_numeric',
289289
answer = val,
290290
act = val,
291-
course = 'test_course_1'
291+
course = test_user_1.course.course_name
292292
)
293293
assert res['correct']
294294

@@ -298,7 +298,7 @@ def test_GetFITBAnswerResults(test_client, test_user_1, runestone_db_tools):
298298
div_id = 'test_fitb_numeric',
299299
answer = val,
300300
act = val,
301-
course = 'test_course_1'
301+
course = test_user_1.course.course_name
302302
)
303303
assert res['correct']
304304

@@ -308,7 +308,7 @@ def test_GetFITBAnswerResults(test_client, test_user_1, runestone_db_tools):
308308
div_id = 'test_fitb_numeric',
309309
answer = val,
310310
act = val,
311-
course = 'test_course_1'
311+
course = test_user_1.course.course_name
312312
)
313313
assert not res['correct']
314314
# Sphinx 1.8.5 and Sphinx 2.0 render text a bit differently.
@@ -321,7 +321,7 @@ def test_GetFITBAnswerResults(test_client, test_user_1, runestone_db_tools):
321321
div_id = 'test_fitb_numeric',
322322
answer = val,
323323
act = val,
324-
course = 'test_course_1'
324+
course = test_user_1.course.course_name
325325
)
326326
assert not res['correct']
327327
assert res['displayFeed'] in (['Close.'], ['<p>Close.</p>\n'])
@@ -333,23 +333,23 @@ def test_GetFITBAnswerResults(test_client, test_user_1, runestone_db_tools):
333333
div_id = 'test_fitb_numeric',
334334
answer = val,
335335
act = val,
336-
course = 'test_course_1'
336+
course = test_user_1.course.course_name
337337
)
338338
assert not res['correct']
339339
assert res['displayFeed'] in (['Nope.'], ['<p>Nope.</p>\n'])
340340

341341

342342
# Test client-side grading.
343343
db = runestone_db_tools.db
344-
db(db.courses.course_name == 'test_course_1').update(login_required=False)
344+
db(db.courses.course_name == test_user_1.course.course_name).update(login_required=False)
345345
val = '["blue","away"]'
346346
res = genericGetAssessResults(test_client, test_user_1,
347347
event = 'fillb',
348348
div_id = 'test_fitb_numeric',
349349
answer = val,
350350
act = val,
351351
correct = 'F',
352-
course = 'test_course_1'
352+
course = test_user_1.course.course_name
353353
)
354354
assert res['answer'] == val
355355
assert not res['correct']
@@ -364,7 +364,7 @@ def test_GetDragNDropResults(test_client, test_user_1):
364364
act = val,
365365
correct = 'T',
366366
minHeight = '512',
367-
course = 'test_course_1'
367+
course = test_user_1.course.course_name
368368
)
369369
assert res['correct']
370370

@@ -373,7 +373,7 @@ def test_GetHist(test_client, test_user_1):
373373
test_user_1.login()
374374

375375
kwargs = dict(
376-
course = 'test_course_1',
376+
course = test_user_1.course.course_name,
377377
sid = 'test_user_1',
378378
div_id = 'test_activecode_1',
379379
error_info = 'success',
@@ -424,7 +424,7 @@ def test_RunLog(test_client, test_user_1):
424424
test_user_1.login()
425425

426426
kwargs = dict(
427-
course = 'test_course_1',
427+
course = test_user_1.course.course_name,
428428
sid = 'test_user_1',
429429
div_id = 'test_activecode_1',
430430
code = "this is a unittest",
@@ -449,7 +449,7 @@ def test_GetLastPage(test_client, test_user_1):
449449

450450
test_user_1.login()
451451
kwargs = dict(
452-
course = 'test_course_1',
452+
course = test_user_1.course.course_name,
453453
lastPageUrl = 'test_chapter_1/subchapter_a.html',
454454
lastPageScrollLocation = 100,
455455
completionFlag = '1'
@@ -480,7 +480,7 @@ def test_GetTop10Answers(test_client, test_user_1, test_user):
480480

481481
kwargs = dict(
482482
event = 'fillb',
483-
course = 'test_course_1',
483+
course = user.course.course_name,
484484
div_id = 'test_fitb_1'
485485
)
486486
if index % 2 == 1:
@@ -604,7 +604,7 @@ def test_GetAgregateResults(test_client, test_user_1, test_user):
604604
user = users[user_name]
605605
user.login()
606606
# enter mchoice answer
607-
user.hsblog(event='mChoice', div_id="test_mchoice_1", course='test_course_1',
607+
user.hsblog(event='mChoice', div_id="test_mchoice_1", course=user.course.course_name,
608608
correct = correct, act = logAnswer, answer = answer)
609609
# logout
610610
user.logout()
@@ -613,7 +613,7 @@ def test_GetAgregateResults(test_client, test_user_1, test_user):
613613
user = users['user_1675']
614614
user.login()
615615
kwargs = dict(
616-
course = 'test_course_1',
616+
course = user.course.course_name,
617617
div_id = 'test_mchoice_1'
618618
)
619619

@@ -683,7 +683,7 @@ def test_GetCompletionStatus(test_client, test_user_1, runestone_db_tools):
683683
kwargs = dict(
684684
lastPageUrl = 'https://runestone.academy/runestone/static/test_course_1/test_chapter_1/subchapter_a.html',
685685
lastPageScrollLocation = 0,
686-
course = 'test_course_1',
686+
course = test_user_1.course.course_name,
687687
completionFlag = 0
688688
)
689689
test_client.validate('ajax/updatelastpage', data = kwargs)
@@ -699,7 +699,7 @@ def test_GetCompletionStatus(test_client, test_user_1, runestone_db_tools):
699699
kwargs = dict(
700700
lastPageUrl = 'https://runestone.academy/runestone/static/test_course_1/test_chapter_1/subchapter_a.html',
701701
lastPageScrollLocation = 0,
702-
course = 'test_course_1',
702+
course = test_user_1.course.course_name,
703703
completionFlag = 1
704704
)
705705
test_client.validate('ajax/updatelastpage', data = kwargs)
@@ -723,7 +723,7 @@ def test_updatelastpage(test_client, test_user_1, runestone_db_tools):
723723
kwargs = dict(
724724
lastPageUrl = 'https://runestone.academy/runestone/static/test_course_1/test_chapter_1/subchapter_a.html',
725725
lastPageScrollLocation = 0,
726-
course = 'test_course_1',
726+
course = test_user_1.course.course_name,
727727
completionFlag = 1
728728
)
729729
test_client.validate('ajax/updatelastpage', data = kwargs)
@@ -803,14 +803,14 @@ def test_get_datafile(test_client, test_user_1, runestone_db_tools):
803803

804804
# Create some datafile into the db and then read it out using the ajax/get_datafile()
805805
db = runestone_db_tools.db
806-
db.source_code.insert(course_id='test_course_1',
806+
db.source_code.insert(course_id=test_user_1.course.course_name,
807807
acid='mystery.txt',
808808
main_code = 'hello world')
809809

810810
test_user_1.make_instructor()
811811
test_user_1.login()
812812
kwargs = dict(
813-
course_id = 'test_course_1',
813+
course_id = test_user_1.course.course_name,
814814
acid = 'mystery.txt'
815815
)
816816
test_client.validate('ajax/get_datafile', data = kwargs)
@@ -820,7 +820,7 @@ def test_get_datafile(test_client, test_user_1, runestone_db_tools):
820820

821821
# non-existant datafile
822822
kwargs = dict(
823-
course_id = 'test_course_1',
823+
course_id = test_user_1.course.course_name,
824824
acid = 'thisWillNotBeThere.txt'
825825
)
826826
test_client.validate('ajax/get_datafile', data = kwargs)

0 commit comments

Comments
 (0)