def test_load_wrong_data(version, data): with pytest.raises(ValidationError): result = load(TestModel, { 'api_version': (0, 0), 'data': { 'versioned_field': 123 }, })
def test_load_data(version, data): result = load(TestModel, { 'api_version': list(version), 'data': { 'versioned_field': data }, }) assert result.versioned_field == data
def test_dump_data(version, data): data_dict = { 'api_version': list(version), 'data': { 'versioned_field': data }, } result = load(TestModel, data_dict) assert dump(result, version=version) == {'$schema': '', **data_dict}
def _set_pages(self, context): if not self.pages: self.pages = {} for slug in 'front', 'back': if slug not in self.pages: page = load( SessionPage, {'api_version': [0, 0], 'session-page': {}}, slug=slug, parent=self, ) self.pages[slug] = page
def load_licenses(self, path): """Add licenses from files in the given path to the model""" for licence_path in path.iterdir(): with (licence_path / 'info.yml').open() as f: info = yaml.safe_load(f) slug = licence_path.name license = load( License, {'api_version': [0, 0], 'license': info}, parent=self, slug=slug, ) self.licenses[slug] = license
def test_dump_v0(version, data): data_dict = { 'api_version': list(version), 'data': { 'versioned_field': data }, } result = load(TestModel, data_dict) assert dump(result, version=(0, 0)) == { '$schema': '', 'api_version': [0, 0], 'data': {}, }
def load_local( cls, slug, *, parent, repo_info, path='.', canonical=False, renderer=naucse_render ): path = Path(path).resolve() data = renderer.get_course(slug, version=1, path=path) is_meta = (slug == 'courses/meta') result = load( cls, data, slug=slug, repo_info=repo_info, parent=parent, base_path=path, is_meta=is_meta, canonical=canonical, ) result.repo_info = repo_info result.renderer = renderer return result
def load_lessons(self, slugs): if self._frozen: raise Exception('course is frozen') slugs = set(slugs) - set(self._lessons) rendered = self.course.renderer.get_lessons( slugs, vars=self.vars, path=self.base_path, ) new_lessons = load( DictConverter(Lesson, key_arg='slug'), rendered, parent=self, ) for slug in slugs: try: lesson = new_lessons[slug] except KeyError: raise ValueError(f'{slug} missing from rendered lessons') self._lessons[slug] = lesson self._requested_lessons.discard(slug)
def from_renderer( cls, *, parent, renderer, canonical=False, ): data = renderer.get_course() slug = renderer.slug is_meta = (slug == 'courses/meta') result = load( cls, data, slug=slug, parent=parent, renderer=renderer, is_meta=is_meta, canonical=canonical, ) return result
def test_not_optional(): with pytest.raises(ValidationError): load(TestModel, { 'api_version': [2, 0], 'data': {}, })
def test_load_nothing(version): result = load(TestModel, { 'api_version': list(version), 'data': {}, }) assert result.versioned_field == None