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

Commit e3952c4

Browse files
committed
Merge branch 'test_child_course' of https://github.com/bjones1/RunestoneServer into bjones1-test_child_course
2 parents afd7653 + d450b72 commit e3952c4

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
@@ -244,36 +244,40 @@ def __init__(self, runestone_db):
244244
# Create a new course. It returns an object with information about the created course.
245245
def create_course(self,
246246
# The name of the course to create, as a string.
247-
course_name='test_course_1',
247+
course_name='test_child_course_1',
248248
# The start date of the course, as a string.
249249
term_start_date='2000-01-01',
250250
# The value of the ``login_required`` flag for the course.
251251
login_required=True,
252252
# The base course for this course. If ``None``, it will use ``course_name``.
253-
base_course=None,
253+
base_course='test_course_1',
254254
# The student price for this course.
255255
student_price=None):
256256

257257
# Sanity check: this class shouldn't exist.
258-
assert not self.db(self.db.courses.course_name == course_name).select().first()
258+
db = self.db
259+
assert not db(db.courses.course_name == course_name).select().first()
260+
261+
# Create the base course if it doesn't exist.
262+
if (course_name != base_course and
263+
not db(db.courses.course_name == base_course).select(db.courses.id)):
264+
self.create_course(base_course, term_start_date, login_required,
265+
base_course, student_price)
259266

260267
# Store these values in an object for convenient access.
261268
obj = _object()
262269
obj.course_name = course_name
263270
obj.term_start_date = term_start_date
264271
obj.login_required = login_required
265-
obj.base_course = base_course or course_name
272+
obj.base_course = base_course
266273
obj.student_price = student_price
267-
268-
# Keep this in a local variable, in case the test bench changes the value stored in this object. This guarantees the deletion will work.
269-
course_id = self.db.courses.insert(
274+
obj.course_id = db.courses.insert(
270275
course_name=course_name, base_course=obj.base_course,
271276
term_start_date=term_start_date,
272277
login_required=login_required,
273278
student_price=student_price,
274279
)
275-
obj.course_id = course_id
276-
self.db.commit()
280+
db.commit()
277281
return obj
278282

279283

@@ -564,7 +568,7 @@ def test_user(test_client, runestone_db_tools):
564568
# Provide easy access to a test user and course.
565569
@pytest.fixture
566570
def test_user_1(runestone_db_tools, test_user):
567-
course = runestone_db_tools.create_course('test_course_1')
571+
course = runestone_db_tools.create_course()
568572
return test_user('test_user_1', 'password_1', course)
569573

570574

tests/test_ajax2.py

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

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

8282

8383
def ajaxCall(client, funcName, **kwargs):
@@ -154,7 +154,7 @@ def test_GetParsonsResults(test_client, test_user_1,):
154154
answer = val,
155155
act = val,
156156
correct = 'F',
157-
course = 'test_course_1',
157+
course = test_user_1.course.course_name,
158158
source = 'test_source_1'
159159
)
160160
assert res['answer'] == val
@@ -167,7 +167,7 @@ def test_GetClickableResults(test_client, test_user_1):
167167
answer = val,
168168
act = val,
169169
correct = 'F',
170-
course = 'test_course_1'
170+
course = test_user_1.course.course_name
171171
)
172172
assert res['answer'] == val
173173
assert not res['correct']
@@ -180,7 +180,7 @@ def test_GetShortAnswerResults(test_client, test_user_1):
180180
answer = val,
181181
act = val,
182182
correct = 'F',
183-
course = 'test_course_1'
183+
course = test_user_1.course.course_name
184184
)
185185
assert res['answer'] == val
186186

@@ -195,7 +195,7 @@ def test_GetFITBAnswerResults(test_client, test_user_1, runestone_db_tools):
195195
div_id = 'test_fitb_1',
196196
answer = val,
197197
act = val,
198-
course = 'test_course_1'
198+
course = test_user_1.course.course_name
199199
)
200200
assert res['answer'] == val
201201
assert res['correct']
@@ -207,7 +207,7 @@ def test_GetFITBAnswerResults(test_client, test_user_1, runestone_db_tools):
207207
div_id = 'test_fitb_1',
208208
answer = val,
209209
act = val,
210-
course = 'test_course_1'
210+
course = test_user_1.course.course_name
211211
)
212212
assert res['answer'] == val
213213
assert not res['correct']
@@ -222,7 +222,7 @@ def test_GetFITBAnswerResults(test_client, test_user_1, runestone_db_tools):
222222
div_id = 'test_fitb_1',
223223
answer = val,
224224
act = val,
225-
course = 'test_course_1'
225+
course = test_user_1.course.course_name
226226
)
227227
assert res['answer'] == val
228228
assert res['correct']
@@ -234,7 +234,7 @@ def test_GetFITBAnswerResults(test_client, test_user_1, runestone_db_tools):
234234
div_id = 'test_fitb_1',
235235
answer = val,
236236
act = val,
237-
course = 'test_course_1'
237+
course = test_user_1.course.course_name
238238
)
239239
assert res['answer'] == val
240240
assert not res['correct']
@@ -246,7 +246,7 @@ def test_GetFITBAnswerResults(test_client, test_user_1, runestone_db_tools):
246246
div_id = 'test_fitb_regex',
247247
answer = val,
248248
act = val,
249-
course = 'test_course_1'
249+
course = test_user_1.course.course_name
250250
)
251251
assert res['correct']
252252

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

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

@@ -277,7 +277,7 @@ def test_GetFITBAnswerResults(test_client, test_user_1, runestone_db_tools):
277277
div_id = 'test_fitb_numeric',
278278
answer = val,
279279
act = val,
280-
course = 'test_course_1'
280+
course = test_user_1.course.course_name
281281
)
282282
assert res['correct']
283283
# Sphinx 1.8.5 and Sphinx 2.0 render text a bit differently.
@@ -289,7 +289,7 @@ def test_GetFITBAnswerResults(test_client, test_user_1, runestone_db_tools):
289289
div_id = 'test_fitb_numeric',
290290
answer = val,
291291
act = val,
292-
course = 'test_course_1'
292+
course = test_user_1.course.course_name
293293
)
294294
assert res['correct']
295295

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

@@ -309,7 +309,7 @@ def test_GetFITBAnswerResults(test_client, test_user_1, runestone_db_tools):
309309
div_id = 'test_fitb_numeric',
310310
answer = val,
311311
act = val,
312-
course = 'test_course_1'
312+
course = test_user_1.course.course_name
313313
)
314314
assert not res['correct']
315315
# Sphinx 1.8.5 and Sphinx 2.0 render text a bit differently.
@@ -322,7 +322,7 @@ def test_GetFITBAnswerResults(test_client, test_user_1, runestone_db_tools):
322322
div_id = 'test_fitb_numeric',
323323
answer = val,
324324
act = val,
325-
course = 'test_course_1'
325+
course = test_user_1.course.course_name
326326
)
327327
assert not res['correct']
328328
assert res['displayFeed'] in (['Close.'], ['<p>Close.</p>\n'])
@@ -334,23 +334,23 @@ def test_GetFITBAnswerResults(test_client, test_user_1, runestone_db_tools):
334334
div_id = 'test_fitb_numeric',
335335
answer = val,
336336
act = val,
337-
course = 'test_course_1'
337+
course = test_user_1.course.course_name
338338
)
339339
assert not res['correct']
340340
assert res['displayFeed'] in (['Nope.'], ['<p>Nope.</p>\n'])
341341

342342

343343
# Test client-side grading.
344344
db = runestone_db_tools.db
345-
db(db.courses.course_name == 'test_course_1').update(login_required=False)
345+
db(db.courses.course_name == test_user_1.course.course_name).update(login_required=False)
346346
val = '["blue","away"]'
347347
res = genericGetAssessResults(test_client, test_user_1,
348348
event = 'fillb',
349349
div_id = 'test_fitb_numeric',
350350
answer = val,
351351
act = val,
352352
correct = 'F',
353-
course = 'test_course_1'
353+
course = test_user_1.course.course_name
354354
)
355355
assert res['answer'] == val
356356
assert not res['correct']
@@ -365,7 +365,7 @@ def test_GetDragNDropResults(test_client, test_user_1):
365365
act = val,
366366
correct = 'T',
367367
minHeight = '512',
368-
course = 'test_course_1'
368+
course = test_user_1.course.course_name
369369
)
370370
assert res['correct']
371371

@@ -374,7 +374,7 @@ def test_GetHist(test_client, test_user_1):
374374
test_user_1.login()
375375

376376
kwargs = dict(
377-
course = 'test_course_1',
377+
course = test_user_1.course.course_name,
378378
sid = 'test_user_1',
379379
div_id = 'test_activecode_1',
380380
error_info = 'success',
@@ -425,7 +425,7 @@ def test_RunLog(test_client, test_user_1):
425425
test_user_1.login()
426426

427427
kwargs = dict(
428-
course = 'test_course_1',
428+
course = test_user_1.course.course_name,
429429
sid = 'test_user_1',
430430
div_id = 'test_activecode_1',
431431
code = "this is a unittest",
@@ -450,7 +450,7 @@ def test_GetLastPage(test_client, test_user_1):
450450

451451
test_user_1.login()
452452
kwargs = dict(
453-
course = 'test_course_1',
453+
course = test_user_1.course.course_name,
454454
lastPageUrl = 'test_chapter_1/subchapter_a.html',
455455
lastPageScrollLocation = 100,
456456
completionFlag = '1'
@@ -481,7 +481,7 @@ def test_GetTop10Answers(test_client, test_user_1, test_user):
481481

482482
kwargs = dict(
483483
event = 'fillb',
484-
course = 'test_course_1',
484+
course = user.course.course_name,
485485
div_id = 'test_fitb_1'
486486
)
487487
if index % 2 == 1:
@@ -605,7 +605,7 @@ def test_GetAgregateResults(test_client, test_user_1, test_user):
605605
user = users[user_name]
606606
user.login()
607607
# enter mchoice answer
608-
user.hsblog(event='mChoice', div_id="test_mchoice_1", course='test_course_1',
608+
user.hsblog(event='mChoice', div_id="test_mchoice_1", course=user.course.course_name,
609609
correct = correct, act = logAnswer, answer = answer)
610610
# logout
611611
user.logout()
@@ -614,7 +614,7 @@ def test_GetAgregateResults(test_client, test_user_1, test_user):
614614
user = users['user_1675']
615615
user.login()
616616
kwargs = dict(
617-
course = 'test_course_1',
617+
course = user.course.course_name,
618618
div_id = 'test_mchoice_1'
619619
)
620620

@@ -684,7 +684,7 @@ def test_GetCompletionStatus(test_client, test_user_1, runestone_db_tools):
684684
kwargs = dict(
685685
lastPageUrl = 'https://runestone.academy/runestone/static/test_course_1/test_chapter_1/subchapter_a.html',
686686
lastPageScrollLocation = 0,
687-
course = 'test_course_1',
687+
course = test_user_1.course.course_name,
688688
completionFlag = 0
689689
)
690690
test_client.validate('ajax/updatelastpage', data = kwargs)
@@ -700,7 +700,7 @@ def test_GetCompletionStatus(test_client, test_user_1, runestone_db_tools):
700700
kwargs = dict(
701701
lastPageUrl = 'https://runestone.academy/runestone/static/test_course_1/test_chapter_1/subchapter_a.html',
702702
lastPageScrollLocation = 0,
703-
course = 'test_course_1',
703+
course = test_user_1.course.course_name,
704704
completionFlag = 1
705705
)
706706
test_client.validate('ajax/updatelastpage', data = kwargs)
@@ -724,7 +724,7 @@ def test_updatelastpage(test_client, test_user_1, runestone_db_tools):
724724
kwargs = dict(
725725
lastPageUrl = 'https://runestone.academy/runestone/static/test_course_1/test_chapter_1/subchapter_a.html',
726726
lastPageScrollLocation = 0,
727-
course = 'test_course_1',
727+
course = test_user_1.course.course_name,
728728
completionFlag = 1
729729
)
730730
test_client.validate('ajax/updatelastpage', data = kwargs)
@@ -804,14 +804,14 @@ def test_get_datafile(test_client, test_user_1, runestone_db_tools):
804804

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

811811
test_user_1.make_instructor()
812812
test_user_1.login()
813813
kwargs = dict(
814-
course_id = 'test_course_1',
814+
course_id = test_user_1.course.course_name,
815815
acid = 'mystery.txt'
816816
)
817817
test_client.validate('ajax/get_datafile', data = kwargs)
@@ -821,7 +821,7 @@ def test_get_datafile(test_client, test_user_1, runestone_db_tools):
821821

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

0 commit comments

Comments
 (0)