def test_entity(self): id = 618 name = "Course 1" url = "/path/to/course" difficult = 234 num_things = 123 num_levels = 2 difficult_url = "/path/to/difficult/words" is_disable = True ce = CourseEntity( id=id, name=name, url=url, difficult=difficult, num_words=num_things, num_levels=num_levels, difficult_url=difficult_url, is_disable=is_disable, ) course_as_dict = ce.dict() expected = { "id": 618, "name": "Course 1", "url": "/path/to/course", "difficult": 234, "num_words": 123, "num_levels": 2, "difficult_url": "/path/to/difficult/words", "levels_url": [], "levels": [], "is_disable": True, } self.assertDictEqual(course_as_dict, expected)
def test_add_courses(self): course_1 = CourseEntity( id=1, name="Course 1", url="/path/to/course", difficult=111, num_words=121, num_levels=11, difficult_url="/path/to/difficult/words", ) course_2 = CourseEntity( id=2, name="Course 2", url="/path/to/course", difficult=222, num_words=122, num_levels=12, difficult_url="/path/to/difficult/words", ) course_3 = CourseEntity( id=3, name="Course 3", url="/path/to/course", difficult=333, num_words=123, num_levels=13, difficult_url="/path/to/difficult/words", ) courses = [course_1, course_2, course_3] self.assertEqual(self.de.get_courses(), []) self.de.add_courses(courses) stored_courses = self.de.get_courses() self.assertEqual(len(courses), 3) self.assertListEqual(stored_courses, courses)
def test_create(self): fresh_entities = [ CourseEntity( id=1, name="course 1", url="/course/1", difficult=1, num_words=1, num_levels=1, difficult_url="/difficult/1", ), CourseEntity( id=2, name="course 2", url="/course/2", difficult=2, num_words=2, num_levels=2, difficult_url="/difficult/2", ), CourseEntity( id=3, name="course 3", url="/course/3", difficult=3, num_words=3, num_levels=3, difficult_url="/difficult/3", ), CourseEntity( id=4, name="course 4", url="/course/4", difficult=4, num_words=4, num_levels=4, difficult_url="/difficult/4", ), CourseEntity( id=5, name="course 5", url="/course/5", difficult=5, num_words=5, num_levels=5, difficult_url="/difficult/5", ), ] before_courses = Course.objects.all() expected_before_num_courses = 5 self.assertEqual(len(before_courses), expected_before_num_courses) dca = DBCourseActions(reporter=CourseReporter()) dca.create(fresh_entities) after_courses = Course.objects.all() expected_after_num_courses = expected_before_num_courses + len( fresh_entities) self.assertEqual(len(after_courses), expected_after_num_courses)
def test_get_courses(self): ce5 = CourseEntity( id=5, name="Course 5", url="/path/to/course", difficult=234, num_words=123, num_levels=2, difficult_url="/path/to/difficult/words", ) ce1 = CourseEntity( id=1, name="Course 1", url="/path/to/course", difficult=234, num_words=123, num_levels=2, difficult_url="/path/to/difficult/words", ) ce3 = CourseEntity( id=3, name="Course 3", url="/path/to/course", difficult=234, num_words=123, num_levels=2, difficult_url="/path/to/difficult/words", ) ce8 = CourseEntity( id=8, name="Course 8", url="/path/to/course", difficult=234, num_words=123, num_levels=2, difficult_url="/path/to/difficult/words", ) courses_entity = [ce5, ce3, ce1, ce8] for course_entity in courses_entity: self.de.add_course(course_entity) courses = self.de.get_courses() self.assertEqual(len(courses), 4) ids = [course.id for course in courses] expected = [1, 3, 5, 8] self.assertEqual(ids, expected)
def test_purge(self): ce5 = CourseEntity( id=5, name="Course 5", url="/path/to/course", difficult=234, num_words=123, num_levels=2, difficult_url="/path/to/difficult/words", ) ce1 = CourseEntity( id=1, name="Course 1", url="/path/to/course", difficult=234, num_words=123, num_levels=2, difficult_url="/path/to/difficult/words", ) ce3 = CourseEntity( id=3, name="Course 3", url="/path/to/course", difficult=234, num_words=123, num_levels=2, difficult_url="/path/to/difficult/words", ) ce8 = CourseEntity( id=8, name="Course 8", url="/path/to/course", difficult=234, num_words=123, num_levels=2, difficult_url="/path/to/difficult/words", ) courses_entity = [ce5, ce3, ce1, ce8] for course_entity in courses_entity: self.de.add_course(course_entity) courses = self.de.get_courses() self.assertEqual(len(courses), 4) self.de.purge() self.assertEqual(self.de.get_courses(), [])
def make( self, items: Generator[CoursesMakerT, None, None]) -> List[CourseEntity]: for item in items: attrs = { "id": item.id, "name": item.name, "url": item.url, "difficult": item.difficult, "num_words": item.num_things, "num_levels": item.num_levels, "difficult_url": urljoin(item.url, DIFFICULT_ITEMS_URL), "is_disable": item.is_disable, } ce = CourseEntity(**attrs) ce.generate_levels_url() self._append(ce) return self.data
def test_add_levels(self): course_id = 1 ce = CourseEntity( id=course_id, name="Course 1", url="/path/to/course", difficult=234, num_words=123, num_levels=2, difficult_url="/path/to/difficult/words", ) level1 = LevelEntity(number=1, course_id=ce.id, name="TestLevel1", id=1) level2 = LevelEntity(number=2, course_id=ce.id, name="TestLevel2", id=2) levels = [level1, level2] ce.add_levels(levels) self.assertListEqual(ce.levels, levels)
def test_add_course(self): id = random.getrandbits(10) name = "Course 1" url = "/path/to/course" difficult = 234 num_things = 123 num_levels = 2 difficult_url = "/path/to/difficult/words" ce = CourseEntity( id=id, name=name, url=url, difficult=difficult, num_words=num_things, num_levels=num_levels, difficult_url=difficult_url, ) self.assertEqual(self.de.get_courses(), []) self.de.add_course(ce) courses = self.de.get_courses() self.assertEqual(len(courses), 1) for course in courses: self.assertEqual(course, ce)
def test_course_match(self): fresh_entities = [ CourseEntity( id=1, name="course 1", url="/course/1", difficult=1, num_words=1, num_levels=1, difficult_url="/difficult/1", ), CourseEntity( id=2, name="course 2", url="/course/2", difficult=2, num_words=2, num_levels=2, difficult_url="/difficult/2", ), CourseEntity( id=3, name="course 3", url="/course/3", difficult=3, num_words=3, num_levels=3, difficult_url="/difficult/3", ), CourseEntity( id=4, name="course 4", url="/course/4", difficult=4, num_words=4, num_levels=4, difficult_url="/difficult/4", ), CourseEntity( id=5, name="course 5", url="/course/5", difficult=5, num_words=5, num_levels=5, difficult_url="/difficult/5", ), ] actual_entities = [ CourseEntity( id=1, name="course 1", url="/course/1", difficult=1, num_words=1, num_levels=1, difficult_url="/difficult/1", ), CourseEntity( id=2, name="course 2", url="/course/2", difficult=2, num_words=2, num_levels=2, difficult_url="/difficult/2", ), CourseEntity( id=20, name="course 20", url="/course/20", difficult=20, num_words=20, num_levels=20, difficult_url="/difficult/20", ), CourseEntity( id=5, name="course 5", url="/course/5", difficult=5, num_words=5, num_levels=5, difficult_url="/difficult/50", ), ] diff = CourseSelector().match(fresh_entities=fresh_entities, actual_entities=actual_entities) self.assertEqual(len(diff.create), 2) self.assertEqual(len(diff.delete), 1) self.assertEqual(len(diff.equal), 2) self.assertEqual(len(diff.update), 1)
def test_fetch_levels(self, mock_get) -> None: courses = [ CourseEntity( id=1987730, name="Adjective Complex", url="/course/1987730/adjective-complex/", difficult=6, num_words=19, num_levels=7, difficult_url= "/course/1987730/adjective-complex/difficult-items/", levels_url=["/course/1987730/adjective-complex/1"], ) ] repo = UpdateMemriseContainer.origin_repo self.set_get_mock_response(mock_get, 200, {"test": True}) result = repo.get_levels(courses) expected = [ LevelEntity( id=7365190, number=1, course_id=1987730, name="New level", words=[ WordEntity( id=204850790, level_id=7365190, word_a="fair", word_b="справедливый, честный", is_learned=True, ), WordEntity( id=204850795, level_id=7365190, word_a="nasty", word_b="мерзкий, противный, неприятный", is_learned=True, ), WordEntity( id=204850798, level_id=7365190, word_a="rough", word_b="грубый", is_learned=True, ), WordEntity( id=204850806, level_id=7365190, word_a="tense", word_b="напряженный", is_learned=True, ), WordEntity( id=204850807, level_id=7365190, word_a="vital", word_b="жизненно важный", is_learned=True, ), WordEntity( id=204850811, level_id=7365190, word_a="deprecated", word_b="устаревший, исключенный, не рекомендуемый", is_learned=True, ), WordEntity( id=204852805, level_id=7365190, word_a="joyful", word_b="радостный, ликующий", is_learned=True, ), WordEntity( id=204852806, level_id=7365190, word_a="startled", word_b="испуганный, пораженный, встревоженный", is_learned=True, ), WordEntity( id=204852807, level_id=7365190, word_a="humiliated", word_b="униженный", is_learned=True, ), WordEntity( id=204852809, level_id=7365190, word_a="remarkable", word_b="замечательный, выдающийся", is_learned=True, ), WordEntity( id=204852812, level_id=7365190, word_a="odd", word_b="странный, необычный", is_learned=True, ), WordEntity( id=204852813, level_id=7365190, word_a="awkward", word_b="неловкий, неуклюжий (момент, поведение)", is_learned=True, ), WordEntity( id=204852815, level_id=7365190, word_a="mere", word_b="простой, всего лишь", is_learned=True, ), WordEntity( id=204852818, level_id=7365190, word_a="pleased", word_b="довольный", is_learned=True, ), WordEntity( id=204852819, level_id=7365190, word_a="familiar", word_b="привычный, знакомый", is_learned=True, ), WordEntity( id=204852822, level_id=7365190, word_a="certain", word_b="определенный, уверенный", is_learned=True, ), WordEntity( id=204857071, level_id=7365190, word_a="essential", word_b="существенный, обязательный (вещь)", is_learned=True, ), WordEntity( id=190320331, level_id=7365190, word_a="immediate", word_b="немедленный", is_learned=True, ), WordEntity( id=204857072, level_id=7365190, word_a="fluent", word_b="беглый, плавный", is_learned=True, ), WordEntity( id=204857073, level_id=7365190, word_a="appropriate", word_b="соответствующий, подходящий", is_learned=True, ), ], ) ] self.assertEqual(result, expected)