def test_randomtrial(self): """ Basic randomized trial. """ self.assertEqual(self.ulQ.order, 0) from ct.fsm_plugin.lessonseq import get_specs f = get_specs()[0].save_graph(self.user.username) # load FSM spec from ct.fsm_plugin.randomtrial import get_specs f = get_specs()[0].save_graph(self.user.username) # load FSM spec self.assertEqual(ActivityLog.objects.count(), 0) fsmData = dict(testFSM='lessonseq', treatmentFSM='lessonseq', treatment1=self.ulQ.unit, treatment2=self.ulQ.unit, testUnit=self.ulQ2.unit, course=self.course) request, fsmStack, result = self.get_fsm_request( 'randomtrial', fsmData, dict(trialName='test')) self.assertEqual(self.client.session['fsmID'], fsmStack.state.pk) self.assertEqual(result, '/fsm/nodes/%d/' % f.startNode.pk) self.assertEqual(ActivityLog.objects.count(), 1) # rt FSM start page response = self.client.get(result) self.assertEqual(response.status_code, 200) self.assertContains(response, 'answer a few preliminary questions') url = '/ct/courses/%d/units/%d/lessons/%d/ask/' \ % (self.course.pk, self.ulQ2.unit.pk, self.ulQ2.pk) self.check_post_get(result, dict(fsmtask='next'), url, 'Scary Question') # pretest Q postdata = dict(text='i dunno', confidence=Response.GUESS) url = self.check_post_get(url, postdata, '/assess/', 'write an answer') # pretest assess assessPOST = dict(selfeval=Response.CORRECT, status=DONE_STATUS, liked='') url2 = '/ct/courses/%d/units/%d/lessons/%d/ask/' \ % (self.course.pk, self.ulQ.unit.pk, self.ulQ.pk) self.check_post_get(url, assessPOST, url2, 'your quest') # treatment Q postdata = dict(text='i like rats', confidence=Response.GUESS) url = self.check_post_get(url2, postdata, '/assess/', 'write an answer') # treatment assess url2 = '/ct/courses/%d/units/%d/lessons/%d/ask/' \ % (self.course.pk, self.ulQ2.unit.pk, self.ulQ2.pk) self.check_post_get(url, assessPOST, url2, 'Scary Question') # posttest Q postdata = dict(text='i still dunno', confidence=Response.GUESS) url = self.check_post_get(url2, postdata, '/assess/', 'write an answer') # posttest assess url2 = '/ct/courses/%d/units/%d/tasks/' \ % (self.course.pk, self.ulQ.unit.pk) self.check_post_get(url, assessPOST, url2, 'Next Step to work on') self.assertEqual( Response.objects.filter(activity__isnull=False, confidence=Response.GUESS).count(), 3) # check responses logged to RT activity
def test_randomtrial(self): """ Basic randomized trial. """ self.assertEqual(self.ulQ.order, 0) from ct.fsm_plugin.lessonseq import get_specs f = get_specs()[0].save_graph(self.user.username) # load FSM spec from ct.fsm_plugin.randomtrial import get_specs f = get_specs()[0].save_graph(self.user.username) # load FSM spec self.assertEqual(ActivityLog.objects.count(), 0) fsmData = dict( testFSM="lessonseq", treatmentFSM="lessonseq", treatment1=self.ulQ.unit, treatment2=self.ulQ.unit, testUnit=self.ulQ2.unit, course=self.course, ) request, fsmStack, result = self.get_fsm_request("randomtrial", fsmData, dict(trialName="test")) self.assertEqual(self.client.session["fsmID"], fsmStack.state.pk) self.assertEqual(result, "/fsm/nodes/%d/" % f.startNode.pk) self.assertEqual(ActivityLog.objects.count(), 1) # rt FSM start page response = self.client.get(result) self.assertEqual(response.status_code, 200) self.assertContains(response, "answer a few preliminary questions") url = "/ct/courses/%d/units/%d/lessons/%d/ask/" % (self.course.pk, self.ulQ2.unit.pk, self.ulQ2.pk) self.check_post_get(result, dict(fsmtask="next"), url, "Scary Question") # pretest Q postdata = dict(text="i dunno", confidence=Response.GUESS) url = self.check_post_get(url, postdata, "/assess/", "write an answer") # pretest assess assessPOST = dict(selfeval=Response.CORRECT, status=DONE_STATUS, liked="") url2 = "/ct/courses/%d/units/%d/lessons/%d/ask/" % (self.course.pk, self.ulQ.unit.pk, self.ulQ.pk) self.check_post_get(url, assessPOST, url2, "your quest") # treatment Q postdata = dict(text="i like rats", confidence=Response.GUESS) url = self.check_post_get(url2, postdata, "/assess/", "write an answer") # treatment assess url2 = "/ct/courses/%d/units/%d/lessons/%d/ask/" % (self.course.pk, self.ulQ2.unit.pk, self.ulQ2.pk) self.check_post_get(url, assessPOST, url2, "Scary Question") # posttest Q postdata = dict(text="i still dunno", confidence=Response.GUESS) url = self.check_post_get(url2, postdata, "/assess/", "write an answer") # posttest assess url2 = "/ct/courses/%d/units/%d/tasks/" % (self.course.pk, self.ulQ.unit.pk) self.check_post_get(url, assessPOST, url2, "Next Step to work on") self.assertEqual( Response.objects.filter(activity__isnull=False, confidence=Response.GUESS).count(), 3 ) # check responses logged to RT activity
def test_randomtrial(self): """ Basic randomized trial. """ self.assertEqual(self.ulQ.order, 0) from ct.fsm_plugin.lessonseq import get_specs f = get_specs()[0].save_graph(self.user.username) # load FSM spec from ct.fsm_plugin.randomtrial import get_specs f = get_specs()[0].save_graph(self.user.username) # load FSM spec self.assertEqual(ActivityLog.objects.count(), 0) fsmData = dict(testFSM='lessonseq', treatmentFSM='lessonseq', treatment1=self.ulQ.unit, treatment2=self.ulQ.unit, testUnit=self.ulQ2.unit, course=self.course) request, fsmStack, result = self.get_fsm_request( 'randomtrial', fsmData, dict(trialName='test') ) self.assertEqual(self.client.session['fsmID'], fsmStack.state.pk) self.assertEqual(result, '/fsm/nodes/%d/' % f.startNode.pk) self.assertEqual(ActivityLog.objects.count(), 1) # rt FSM start page response = self.client.get(result) self.assertEqual(response.status_code, 200) self.assertContains(response, 'answer a few preliminary questions') url = '/ct/courses/%d/units/%d/lessons/%d/ask/' \ % (self.course.pk, self.ulQ2.unit.pk, self.ulQ2.pk) self.check_post_get(result, dict(fsmtask='next'), url, 'Scary Question') # pretest Q postdata = dict(text='i dunno', confidence=Response.GUESS) url = self.check_post_get(url, postdata, '/assess/', 'write an answer') # pretest assess assessPOST = dict(selfeval=Response.CORRECT, status=DONE_STATUS, liked='') url2 = '/ct/courses/%d/units/%d/lessons/%d/ask/' \ % (self.course.pk, self.ulQ.unit.pk, self.ulQ.pk) self.check_post_get(url, assessPOST, url2, 'your quest') # treatment Q postdata = dict(text='i like rats', confidence=Response.GUESS) url = self.check_post_get(url2, postdata, '/assess/', 'write an answer') # treatment assess url2 = '/ct/courses/%d/units/%d/lessons/%d/ask/' \ % (self.course.pk, self.ulQ2.unit.pk, self.ulQ2.pk) self.check_post_get(url, assessPOST, url2, 'Scary Question') # posttest Q postdata = dict(text='i still dunno', confidence=Response.GUESS) url = self.check_post_get(url2, postdata, '/assess/', 'write an answer') # posttest assess url2 = '/ct/courses/%d/units/%d/tasks/' \ % (self.course.pk, self.ulQ.unit.pk) self.check_post_get(url, assessPOST, url2, 'Next Step to work on') self.assertEqual(Response.objects.filter(activity__isnull=False, confidence=Response.GUESS). count(), 3) # check responses logged to RT activity
def test_start2(self): """ Check basic startup of new FSM instance using FSMSpecification. """ from fsm.fsm_plugin.testme import get_specs spec = get_specs()[0] f = spec.save_graph("jacob") self.assertTrue(f.startNode.doLogging) self.assertFalse(f.get_node("MID").doLogging) fsmStack = self.do_start(f) # test filter_input() plugin functionality edge = fsmStack.state.fsmNode.outgoing.get(name="next") self.assertTrue(edge.filter_input("the right stuff")) self.assertFalse(edge.filter_input("the WRONG stuff")) # test get_help() plugin functionality request = FakeRequest(self.user, path="/ct/about/") msg = fsmStack.state.fsmNode.get_help(fsmStack.state, request) self.assertEqual(msg, "here here!") request = FakeRequest(self.user, path="/ct/courses/1/") msg = fsmStack.state.fsmNode.get_help(fsmStack.state, request) self.assertEqual(msg, "there there") request = FakeRequest(self.user) msg = fsmStack.state.fsmNode.get_help(fsmStack.state, request) self.assertEqual(msg, None)
def test_slideshow(self): """ Basic slide show FSM. """ from ct.fsm_plugin.slideshow import get_specs get_specs()[0].save_graph(self.user.username) # load FSM spec fsmData = dict(unit=self.ulQ2.unit, course=self.course) request, fsmStack, result = self.get_fsm_request('slideshow', fsmData) self.assertEqual(result, '/ct/courses/%d/units/%d/lessons/%d/read/' % (self.course.pk, self.ulQ2.unit.pk, self.ulQ2.pk)) # start page = question response = self.client.get(result) self.assertEqual(response.status_code, 200) self.assertContains(response, 'Scary Question') # answer page answer = self.ulQ2.get_answers()[0] url = '/ct/courses/%d/units/%d/lessons/%d/read/' \ % (self.course.pk, self.ulQ2.unit.pk, answer.pk) self.check_post_get(result, dict(fsmtask='next'), url, 'an answer') # end of slide show should dump us on concepts page url2 = '/ct/courses/%d/units/%d/concepts/' % (self.course.pk, self.ulQ2.unit.pk) self.check_post_get(url, dict(fsmtask='next'), url2, 'Pretest')
def test_start2(self): """ Check basic startup of new FSM instance using FSMSpecification. """ from fsm.fsm_plugin.testme import get_specs spec = get_specs()[0] f = spec.save_graph('jacob') self.assertTrue(f.startNode.doLogging) self.assertFalse(f.get_node('MID').doLogging) fsmStack = self.do_start(f) # test filter_input() plugin functionality edge = fsmStack.state.fsmNode.outgoing.get(name='next') self.assertTrue(edge.filter_input('the right stuff')) self.assertFalse(edge.filter_input('the WRONG stuff')) # test get_help() plugin functionality request = FakeRequest(self.user, path='/ct/about/') msg = fsmStack.state.fsmNode.get_help(fsmStack.state, request) self.assertEqual(msg, 'here here!') request = FakeRequest(self.user, path='/ct/courses/1/') msg = fsmStack.state.fsmNode.get_help(fsmStack.state, request) self.assertEqual(msg, 'there there') request = FakeRequest(self.user) msg = fsmStack.state.fsmNode.get_help(fsmStack.state, request) self.assertEqual(msg, None)