Skip to content
Snippets Groups Projects
unittest_link.py 2.1 KiB
Newer Older
Nicolas Chauvat's avatar
Nicolas Chauvat committed
# -*- coding: utf-8 -*-
Sandrine Ribeau's avatar
Sandrine Ribeau committed
from cubicweb.devtools.testlib import CubicWebTC
from cubicweb.web import uicfg
Nicolas Chauvat's avatar
Nicolas Chauvat committed
from cubicweb.web.views import actions, embedding
from cubes.link import views

Sylvain Thénault's avatar
Sylvain Thénault committed
afs = uicfg.autoform_section
Sandrine Ribeau's avatar
Sandrine Ribeau committed

class LinkTC(CubicWebTC):
Nicolas Chauvat's avatar
Nicolas Chauvat committed

    def setup_database(self):
Sandrine Ribeau's avatar
Sandrine Ribeau committed
        self.request().create_entity('Link', title=u"vous êtes perdu ?", url=u"http://www.perdu.com")
Sylvain Thénault's avatar
Sylvain Thénault committed

Nicolas Chauvat's avatar
Nicolas Chauvat committed
    def test_possible_actions(self):
Sandrine Ribeau's avatar
Sandrine Ribeau committed
        req = self.request()
        rset = self.execute('Any X WHERE X is Link')
Nicolas Chauvat's avatar
Nicolas Chauvat committed
        self.assertEquals(self.pactionsdict(req, rset),
Sylvain Thénault's avatar
Sylvain Thénault committed
                             {'moreactions': [embedding.EmbedAction],
                              'mainactions': [actions.ModifyAction, views.LinkFollowAction],
                              'moreactions': [actions.ManagePermissionsAction, actions.AddRelatedActions,
                                              actions.DeleteAction, actions.CopyAction,
Nicolas Chauvat's avatar
Nicolas Chauvat committed
                                              embedding.EmbedAction],
                              })

    def test_relations_by_category(self):
        def rbc(iterable):
            return [(rschema.type, x) for rschema, tschemas, x in iterable]
Sandrine Ribeau's avatar
Sandrine Ribeau committed
        e = self.vreg["etypes"].etype_class('Link')(self.request())
Nicolas Chauvat's avatar
Nicolas Chauvat committed
        # we should only see embed when we are in the managers group
        self.assertEquals(rbc(afs.relations_by_section(e, 'main', 'attributes', 'update')),
Sylvain Thénault's avatar
Sylvain Thénault committed
                          [('title', 'subject'), ('url', 'subject'),
                           ('embed', 'subject'),
                           ('description', 'subject'),
                           ('eid', 'subject')])
Nicolas Chauvat's avatar
Nicolas Chauvat committed
        self.create_user('toto')
        self.login('toto')
Sylvain Thénault's avatar
Sylvain Thénault committed
        # create a new instance with the new connection
        e = self.vreg["etypes"].etype_class('Link')(self.request())
        self.assertEquals(rbc(afs.relations_by_section(e, 'main', 'attributes', 'update')),
Sylvain Thénault's avatar
Sylvain Thénault committed
                          [('title', 'subject'), ('url', 'subject'),
                           ('description', 'subject'),
                           ('eid', 'subject')])

Nicolas Chauvat's avatar
Nicolas Chauvat committed
if __name__ == '__main__':
    from logilab.common.testlib import unittest_main
    unittest_main()