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}
Exemple #4
0
 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
Exemple #5
0
 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': {},
    }
Exemple #7
0
 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
Exemple #8
0
 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)
Exemple #9
0
 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