def setUp(self): self.user = User.objects.create_user(username='******', password='******') self.course = Course(title='test_title', addedBy=self.user) self.course.save() self.concept = Concept(title='test title', addedBy=self.user) self.concept.save() self.lesson = Lesson(title='ugh', text='brr', addedBy=self.user, kind=Lesson.ORCT_QUESTION) self.lesson.save_root() self.lesson.add_concept_link(self.concept, ConceptLink.TESTS, self.user) self.unit = Unit(title='test unit title', addedBy=self.user) self.unit.save() self.unit_lesson = UnitLesson(unit=self.unit, addedBy=self.user, treeID=42, lesson=self.lesson) self.unit_lesson.save() self.response = Response(course=self.course, lesson=self.lesson, author=self.user, unitLesson=self.unit_lesson, confidence=Response.GUESS, title='test title', text='test text') self.response.save() self.context = { 'actionTarget': '/ct/courses/1/units/1/', 'ul': self.unit_lesson, 'test_text': 'This is a test text', 'r': self.response }
def setUp(self): self.user = User.objects.create_user(username="******", password="******") self.course = Course(title="test_title", addedBy=self.user) self.course.save() self.concept = Concept(title="test title", addedBy=self.user) self.concept.save() self.lesson = Lesson(title="ugh", text="brr", addedBy=self.user, kind=Lesson.ORCT_QUESTION) self.lesson.save_root() self.lesson.add_concept_link(self.concept, ConceptLink.TESTS, self.user) self.unit = Unit(title="test unit title", addedBy=self.user) self.unit.save() self.unit_lesson = UnitLesson(unit=self.unit, addedBy=self.user, treeID=42, lesson=self.lesson) self.unit_lesson.save() self.response = Response( course=self.course, lesson=self.lesson, author=self.user, unitLesson=self.unit_lesson, confidence=Response.GUESS, title="test title", text="test text", ) self.response.save() self.context = { "actionTarget": "/ct/courses/1/units/1/", "ul": self.unit_lesson, "test_text": "This is a test text", "r": self.response, }
def setUp(self): self.user = User.objects.create_user(username='******', password='******') self.client.login(username='******', password='******') self.course = Course(title='test_title', addedBy=self.user) self.course.save() self.unit = Unit(title='test unit title', addedBy=self.user) self.unit.save() self.course_unit = CourseUnit(course=self.course, unit=self.unit, order=0, addedBy=self.user) self.course_unit.save() self.role = Role(course=self.course, user=self.user, role=Role.INSTRUCTOR) self.role.save() self.concept = Concept.new_concept('bad', 'idea', self.unit, self.user) self.lesson = Lesson(title='New York Test Lesson', text='brr', addedBy=self.user) self.lesson.save_root(self.concept) self.unit_lesson = UnitLesson(unit=self.unit, lesson=self.lesson, addedBy=self.user, treeID=self.lesson.id) self.unit_lesson.save()
def setUp(self): super(TestErrorViewSet, self).setUp() concept = Concept(title='test title', addedBy=self.user) concept.save() self.lesson.concept = concept self.lesson.save() self.unit_lesson_error = UnitLesson(unit=self.unit, order=0, lesson=self.lesson, addedBy=self.user, treeID=self.lesson.id) self.unit_lesson_error.save() self.student_error = StudentError(response=self.resp1, errorModel=self.unit_lesson_error, author=self.user) self.student_error.save()
def setUp(self): self.user = User.objects.create_user(username='******', password='******') self.client.login(username='******', password='******') self.course = Course(title='test_title', addedBy=self.user) self.course.save() self.unit = Unit(title='test unit title', addedBy=self.user) self.unit.save() self.course_unit = CourseUnit( course=self.course, unit=self.unit, order=0, addedBy=self.user ) self.course_unit.releaseTime = timezone.now() - datetime.timedelta(days=1) self.course_unit.save() self.enroll = EnrollUnitCode(courseUnit=self.course_unit) self.enroll.save() self.role = Role(course=self.course, user=self.user, role=Role.INSTRUCTOR) self.role.save() self.student_role = Role(course=self.course, user=self.user, role=Role.ENROLLED) self.student_role.save() self.concept = Concept.new_concept('bad', 'idea', self.unit, self.user) self.lesson = Lesson( title='New York Test Lesson', text='brr', addedBy=self.user, kind=Lesson.ORCT_QUESTION ) self.lesson.save_root(self.concept) self.unit_lesson = UnitLesson( unit=self.unit, lesson=self.lesson, addedBy=self.user, treeID=self.lesson.id, order=0 ) self.unit_lesson.save() self.unit_lesson_answer = UnitLesson( parent=self.unit_lesson, unit=self.unit, lesson=self.lesson, addedBy=self.user, treeID=self.lesson.id, kind=UnitLesson.ANSWERS ) self.unit_lesson_answer.save() self.user = User.objects.create_user(username='******', password='******') call_command('fsm_deploy')
def test_sourceDB(self): """ Check wikipedia concept retrieval. """ c, lesson = Concept.get_from_sourceDB('New York City', self.user) self.assertEqual(c.title, 'New York City') self.assertEqual(c.addedBy, self.user) self.assertEqual(lesson.addedBy, self.wikiUser) self.assertEqual(lesson.concept, c) self.assertTrue(lesson.is_committed()) self.assertEqual(lesson.changeLog, 'initial text from wikipedia') self.assertEqual(lesson.sourceDB, 'wikipedia') self.assertEqual(lesson.sourceID, 'New York City') self.assertIn('City of New York', lesson.text) # check that subsequent retrieval uses stored db record c2, l2 = Concept.get_from_sourceDB('New York City', self.user) self.assertEqual(c2.pk, c.pk) self.assertEqual(l2.pk, lesson.pk) self.assertIn(c, list(Concept.search_text('new york')))
def setUp(self): self.client = Client() self.user = User.objects.create_user('test', '*****@*****.**', 'test') get_specs()[0].save_graph(self.user.username) get_specs_additional()[0].save_graph(self.user.username) get_specs_resource()[0].save_graph(self.user.username) self.unit = Unit(title='Test title', addedBy=self.user) self.unit.save() self.course = Course(title='Test title', description='test description', access='Public', enrollCode='111', lockout='222', addedBy=self.user) self.course.save() self.courseunit = CourseUnit( unit=self.unit, course=self.course, order=0, addedBy=self.user, releaseTime=timezone.now() ) self.courseunit.save() self.concept = Concept.new_concept('bad', 'idea', self.unit, self.user) lesson = Lesson(title='title', text='text', addedBy=self.user) lesson.save() self.unitlesson = UnitLesson( unit=self.unit, order=0, lesson=lesson, addedBy=self.user, treeID=lesson.id ) self.unitlesson.save() resource_lesson = Lesson( title='title for resource', text='text for resource', addedBy=self.user ) resource_lesson.save() self.resource_unitlesson = UnitLesson( unit=self.unit, lesson=resource_lesson, addedBy=self.user, treeID=resource_lesson.id ) self.resource_unitlesson.save()
class TagsTest(TestCase): def setUp(self): self.user = User.objects.create_user(username='******', password='******') self.course = Course(title='test_title', addedBy=self.user) self.course.save() self.concept = Concept(title='test title', addedBy=self.user) self.concept.save() self.lesson = Lesson(title='ugh', text='brr', addedBy=self.user, kind=Lesson.ORCT_QUESTION) self.lesson.save_root() self.lesson.add_concept_link(self.concept, ConceptLink.TESTS, self.user) self.unit = Unit(title='test unit title', addedBy=self.user) self.unit.save() self.unit_lesson = UnitLesson(unit=self.unit, addedBy=self.user, treeID=42, lesson=self.lesson) self.unit_lesson.save() self.response = Response(course=self.course, lesson=self.lesson, author=self.user, unitLesson=self.unit_lesson, confidence=Response.GUESS, title='test title', text='test text') self.response.save() self.context = { 'actionTarget': '/ct/courses/1/units/1/', 'ul': self.unit_lesson, 'test_text': 'This is a test text', 'r': self.response } def render_template(self, string, context=None): context = context or {} context = Context(context) return Template(string).render(context) @unpack @data( ('{{ test_text | md2html }}', '<p>This is a test text</p>\n'), ('{{ actionTarget | get_object_url:ul }}', '/ct/courses/1/units/1/lessons/1/'), ('{{ actionTarget | get_home_url:ul }}', '/ct/courses/1/units/1/lessons/1/'), ('{{ actionTarget | get_thread_url:r }}', '/ct/courses/1/units/1/lessons/1/faq/1/'), ('{{ actionTarget | get_tasks_url:ul }}', '/ct/courses/1/units/1/lessons/1/tasks/'), ('{{ actionTarget | get_dummy_navbar }}', '<li><a href="/ct/courses/1/">Course</a></li>'), ) def test_all_filters(self, template_variable, expected_result): rendered = self.render_template('{% load ct_extras %}' + template_variable, context=self.context) self.assertEqual(rendered, expected_result) @patch('ct.templatetags.ct_extras.pypandoc') def test_md2html_pandoc_exception(self, pypandoc): pypandoc.convert.side_effect = StandardError rendered = self.render_template( '{% load ct_extras %}' '{{ test_text | md2html }}', context=self.context) self.assertEqual(rendered, self.context['test_text']) @data('get_base_url', 'get_path_type') def test_get_base_url_exception(self, helper): with self.assertRaises(ValueError): getattr(inspect.getmodule(self), helper).__call__('/ct/courses/1/units/1/lessons/1/', baseToken='non_existent_token') def test_get_object_url_exception(self): self.context[ 'ul'] = self.unit # Unit object does not have get_url method rendered = self.render_template( '{% load ct_extras %}' '{{ actionTarget | get_object_url:ul }}', context=self.context) self.assertEqual(rendered, '/ct/courses/1/units/1/unit/1/teach/') @patch('ct.templatetags.ct_extras.timezone') def test_display_datetime(self, timezone_patched): saved_time = timezone.now() timezone_patched.now.return_value = saved_time context = {'dt': saved_time - timedelta(1)} rendered = self.render_template( '{% load ct_extras %}' '{{ dt|display_datetime }}', context=context) self.assertEqual(rendered, '1 day ago') def test_find_audio(self): result = find_audio('test tag head .. audio:: test tag tail \n', 4) self.assertEqual(result, (14, 39, 'test tag tail')) def test_audio_html(self): """ Function should return string for embeding audio into html. """ result = audio_html('audio.mp3') self.assertEqual( result, '''<audio controls><source src="audio.ogg" type="audio/ogg"><source src="audio.mp3" ''' '''type="audio/mpeg">no support for audio!</audio>''') def test_video_html(self): """ Function should return string for embeding youtube or vimeo link. """ result = video_html('youtube:test_video_path') self.assertIn('test_video_path', result) self.assertIn('src="https://www.youtube.com/embed/', result) result = video_html('vimeo:test_video_path') self.assertIn('test_video_path', result) self.assertIn('src="https://player.vimeo.com/video/', result) def test_video_html_with_exception(self): """ Test exception handling. """ result = video_html('youtube') self.assertEqual(result, 'ERROR: bad video source: youtube') result = video_html('some_new_cdn:test_video_path') self.assertEqual(result, 'ERROR: unknown video sourceDB: some_new_cdn') def test_add_replace_temporary_markers(self): """ Test add_temporary_markers and replace_temporary_markers in tandem. """ result = add_temporary_markers( 'test tag head .. audio:: test tag tail \n', find_audio) self.assertEqual( result, ('test tag head mArKeR:0:\n', [('mArKeR:0:', 'test tag tail')])) result = replace_temporary_markers(result[0], audio_html, result[1]) self.assertEqual( result, '''test tag head <audio controls><source src="test tag tail.ogg" type="audio/ogg">''' '''<source src="test tag tail.mp3" type="audio/mpeg">no support for audio!</audio>\n''' )
class TagsTest(TestCase): def setUp(self): self.user = User.objects.create_user(username="******", password="******") self.course = Course(title="test_title", addedBy=self.user) self.course.save() self.concept = Concept(title="test title", addedBy=self.user) self.concept.save() self.lesson = Lesson(title="ugh", text="brr", addedBy=self.user, kind=Lesson.ORCT_QUESTION) self.lesson.save_root() self.lesson.add_concept_link(self.concept, ConceptLink.TESTS, self.user) self.unit = Unit(title="test unit title", addedBy=self.user) self.unit.save() self.unit_lesson = UnitLesson(unit=self.unit, addedBy=self.user, treeID=42, lesson=self.lesson) self.unit_lesson.save() self.response = Response( course=self.course, lesson=self.lesson, author=self.user, unitLesson=self.unit_lesson, confidence=Response.GUESS, title="test title", text="test text", ) self.response.save() self.context = { "actionTarget": "/ct/courses/1/units/1/", "ul": self.unit_lesson, "test_text": "This is a test text", "r": self.response, } def render_template(self, string, context=None): context = context or {} context = Context(context) return Template(string).render(context) @unpack @data( ("{{ test_text | md2html }}", "<p>This is a test text</p>\n"), ("{{ actionTarget | get_object_url:ul }}", "/ct/courses/1/units/1/lessons/1/"), ("{{ actionTarget | get_home_url:ul }}", "/ct/courses/1/units/1/lessons/1/"), ("{{ actionTarget | get_thread_url:r }}", "/ct/courses/1/units/1/lessons/1/faq/1/"), ("{{ actionTarget | get_tasks_url:ul }}", "/ct/courses/1/units/1/lessons/1/tasks/"), ("{{ actionTarget | get_dummy_navbar }}", '<li><a href="/ct/courses/1/">Course</a></li>'), ) def test_all_filters(self, template_variable, expected_result): rendered = self.render_template("{% load ct_extras %}" + template_variable, context=self.context) self.assertEqual(rendered, expected_result) @patch("ct.templatetags.ct_extras.pypandoc") def test_md2html_pandoc_exception(self, pypandoc): pypandoc.convert.side_effect = StandardError rendered = self.render_template("{% load ct_extras %}" "{{ test_text | md2html }}", context=self.context) self.assertEqual(rendered, self.context["test_text"]) @data("get_base_url", "get_path_type") def test_get_base_url_exception(self, helper): with self.assertRaises(ValueError): getattr(inspect.getmodule(self), helper).__call__( "/ct/courses/1/units/1/lessons/1/", baseToken="non_existent_token" ) def test_get_object_url_exception(self): self.context["ul"] = self.unit # Unit object does not have get_url method rendered = self.render_template( "{% load ct_extras %}" "{{ actionTarget | get_object_url:ul }}", context=self.context ) self.assertEqual(rendered, "/ct/courses/1/units/1/unit/1/teach/") @patch("ct.templatetags.ct_extras.timezone") def test_display_datetime(self, timezone_patched): saved_time = timezone.now() timezone_patched.now.return_value = saved_time context = {"dt": saved_time - timedelta(1)} rendered = self.render_template("{% load ct_extras %}" "{{ dt|display_datetime }}", context=context) self.assertEqual(rendered, "1 day ago") def test_find_audio(self): result = find_audio("test tag head .. audio:: test tag tail \n", 4) self.assertEqual(result, (14, 39, "test tag tail")) def test_audio_html(self): """ Function should return string for embeding audio into html. """ result = audio_html("audio.mp3") self.assertEqual( result, """<audio controls><source src="audio.ogg" type="audio/ogg"><source src="audio.mp3" """ """type="audio/mpeg">no support for audio!</audio>""", ) def test_video_html(self): """ Function should return string for embeding youtube or vimeo link. """ result = video_html("youtube:test_video_path") self.assertIn("test_video_path", result) self.assertIn('src="https://www.youtube.com/embed/', result) result = video_html("vimeo:test_video_path") self.assertIn("test_video_path", result) self.assertIn('src="https://player.vimeo.com/video/', result) def test_video_html_with_exception(self): """ Test exception handling. """ result = video_html("youtube") self.assertEqual(result, "ERROR: bad video source: youtube") result = video_html("some_new_cdn:test_video_path") self.assertEqual(result, "ERROR: unknown video sourceDB: some_new_cdn") def test_add_replace_temporary_markers(self): """ Test add_temporary_markers and replace_temporary_markers in tandem. """ result = add_temporary_markers("test tag head .. audio:: test tag tail \n", find_audio) self.assertEqual(result, ("test tag head mArKeR:0:\n", [("mArKeR:0:", "test tag tail")])) result = replace_temporary_markers(result[0], audio_html, result[1]) self.assertEqual( result, """test tag head <audio controls><source src="test tag tail.ogg" type="audio/ogg">""" """<source src="test tag tail.mp3" type="audio/mpeg">no support for audio!</audio>\n""", )