def test_import_resources(self, registry, log):
        from adhocracy_core.scripts.import_resources import _import_resources

        (self._tempfd, filename) = mkstemp()
        with open(filename, 'w') as f:
            f.write(json.dumps([
                {"path": "/",
                 "content_type": "adhocracy_core.resources.organisation.IOrganisation",
                 "data": {"adhocracy_core.sheets.name.IName":
                          {"name": "alt-treptow"}}}
            ]))

        root = registry.content.create(IRootPool.__identifier__)
        _import_resources(root, registry, filename)
        assert IOrganisation.providedBy(root['alt-treptow'])
        assert get_sheet_field(root['alt-treptow'], IName, 'name') == 'alt-treptow'
    def test_import_resource_create_group(self, registry, log):
        from adhocracy_core.scripts.import_resources import _import_resources

        (self._tempfd, filename) = mkstemp()
        with open(filename, 'w') as f:
            f.write(json.dumps([
                {"path": "/principals/groups",
                 "content_type": "adhocracy_core.resources.principal.IGroup",
                 "data": {"adhocracy_core.sheets.name.IName":
                          {"name": "moderators-abc"},
                          "adhocracy_core.sheets.principal.IGroup":
                          {"roles": ["creator", "initiator"]}
                 }
                }

            ]))
        root = registry.content.create(IRootPool.__identifier__)
        _import_resources(root, registry, filename)
    def test_import_resources_invalid_data(self, registry, log):
        from adhocracy_core.scripts.import_resources import _import_resources
        import colander

        (self._tempfd, filename) = mkstemp()
        with open(filename, 'w') as f:
            f.write(json.dumps([
                {"path": "/",
                 "content_type": "adhocracy_core.resources.pool.IPool",
                 "data": {"adhocracy_core.sheets.name.IName":
                          {"name": "NameSample"},
                          "adhocracy_core.sheets.title.ITitle":
                          {"title": 42}
                 }}
            ]))

        root = registry.content.create(IRootPool.__identifier__)
        with pytest.raises(colander.Invalid):
            _import_resources(root, registry, filename)
    def test_import_resources_already_oneleveldeep(self, registry, principals,
                                                   log):
        from adhocracy_core.scripts.import_resources import _import_resources

        (self._tempfd, filename) = mkstemp()
        with open(filename, 'w') as f:
            f.write(json.dumps([
                {"path": "/orga",
                 "content_type": "adhocracy_core.resources.organisation.IOrganisation",
                 "data": {"adhocracy_core.sheets.name.IName":
                          {"name": "alt-treptow"}}}
            ]))

        root = registry.content.create(IRootPool.__identifier__)
        appstructs = {'adhocracy_core.sheets.name.IName': {'name': 'orga'}}
        registry.content.create(IOrganisation.__identifier__, root,
                                appstructs=appstructs, registry=registry)

        _import_resources(root, registry, filename)
        assert IOrganisation.providedBy(root['orga']['alt-treptow'])