def test_basic_config(self): config_file = "basic-config.yaml" pes_loader = ProgrammingChallengesStructureLoader( structure_filename=config_file, base_path=self.base_path) pes_loader.load() ped_objects = ProgrammingChallengeDifficulty.objects.all() pel_objects = ProgrammingChallengeLanguage.objects.all() self.assertQuerysetEqual(ped_objects, ["<ProgrammingChallengeDifficulty: Level 1>"]) self.assertQuerysetEqual( pel_objects, ["<ProgrammingChallengeLanguage: Language 1>"])
def test_translation(self): config_file = "translation.yaml" pes_loader = ProgrammingChallengesStructureLoader( structure_filename=config_file, base_path=self.base_path) pes_loader.load() translated_lang = ProgrammingChallengeLanguage.objects.get( slug="translated") self.assertSetEqual(set(["en", "de"]), set(translated_lang.languages)) self.assertEqual("English language 1", translated_lang.name) with translation.override("de"): self.assertEqual("German language 1", translated_lang.name) translated_difficulty = ProgrammingChallengeDifficulty.objects.get( level=0) self.assertSetEqual(set(["en", "de"]), set(translated_difficulty.languages)) self.assertEqual("English difficulty 1", translated_difficulty.name) with translation.override("de"): self.assertEqual("German difficulty 1", translated_difficulty.name)
def test_translation_missing(self): config_file = "translation.yaml" pes_loader = ProgrammingChallengesStructureLoader( structure_filename=config_file, base_path=self.base_path) pes_loader.load() untranslated_lang = ProgrammingChallengeLanguage.objects.get( slug="untranslated") self.assertSetEqual(set(["en"]), set(untranslated_lang.languages)) self.assertEqual("English language 2", untranslated_lang.name) # Language name SHOULD fall back to english if not given with translation.override("de"): self.assertEqual("English language 2", untranslated_lang.name) untranslated_difficulty = ProgrammingChallengeDifficulty.objects.get( level=1) self.assertSetEqual(set(["en"]), set(untranslated_difficulty.languages)) self.assertEqual("English difficulty 2", untranslated_difficulty.name) # Check name does not fall back to english for missing translation with translation.override("de"): self.assertEqual("", untranslated_difficulty.name)
def test_empty_difficulties_name(self): config_file = "empty-difficulties-name.yaml" pes_loader = ProgrammingChallengesStructureLoader( structure_filename=config_file, base_path=self.base_path) self.assertRaises(InvalidYAMLValueError, pes_loader.load)
def test_empty_languages_number(self): config_file = "empty-languages-number.yaml" pes_loader = ProgrammingChallengesStructureLoader( structure_filename=config_file, base_path=self.base_path) self.assertRaises(MissingRequiredFieldError, pes_loader.load)
def test_missing_difficulties(self): config_file = "missing-difficulties.yaml" pes_loader = ProgrammingChallengesStructureLoader( structure_filename=config_file, base_path=self.base_path) self.assertRaises(MissingRequiredFieldError, pes_loader.load)
def create_programming_challenges_structure_loader(self, **kwargs): """Create programming challenges structure loader.""" return ProgrammingChallengesStructureLoader(**kwargs)
def create_programming_challenges_structure_loader(self, structure_file_path, BASE_PATH): """Create programming challenges structure loader.""" return ProgrammingChallengesStructureLoader(structure_file_path, BASE_PATH)