class TestUtils:

    def setup_class(self):
        self.config = testing.setUp()

        self.root = BaseFolder("root")

        self.f0 = BaseFolder("f0")
        self.f1 = BaseFolder("f1")

        self.x0 = BaseContent("x0")
        self.x1 = BaseContent("x1")

        self.f0.add_content(self.x0)
        self.f0.add_content(self.x1)

        self.root.add_content(self.f0)
        self.root.add_content(self.f1)

    def teardown_class(self):
        testing.tearDown()

    def test_object_to_path(self):

        assert ["f0", "x1"] == object_to_path(self.x1, as_list=True)
        assert "/f0/x1" == object_to_path(self.x1)
        assert ".f0.x1" == object_to_path(self.x1, path_sep=".")

    def test_path_to_object(self):

        assert self.x0 == path_to_object("/f0/x0", self.root)
    def setup_class(self):
        self.config = testing.setUp()

        self.root = BaseFolder("root")

        self.f0 = BaseFolder("f0")
        self.f1 = BaseFolder("f1")

        self.x0 = TestContent("x0")
        self.x1 = TestContent("x1")

        self.f0.add_content(self.x0)
        self.f0.add_content(self.x1)

        self.root.add_content(self.f0)
        self.root.add_content(self.f1)
예제 #3
0
    def list_content(self, content_type=None, iface=None, **kwargs):
        """ use base listing, but filter out temp objects """

        result = HitmanBaseFolder.list_content(
            self, content_type, iface, **kwargs)

        # filter out temp objects
        result = [r for r in result if not ITemporaryObject.providedBy(r)]
        return result
    def setup_class(self):
        self.config = testing.setUp()

        self.root = BaseFolder("root")
        self.root.__name__ = 'root'

        self.f0 = BaseFolder("f0")
        self.f1 = BaseFolder("f1")

        self.x0 = TestContent("x0")
        self.x1 = TestContent("x1")

        self.f0.add_content(self.x0)
        self.f0.add_content(self.x1)

        self.root.add_content(self.f0)
        self.root.add_content(self.f1)

        Registry.register('testcontent', TestContent)
class TestBaseModel:

    def setup_class(self):
        self.config = testing.setUp()

        self.root = BaseFolder("root")

        self.f0 = BaseFolder("f0")
        self.f1 = BaseFolder("f1")

        self.x0 = TestContent("x0")
        self.x1 = TestContent("x1")

        self.f0.add_content(self.x0)
        self.f0.add_content(self.x1)

        self.root.add_content(self.f0)
        self.root.add_content(self.f1)

    def teardown_class(self):
        testing.tearDown()

    def test_model(self):

        request = testing.DummyRequest()

        assert ["f0", "x1"] == self.x1.path

        assert self.x0.id == 'x0'
        self.x0.set_id('x0-new')
        assert self.x0.id == 'x0-new'
        self.x0.set_id('x0')
        assert self.x0.owner == ''
        self.x0.owner = 'Tester'
        assert self.x0.owner == 'Tester'

        assert self.x0.content_type == 'testcontent'
        assert self.x0.allowed_content_types(request) == []
        assert self.x0.base_id == 'testcontent'
        assert self.x0.has_parent
        assert self.x0.__data__.as_dict() == {}
        self.x0.set_attribute('whatyouwant', 'a little respect')
        assert self.x0.__data__.as_dict() == {
                'whatyouwant': 'a little respect'}
        form = self.x0.__form__(request)
        assert self.x0.title == 'x0'
        now = datetime.datetime.now()
        assert self.x0.created <= now
        assert self.x0.changed >= self.x0.created
        assert self.x0.dottedpath == '.f0.x0'
        assert str(self.x0) == 'x0'

        gello = TestContent("gello")
        self.f0.add_content(gello)
        self.f0.rename_content("gello", "yello")
        content = self.f0.get_content("yello")
        content2 = self.f0.get_content("yello", content_type='testcontent')
        assert content == content2 == gello
        assert "yello" in self.f0._list_content_ids()
        listing1 = self.f0.list_content(content_type='testcontent')
        listing2 = self.f0.list_content(iface=ITestContent)
        listing3 = self.f0.list_content()
        assert listing1 == listing2 == listing3

        self.f0.move_content('yello', -1)
        listing4 = self.f0.list_content()
        assert listing3.index(gello) == 2
        assert listing4.index(gello) == 1

        listing_ordered = self.f0.list_content(order_by='id')
        assert listing4 != listing_ordered
        assert set(listing1) == set(listing_ordered)
        self.f0.set_order(order=[])
        assert str(self.f0) == 'f0'

        found1 = self.f0.find_content()
        found2 = self.f0.find_content(content_type="testcontent")
        assert found1
        assert found1 == found2
        assert self.f0._normalize_id("wat's up?") == "wat-s-up-"
        assert self.f0.generate_content_id("wat's up?") == "wat-s-up-"
        assert self.f0.generate_content_id("yello") == "yello_1"

        self.f0.remove_content("yello")
예제 #6
0
 def __init__(self, content_id, data=None, **kwargs):
     HitmanBaseFolder.__init__(self, content_id, data, **kwargs)
class TestUtils:

    def setup_class(self):
        self.config = testing.setUp()

        self.root = BaseFolder("root")
        self.root.__name__ = 'root'

        self.f0 = BaseFolder("f0")
        self.f1 = BaseFolder("f1")

        self.x0 = TestContent("x0")
        self.x1 = TestContent("x1")

        self.f0.add_content(self.x0)
        self.f0.add_content(self.x1)

        self.root.add_content(self.f0)
        self.root.add_content(self.f1)

        Registry.register('testcontent', TestContent)

    def teardown_class(self):
        testing.tearDown()

    def test_view_changed(self):

        request = testing.DummyRequest()
        view = base.ContentView(self.x0, request)
        now = datetime.datetime.now()
        assert self.x0.changed <= now
        assert view.changed == self.x0.changed.strftime("%d-%m-%Y %H:%M")

    def test_view_list_fields(self):

        request = testing.DummyRequest()
        view = base.ContentView(self.x0, request)
        fields = view.list_fields()

        labels = set(["Name", "Short description", "Keywords",
            "Page text (including images)"])
        field_labels = set([f['label'] for f in fields])
        assert labels ^ field_labels == set([])

    def test_DelView(self):

        request = testing.DummyRequest()
        request.application_url = 'http://example.com/'

        assert 'x1' in self.f0._list_content_ids()

        view = base.DelView(self.x1, request)

        result = view()
        assert result == {}
        assert 'x1' in self.f0._list_content_ids()

        request.params['cancel'] = 'cancel'
        result = view()
        assert isinstance(result, HTTPFound)
        assert result.location == 'http://example.com/root/f0/x1/'
        assert 'x1' in self.f0._list_content_ids()

        request.params['submit'] = 'submit'
        result = view()
        assert isinstance(result, HTTPFound)
        after_del_redirect = view.after_del_redirect
        assert result.location == after_del_redirect

        # check if the object has been removed
        assert 'x1' not in self.f0._list_content_ids()

    def test_EditView(self):

        request = testing.DummyRequest()
        request.application_url = 'http://example.com/'

        view = base.EditView(self.x0, request)

        assert view.content_type == 'testcontent'
        assert view.after_edit_redirect == 'http://example.com/root/f0/x0/'

        assert self.x0.__data__['name'] is None

        # submit empty edit form, will result in error (name is required)
        request.params['w20e.forms.process'] = 1
        result = view()
        assert isinstance(result, dict)
        assert 'name' in result['errors']
        assert 'required' in result['errors']['name']
        assert self.x0.__data__['name'] is None

        # submit form with name
        name = "Gëllo, I'm x0"
        request.params['name'] = name
        view = base.EditView(self.x0, request)
        result = view()
        assert isinstance(result, HTTPFound)
        assert result.location == 'http://example.com/root/f0/x0/'
        assert self.x0.__data__['name'] == name

    def test_AddView(self):

        request = testing.DummyRequest()
        request.application_url = 'http://example.com/'
        request.params['ctype'] = 'testcontent'

        view = base.AddView(self.f1, request)
        assert view.content_type == 'testcontent'
        assert view.after_add_redirect == 'http://example.com/root/f1/'
        assert view.cancel_add_redirect == 'http://example.com/root/f1/'

        result = view()
        assert isinstance(result, dict)
        assert result['status'] == 'unknown'
        assert result['errors'] == {}

        # submit empty form
        request.params['w20e.forms.process'] = 1
        view = base.AddView(self.f1, request)
        result = view()
        assert isinstance(result, dict)
        assert result['status'] == 'error'
        assert 'name' in result['errors']
        assert 'required' in result['errors']['name']

        # submit form with name set
        name = "My ådded cøntënt"
        request.params['w20e.forms.process'] = 1
        request.params['name'] = name
        view = base.AddView(self.f1, request)
        result = view()
        assert isinstance(result, HTTPFound)
        assert result.location == 'http://example.com/root/f1/'
        content = self.f1.list_content(content_type='testcontent')
        assert len(content) == 1
        assert content[0].__data__['name'] == name