def test_it(self):
     from zope.interface import Interface
     from zope.interface import directlyProvides
     from karl.models.interfaces import ICatalogSearch
     from karl.models.interfaces import ICommunity
     context = testing.DummyModel()
     directlyProvides(context, ICommunity)
     context.member_names = set('a',)
     context.moderator_names = set()
     request = testing.DummyRequest(params={'val':'a'})
     profiles = testing.DummyModel()
     profile_1 = karltesting.DummyProfile(__name__='a',
                                          security_state='active')
     profile_2 = karltesting.DummyProfile(__name__='b',
                                          security_state='active')
     profile_3 = karltesting.DummyProfile(__name__='c',
                                          security_state='active')
     profile_4 = karltesting.DummyProfile(__name__='d',
                                          security_state='inactive')
     def resolver(docid):
         d = {1:profile_1, 2:profile_2, 3:profile_3, 4:profile_4}
         return d.get(docid)
     def dummy_catalog_search(context):
         def search(**kw):
             return 3, [1,2,3], resolver
         return search
     karltesting.registerAdapter(dummy_catalog_search, (Interface),
                             ICatalogSearch)
     response = self._callFUT(context, request)
     self.assertEqual(
         response.body,
         '[{"text": "title", "id": "b"}, '
         '{"text": "title", "id": "c"}]')
示例#2
0
    def setUp(self):
        testing.cleanUp()

        self.root = root = karltesting.DummyModel()
        root['profiles'] = profiles = karltesting.DummyModel()
        root.users = karltesting.DummyUsers()

        root['a'] = a = karltesting.DummyModel(creator='chris')
        root['b'] = b = karltesting.DummyModel(modified_by='chris')

        class DummySearchAdapter(object):
            def __init__(self, context):
                pass

            def __call__(self, **kw):
                resolver = lambda x: root.get(x)
                if kw.get('creator') == 'chris':
                    return 1, ['a'], resolver
                if kw.get('modified_by') == 'chris':
                    return 1, ['b'], resolver
                return 0, [], resolver

        from zope.interface import Interface
        from karl.models.interfaces import ICatalogSearch
        karltesting.registerAdapter(DummySearchAdapter, (Interface, Interface),
                                ICatalogSearch)
        karltesting.registerAdapter(DummySearchAdapter, (Interface,),
                                ICatalogSearch)

        root.catalog = catalog = karltesting.DummyModel()
        catalog['creator'] =  DummyCatalogIndex()
        catalog['modified_by'] =  DummyCatalogIndex()
示例#3
0
    def test_known_kind_no_text_term(self):
        from webob.multidict import MultiDict
        from karl.models.interfaces import IGroupSearchFactory
        from repoze.lemonade.testing import registerContentFactory
        from zope.interface import Interface

        content = DummyCommunityContent()

        def search_factory(*arg, **kw):
            return DummySearchFactory(content)

        search_factory.icon = "foo.jpg"
        search_factory.advanced_search = True
        karltesting.registerUtility(search_factory, IGroupSearchFactory, name="People")
        context = testing.DummyModel()
        context.catalog = {}
        context["profiles"] = profiles = testing.DummyModel()
        profiles["tweedle dee"] = testing.DummyModel(title="Tweedle Dee")
        request = testing.DummyRequest(params=MultiDict({"kind": "People"}))
        request.layout_manager = mock.Mock()
        from karl.models.interfaces import ICatalogSearch
        from karl.views.interfaces import IAdvancedSearchResultsDisplay

        registerContentFactory(DummyContent, IDummyContent)
        karltesting.registerAdapter(DummySearch, (Interface), ICatalogSearch)
        karltesting.registerAdapter(DummySearchResultsDisplay, (Interface, Interface), IAdvancedSearchResultsDisplay)
        result = self._callFUT(context, request)
        self.assertEqual(result["terms"], ["People"])
        self.assertEqual(len(result["results"]), 1)
示例#4
0
    def test_community_search(self):
        context = testing.DummyModel()
        context.title = "Citizens"
        context.catalog = {}
        context["profiles"] = profiles = testing.DummyModel()
        profiles["tweedle dee"] = testing.DummyModel(title="Tweedle Dee")
        from webob.multidict import MultiDict
        from karl.models.interfaces import ICommunity
        from zope.interface import directlyProvides

        directlyProvides(context, ICommunity)
        request = testing.DummyRequest(params=MultiDict({"body": "yo"}))
        request.layout_manager = mock.Mock()
        from zope.interface import Interface
        from karl.models.interfaces import ICatalogSearch
        from karl.views.interfaces import IAdvancedSearchResultsDisplay
        from repoze.lemonade.testing import registerContentFactory

        registerContentFactory(DummyContent, IDummyContent)
        karltesting.registerAdapter(DummySearch, (Interface), ICatalogSearch)
        karltesting.registerAdapter(DummySearchResultsDisplay, (Interface, Interface), IAdvancedSearchResultsDisplay)
        result = self._callFUT(context, request)
        self.assertEqual(result["community"], "Citizens")
        self.assertEqual(result["terms"], ["yo"])
        self.assertEqual(len(result["results"]), 1)
示例#5
0
    def test_with_parameter_withresults_withkind(self):
        def dummy_factory(context, request, term):
            def results():
                return 1, [1], lambda x: testing.DummyModel(title="yo")

            return results

        from repoze.lemonade.testing import registerListItem
        from karl.models.interfaces import IGroupSearchFactory

        registerListItem(IGroupSearchFactory, dummy_factory, "foo_kind", title="Dummy")
        context = testing.DummyModel()
        request = testing.DummyRequest()
        request.params = {"val": "somesearch", "kind": "foo_kind"}

        def dummy_adapter(context, request):
            return dict(title=context.title)

        from karl.views.interfaces import ILiveSearchEntry

        karltesting.registerAdapter(dummy_adapter, (testing.DummyModel, testing.DummyRequest), ILiveSearchEntry)
        response = self._callFUT(context, request)
        self.assertEqual(response.status, "200 OK")
        from simplejson import loads

        results = loads(response.body)
        self.assertEqual(len(results), 1)
        self.assertEqual(results[0]["title"], "yo")
        self.assertEqual(response.content_type, "application/json")
示例#6
0
    def test_numresults_nokind(self):
        def dummy_factory(context, request, term):
            return DummyGroupSearchFactory(lambda x: testing.DummyModel(title="yo"))

        from repoze.lemonade.testing import registerListItem
        from karl.models.interfaces import IGroupSearchFactory

        dummy_factory.livesearch = True
        registerListItem(IGroupSearchFactory, dummy_factory, "dummy", title="Dummy")
        context = testing.DummyModel()
        request = testing.DummyRequest()
        request.params = {"val": "somesearch"}

        def dummy_adapter(context, request):
            return dict(title=context.title)

        from karl.views.interfaces import ILiveSearchEntry

        karltesting.registerAdapter(dummy_adapter, (testing.DummyModel, testing.DummyRequest), ILiveSearchEntry)
        response = self._callFUT(context, request)
        self.assertEqual(response.status, "200 OK")
        from simplejson import loads

        results = loads(response.body)
        self.assertEqual(response.content_type, "application/json")
        self.assertEqual(len(results), 5)
示例#7
0
 def test_set_preferred_communities(self):
     from zope.interface import Interface
     from karl.models.interfaces import ICommunityInfo
     from karl.views.communities import get_preferred_communities
     context = testing.DummyModel()
     yo = testing.DummyModel()
     yo.title = 'Yo'
     yi = testing.DummyModel()
     yi.title = 'Yi'
     context['yo'] = yo
     context['yi'] = yi
     profiles = context['profiles'] = testing.DummyModel()
     foo = profiles['foo'] = testing.DummyModel()
     foo.preferred_communities = None
     request = testing.DummyRequest()
     karltesting.registerDummySecurityPolicy(
         'foo',
         groupids=[
         'group.community:yo:members',
         'group.community:yo:moderators',
         'group.community:yi:moderators',
         'group.community:yang:moderators'
         ]
         )
     karltesting.registerAdapter(DummyAdapter, (Interface, Interface),
                             ICommunityInfo)
     communities = ['yi']
     self._callFUT(context, request, communities)
     result = get_preferred_communities(context, request)
     self.assertEqual(len(result), 1)
     self.assertEqual(result[0], 'yi')
示例#8
0
 def test_w_overflow(self):
     from zope.interface import Interface
     from karl.models.interfaces import ICommunityInfo
     context = testing.DummyModel()
     profiles = context['profiles'] = testing.DummyModel()
     profiles['foo'] = testing.DummyModel()
     yo = testing.DummyModel()
     yo.title = 'Yo'
     yi = testing.DummyModel()
     yi.title = 'Yi'
     context['yo'] = yo
     context['yi'] = yi
     request = testing.DummyRequest()
     karltesting.registerDummySecurityPolicy(
         'foo',
         groupids=[
         'group.community:yo:members',
         'group.community:yo:moderators',
         'group.community:yi:moderators',
         'group.community:yang:moderators'
         ]
         )
     karltesting.registerAdapter(DummyAdapter, (Interface, Interface),
                             ICommunityInfo)
     result = self._callFUT(context, request)
     self.assertEqual(len(result), 2)
     self.assertEqual(result[0].context, yi)
示例#9
0
 def test_jquery_list_my_communities_view(self):
     from zope.interface import Interface
     from karl.models.interfaces import ICommunityInfo
     context = testing.DummyModel()
     communities = context['communities'] = testing.DummyModel()
     yo = testing.DummyModel()
     yo.title = 'Yo'
     yi = testing.DummyModel()
     yi.title = 'Yi'
     communities['yo'] = yo
     communities['yi'] = yi
     profiles = context['profiles'] = testing.DummyModel()
     foo = profiles['foo'] = testing.DummyModel()
     foo.preferred_communities = ['Yi']
     request = testing.DummyRequest()
     karltesting.registerDummySecurityPolicy(
         'foo',
         groupids=[
         'group.community:yo:members',
         'group.community:yo:moderators',
         'group.community:yi:moderators',
         'group.community:yang:moderators'
         ]
         )
     karltesting.registerAdapter(DummyAdapterWithTitle, (Interface, Interface),
                             ICommunityInfo)
     result = self._callFUT(context, request)
     self.assertEqual(result['preferred'], ['Yi'])
     self.assertEqual(result['show_all'], True)
     self.assertEqual(len(result['my_communities']), 2)
示例#10
0
 def test_jquery_set_preferred_view(self):
     from zope.interface import Interface
     from karl.models.interfaces import ICommunityInfo
     context = testing.DummyModel()
     communities = context['communities'] = testing.DummyModel()
     yo = testing.DummyModel()
     yo.title = 'Yo'
     yi = testing.DummyModel()
     yi.title = 'Yi'
     communities['yo'] = yo
     communities['yi'] = yi
     profiles = context['profiles'] = testing.DummyModel()
     foo = profiles['foo'] = testing.DummyModel()
     foo.preferred_communities = None
     request = testing.DummyRequest()
     request.params = RequestParamsWithGetall()
     request.params['preferred[]'] = ['Yi']
     karltesting.registerDummySecurityPolicy(
         'foo',
         [
         'group.community:yo:members',
         'group.community:yo:moderators',
         'group.community:yi:moderators',
         ]
         )
     karltesting.registerAdapter(DummyAdapterWithTitle, (Interface, Interface),
                             ICommunityInfo)
     result = self._callFUT(context, request)
     self.assertEqual(result['my_communities'][0].context, yi)
示例#11
0
 def test_it(self):
     from zope.interface import Interface
     from zope.interface import directlyProvides
     from karl.models.interfaces import ICatalogSearch
     from karl.models.interfaces import ICommunity
     context = testing.DummyModel()
     directlyProvides(context, ICommunity)
     context.member_names = set('a',)
     context.moderator_names = set()
     request = testing.DummyRequest(params={'val': 'a'})
     profile_1 = karltesting.DummyProfile(__name__='a',
                                          security_state='active')
     profile_2 = karltesting.DummyProfile(__name__='b',
                                          security_state='active')
     profile_3 = karltesting.DummyProfile(__name__='c',
                                          security_state='active')
     profile_4 = karltesting.DummyProfile(__name__='d',
                                          security_state='inactive')
     def resolver(docid):
         d = {1: profile_1, 2: profile_2, 3: profile_3, 4: profile_4}
         return d.get(docid)
     def dummy_catalog_search(context):
         def search(**kw):
             return 3, [1, 2, 3], resolver
         return search
     karltesting.registerAdapter(
         dummy_catalog_search, (Interface), ICatalogSearch)
     data = self._callFUT(context, request)
     self.assertEqual(data, [{"text": "title", "id": "b"},
                             {"text": "title", "id": "c"}])
示例#12
0
    def test_creator_field(self):
        from zope.interface import Interface
        from zope.interface import implements
        from karl.models.interfaces import ICatalogSearch
        from karl.models.interfaces import IProfile

        searched_for = {}

        class Profile:
            implements(IProfile)

        profile = Profile()
        profile.__name__ = "admin"

        class ProfileSearch:
            def __init__(self, context):
                pass

            def __call__(self, **kw):
                searched_for.update(kw)
                return 1, [1], lambda x: profile

        karltesting.registerAdapter(ProfileSearch, (Interface), ICatalogSearch)
        query, terms = self._callFUT({"creator": "Ad"})
        self.assertEquals(searched_for, {"texts": "Ad", "interfaces": [IProfile]})
        from repoze.lemonade.interfaces import IContent

        self.assertEqual(query["creator"], {"query": ["admin"], "operator": "or"})
        self.assertEqual(terms, ["Ad"])
 def test_w_overflow(self):
     from zope.interface import Interface
     from karl.models.interfaces import ICommunityInfo
     context = testing.DummyModel()
     profiles = context['profiles'] = testing.DummyModel()
     profiles['foo'] = testing.DummyModel()
     yo = testing.DummyModel()
     yo.title = 'Yo'
     yi = testing.DummyModel()
     yi.title = 'Yi'
     context['yo'] = yo
     context['yi'] = yi
     request = testing.DummyRequest()
     karltesting.registerDummySecurityPolicy(
         'foo',
         groupids=[
         'group.community:yo:members',
         'group.community:yo:moderators',
         'group.community:yi:moderators',
         'group.community:yang:moderators'
         ]
         )
     karltesting.registerAdapter(DummyAdapter, (Interface, Interface),
                             ICommunityInfo)
     result = self._callFUT(context, request)
     self.assertEqual(len(result), 2)
     self.assertEqual(result[0].context, yi)
示例#14
0
    def test_creator_field(self):
        from zope.interface import Interface
        from zope.interface import implements
        from karl.models.interfaces import ICatalogSearch
        from karl.models.interfaces import IProfile

        searched_for = {}

        class Profile:
            implements(IProfile)

        profile = Profile()
        profile.__name__ = 'admin'

        class ProfileSearch:
            def __init__(self, context):
                pass

            def __call__(self, **kw):
                searched_for.update(kw)
                return 1, [1], lambda x: profile

        karltesting.registerAdapter(ProfileSearch, (Interface), ICatalogSearch)
        query, terms = self._callFUT({'creator': 'Ad'})
        self.assertEquals(searched_for, {
            'texts': 'Ad',
            'interfaces': [IProfile]
        })
        from repoze.lemonade.interfaces import IContent
        self.assertEqual(query['creator'], {
            'query': ['admin'],
            'operator': 'or'
        })
        self.assertEqual(terms, ['Ad'])
示例#15
0
 def test_community_search(self):
     context = testing.DummyModel()
     context.title = 'Citizens'
     context.catalog = {}
     context['profiles'] = profiles = testing.DummyModel()
     profiles['tweedle dee'] = testing.DummyModel(title='Tweedle Dee')
     from webob.multidict import MultiDict
     from karl.models.interfaces import ICommunity
     from zope.interface import directlyProvides
     directlyProvides(context, ICommunity)
     request = testing.DummyRequest(params=MultiDict({'body': 'yo'}))
     request.layout_manager = mock.Mock()
     from zope.interface import Interface
     from karl.models.interfaces import ICatalogSearch
     from karl.views.interfaces import IAdvancedSearchResultsDisplay
     from repoze.lemonade.testing import registerContentFactory
     registerContentFactory(DummyContent, IDummyContent)
     karltesting.registerAdapter(DummySearch, (Interface), ICatalogSearch)
     karltesting.registerAdapter(DummySearchResultsDisplay,
                                 (Interface, Interface),
                                 IAdvancedSearchResultsDisplay)
     result = self._callFUT(context, request)
     self.assertEqual(result['community'], 'Citizens')
     self.assertEqual(result['terms'], ['yo'])
     self.assertEqual(len(result['results']), 1)
示例#16
0
 def test_numresults_withkind(self):
     def dummy_factory(context, request, term):
         return DummyGroupSearchFactory(
             lambda x: testing.DummyModel(title='yo'))
     from repoze.lemonade.testing import registerListItem
     from karl.models.interfaces import IGroupSearchFactory
     registerListItem(IGroupSearchFactory, dummy_factory,
                      'foo_kind', title='Dummy')
     context = testing.DummyModel()
     request = testing.DummyRequest()
     request.params = {
         'val': 'somesearch',
         'kind': 'foo_kind',
         }
     def dummy_adapter(context, request):
         return dict(title=context.title)
     from karl.views.interfaces import ILiveSearchEntry
     karltesting.registerAdapter(dummy_adapter,
                             (testing.DummyModel, testing.DummyRequest),
                             ILiveSearchEntry)
     response = self._callFUT(context, request)
     self.assertEqual(response.status, '200 OK')
     from simplejson import loads
     results = loads(response.body)
     self.assertEqual(response.content_type, 'application/json')
     self.assertEqual(len(results), 20)
示例#17
0
    def test_contenttype(self):
        from osi.utilities.metrics import collect_contenttype_metrics
        from zope.interface import Interface
        from karl.models.interfaces import ICatalogSearch

        karltesting.registerAdapter(DummyContentTypeSearch, (Interface),
                                    ICatalogSearch)
        result = collect_contenttype_metrics(None, 1985, 1)
        self.assertEqual(
            {
                'blog': {
                    'created': 1,
                    'total': 2
                },
                'comment': {
                    'created': 1,
                    'total': 2
                },
                'event': {
                    'created': 1,
                    'total': 2
                },
                'file': {
                    'created': 1,
                    'total': 2
                },
                'folder': {
                    'created': 1,
                    'total': 2
                },
                'wiki': {
                    'created': 1,
                    'total': 2
                }
            }, result)
示例#18
0
    def test_profile(self):
        from osi.utilities.metrics import collect_profile_metrics
        from zope.interface import Interface
        from karl.models.interfaces import ICatalogSearch

        karltesting.registerAdapter(DummyProfileSearch, (Interface),
                                    ICatalogSearch)
        dummy_users = DummyUsers()
        site = karltesting.DummyModel()
        site.users = dummy_users

        result = collect_profile_metrics(site, 1985, 1)
        self.assertEqual(
            {
                'biff': {
                    'created': 1,
                    'is_staff': False,
                    'total': 2
                },
                'george': {
                    'created': 1,
                    'is_staff': True,
                    'total': 2
                }
            }, result)
示例#19
0
    def test_user_metrics(self):
        from osi.utilities.metrics import collect_user_metrics
        from zope.interface import Interface
        from karl.models.interfaces import ICatalogSearch

        karltesting.registerAdapter(DummyUserSearch, (Interface),
                                    ICatalogSearch)
        dummy_users = DummyUsers()
        site = karltesting.DummyModel()
        site.users = dummy_users

        result = collect_user_metrics(site, 1985, 1, DummyWorkflow)
        self.assertEqual(
            {
                'created': {
                    'active': 2,
                    'affiliate': 2,
                    'core_office': 0,
                    'former': 0,
                    'national_foundation': 1,
                    'staff': 1,
                    'total': 3
                },
                'total': {
                    'active': 3,
                    'affiliate': 2,
                    'core_office': 1,
                    'former': 1,
                    'national_foundation': 1,
                    'staff': 1,
                    'total': 4
                }
            }, result)
示例#20
0
 def _registerLayoutProvider(self, **kw):
     from karl.testing import registerAdapter
     from zope.interface import Interface
     from karl.views.interfaces import ILayoutProvider
     registerAdapter(DummyLayoutProvider,
                     (Interface, Interface),
                     ILayoutProvider)
示例#21
0
    def test_known_kind_no_text_term(self):
        from webob.multidict import MultiDict
        from karl.models.interfaces import IGroupSearchFactory
        from repoze.lemonade.testing import registerContentFactory
        from zope.interface import Interface
        content = DummyCommunityContent()

        def search_factory(*arg, **kw):
            return DummySearchFactory(content)

        search_factory.icon = 'foo.jpg'
        search_factory.advanced_search = True
        karltesting.registerUtility(search_factory,
                                    IGroupSearchFactory,
                                    name='People')
        context = testing.DummyModel()
        context.catalog = {}
        context['profiles'] = profiles = testing.DummyModel()
        profiles['tweedle dee'] = testing.DummyModel(title='Tweedle Dee')
        request = testing.DummyRequest(params=MultiDict({'kind': 'People'}))
        request.layout_manager = mock.Mock()
        from karl.models.interfaces import ICatalogSearch
        from karl.views.interfaces import IAdvancedSearchResultsDisplay
        registerContentFactory(DummyContent, IDummyContent)
        karltesting.registerAdapter(DummySearch, (Interface), ICatalogSearch)
        karltesting.registerAdapter(DummySearchResultsDisplay,
                                    (Interface, Interface),
                                    IAdvancedSearchResultsDisplay)
        result = self._callFUT(context, request)
        self.assertEqual(result['terms'], ['People'])
        self.assertEqual(len(result['results']), 1)
示例#22
0
    def setUp(self):
        cleanUp()

        from datetime import datetime
        site = DummyModel()
        self.site = site
        profiles = site['profiles'] = DummyModel()

        site['bigendians'] = c = DummyModel()
        c.title = 'Big Endians'
        c.modified = datetime(2009, 12, 23, 12, 31)
        c.creator = 'chucknorris'

        site['littleendians'] = c = DummyModel()
        c.title = 'Little Endians'
        c.modified = datetime(2009, 12, 26, 3, 31)
        c.creator = 'geekbill'

        p = profiles['chucknorris'] = karltesting.DummyProfile()
        p.title = 'Chuck Norris'
        p = profiles['geekbill'] = karltesting.DummyProfile()
        p.title = 'Bill Haverchuck'

        from karl.models.interfaces import ICatalogSearch
        from zope.interface import Interface
        search = DummyCatalogSearch()
        def dummy_search_factory(context):
            return search
        karltesting.registerAdapter(dummy_search_factory, Interface,
                                    ICatalogSearch)
        self.search = search

        from karl.views.admin import delete_content_view
        self.fut = delete_content_view
示例#23
0
 def test_no_creator(self):
     from webob.multidict import MultiDict
     context = testing.DummyModel()
     context.catalog = {}
     context['profiles'] = testing.DummyModel()
     request = testing.DummyRequest(params=MultiDict({'body':'yo'}))
     from zope.interface import Interface
     from karl.models.interfaces import ICatalogSearch
     from karl.views.interfaces import IAdvancedSearchResultsDisplay
     from repoze.lemonade.testing import registerContentFactory
     registerContentFactory(DummyContent, IDummyContent)
     class LocalDummyContent(testing.DummyModel):
         implements(IDummyContent)
         import datetime
         title = 'Dummy Content'
         modified = datetime.datetime(2010, 5, 12, 2, 42)
     class LocalDummySearch(DummySearch):
         content = LocalDummyContent()
     karltesting.registerAdapter(LocalDummySearch, (Interface),
                             ICatalogSearch)
     karltesting.registerAdapter(DummySearchResultsDisplay,
                             (Interface, Interface),
                             IAdvancedSearchResultsDisplay)
     result = self._callFUT(context, request)
     self.assertEqual(result['terms'], ['yo'])
     self.assertEqual(len(result['results']), 1)
示例#24
0
    def test_handle_submit_success(self):
        self._register()
        from zope.interface import directlyProvides
        from karl.models.interfaces import ISite
        from karl.models.interfaces import ICommunity
        from repoze.lemonade.interfaces import IContentFactory
        context = testing.DummyModel()
        directlyProvides(context, ISite)
        tags = context.tags = testing.DummyModel()
        _tagged = []
        def _update(item, user, tags):
            _tagged.append((item, user, tags))
        tags.update = _update
        karltesting.registerDummySecurityPolicy('userid')
        workflow = self._registerDummyWorkflow()
        karltesting.registerAdapter(lambda *arg: DummyCommunity,
                                    (ICommunity,),
                                    IContentFactory)
        dummy_tool_factory = DummyToolFactory()
        self._registerAddables([{'name':'blog', 'title':'blog',
                                 'component':dummy_tool_factory}])
        context.users = karltesting.DummyUsers({})
        context.catalog = karltesting.DummyCatalog({1:'/foo'})
        request = testing.DummyRequest()
        controller = self._makeOne(context, request)
        converted = {'title':'Thetitle yo',
                     'description':'thedescription',
                     'text':'thetext',
                     'tools': ['blog'],
                     'security_state': 'private',
                     'tags': ['foo'],
                     'default_tool': 'blog',
                     }
        result = controller.handle_submit(converted)
        rl = 'http://example.com/thetitle-yo/members/add_existing.html'
        self.failUnless(result.location.startswith(rl))
        community = context['thetitle-yo']
        self.assertEqual(community.title, 'Thetitle yo')
        self.assertEqual(community.description, 'thedescription')
        self.assertEqual(community.text, 'thetext')
        self.assertEqual(community.default_tool, 'blog')
        self.assertEqual(community.creator, 'userid')
        self.assertEqual(community.modified_by, 'userid')
        self.assertEqual(
            context.users.added_groups,
            [('userid', 'moderators'), ('userid', 'members') ]
        )
        self.assertEqual(dummy_tool_factory.added, True)
        self.assertEqual(len(_tagged), 1)
        self.assertEqual(_tagged[0][0], None)
        self.assertEqual(_tagged[0][1], 'userid')
        self.assertEqual(_tagged[0][2], ['foo'])
        self.assertEqual(workflow.transitioned[0]['to_state'], 'private')

        # try again w/ an invalid default_tool
        converted['title'] = 'Another title yo'
        converted['default_tool'] = 'wiki'
        result = controller.handle_submit(converted)
        community = context['another-title-yo']
        self.failUnless(community.default_tool is None)
示例#25
0
    def test_with_parameter_withresults(self):
        from repoze.lemonade.testing import registerListItem
        from karl.models.interfaces import IGroupSearchFactory
        from karl.views.interfaces import ILiveSearchEntry
        def dummy_factory1(context, request, term):
            pass
        def dummy_factory2(context, request, term):
            def results():
                return 1, [1], lambda x: testing.DummyModel(title='yo')
            return results
        dummy_factory1.livesearch_all = dummy_factory2.livesearch_all = True

        registerListItem(IGroupSearchFactory, dummy_factory1, 'dummy1',
                         title='Dummy1', sort_key=1)
        registerListItem(IGroupSearchFactory, dummy_factory2, 'dummy2',
                         title='Dummy2', sort_key=2)
        context = testing.DummyModel()
        request = testing.DummyRequest()
        request.params = {
            'val': 'somesearch',
            }
        def dummy_adapter(context, request):
            return dict(title=context.title)
        karltesting.registerAdapter(dummy_adapter,
                                (testing.DummyModel, testing.DummyRequest),
                                ILiveSearchEntry)
        results = self._callFUT(context, request)
        self.assertEqual(len(results), 1)
        self.assertEqual(results[0]['title'], 'yo')
示例#26
0
    def test_with_parameter_withresults(self):
        def dummy_factory1(context, request, term):
            pass
        def dummy_factory2(context, request, term):
            def results():
                return 1, [1], lambda x: testing.DummyModel(title='yo')
            return results
        dummy_factory1.livesearch = dummy_factory2.livesearch = True

        from repoze.lemonade.testing import registerListItem
        from karl.models.interfaces import IGroupSearchFactory
        registerListItem(IGroupSearchFactory, dummy_factory1, 'dummy1',
                         title='Dummy1', sort_key=1)
        registerListItem(IGroupSearchFactory, dummy_factory2, 'dummy2',
                         title='Dummy2', sort_key=2)
        context = testing.DummyModel()
        request = testing.DummyRequest()
        request.params = {
            'val': 'somesearch',
            }
        def dummy_adapter(context, request):
            return dict(title=context.title)
        from karl.views.interfaces import ILiveSearchEntry
        karltesting.registerAdapter(dummy_adapter,
                                (testing.DummyModel, testing.DummyRequest),
                                ILiveSearchEntry)
        response = self._callFUT(context, request)
        self.assertEqual(response.status, '200 OK')
        from simplejson import loads
        results = loads(response.body)
        self.assertEqual(len(results), 1)
        self.assertEqual(results[0]['title'], 'yo')
        self.assertEqual(response.content_type, 'application/json')
示例#27
0
    def test_creator_field(self):
        from zope.interface import Interface
        from zope.interface import implements
        from karl.models.interfaces import ICatalogSearch
        from karl.models.interfaces import IProfile

        searched_for = {}

        class Profile:
            implements(IProfile)
        profile = Profile()
        profile.__name__ = 'admin'

        class ProfileSearch:
            def __init__(self, context):
                pass
            def __call__(self, **kw):
                searched_for.update(kw)
                return 1, [1], lambda x: profile

        karltesting.registerAdapter(ProfileSearch, (Interface),
                                ICatalogSearch)
        query, terms = self._callFUT({'creator': 'Ad'})
        self.assertEquals(searched_for,
            {'texts': 'Ad', 'interfaces': [IProfile]})
        self.assertEqual(query['creator'],
                         {'query': ['admin'], 'operator': 'or'})
        self.assertEqual(terms, ['Ad'])
示例#28
0
 def test_known_since(self):
     from webob.multidict import MultiDict
     context = testing.DummyModel()
     context.catalog = {}
     context['profiles'] = profiles = testing.DummyModel()
     profiles['tweedle dee'] = testing.DummyModel(title='Tweedle Dee')
     request = testing.DummyRequest(params=MultiDict({
         'body': 'yo',
         'since': 'week'
     }))
     request.layout_manager = mock.Mock()
     from zope.interface import Interface
     from karl.content.interfaces import IBlogEntry
     from karl.models.interfaces import ICatalogSearch
     from karl.views.interfaces import IAdvancedSearchResultsDisplay
     from repoze.lemonade.testing import registerContentFactory
     registerContentFactory(DummyContent, IDummyContent)
     registerContentFactory(DummyContent, IBlogEntry)
     karltesting.registerAdapter(DummySearch, (Interface), ICatalogSearch)
     karltesting.registerAdapter(DummySearchResultsDisplay,
                                 (Interface, Interface),
                                 IAdvancedSearchResultsDisplay)
     result = self._callFUT(context, request)
     self.assertEqual(result['terms'], ['yo', 'Past week'])
     self.assertEqual(len(result['results']), 1)
示例#29
0
    def test_numresults_withkind(self):
        def dummy_factory(context, request, term):
            return DummyGroupSearchFactory(
                lambda x: testing.DummyModel(title='yo'))

        from repoze.lemonade.testing import registerListItem
        from karl.models.interfaces import IGroupSearchFactory
        registerListItem(IGroupSearchFactory,
                         dummy_factory,
                         'foo_kind',
                         title='Dummy')
        context = testing.DummyModel()
        request = testing.DummyRequest()
        request.params = {
            'val': 'somesearch',
            'kind': 'foo_kind',
        }

        def dummy_adapter(context, request):
            return dict(title=context.title)

        from karl.views.interfaces import ILiveSearchEntry
        karltesting.registerAdapter(dummy_adapter,
                                    (testing.DummyModel, testing.DummyRequest),
                                    ILiveSearchEntry)
        response = self._callFUT(context, request)
        self.assertEqual(response.status, '200 OK')
        from simplejson import loads
        results = loads(response.body)
        self.assertEqual(response.content_type, 'application/json')
        self.assertEqual(len(results), 20)
示例#30
0
    def test_handle_submit_success(self):
        self._register()
        from zope.interface import directlyProvides
        from karl.models.interfaces import ISite
        from karl.models.interfaces import ICommunity
        from repoze.lemonade.interfaces import IContentFactory
        context = testing.DummyModel()
        directlyProvides(context, ISite)
        tags = context.tags = testing.DummyModel()
        _tagged = []
        def _update(item, user, tags):
            _tagged.append((item, user, tags))
        tags.update = _update
        karltesting.registerDummySecurityPolicy('userid')
        workflow = self._registerDummyWorkflow()
        karltesting.registerAdapter(lambda *arg: DummyCommunity,
                                    (ICommunity,),
                                    IContentFactory)
        dummy_tool_factory = DummyToolFactory()
        self._registerAddables([{'name':'blog', 'title':'blog',
                                 'component':dummy_tool_factory}])
        context.users = karltesting.DummyUsers({})
        context.catalog = karltesting.DummyCatalog({1:'/foo'})
        request = testing.DummyRequest()
        controller = self._makeOne(context, request)
        converted = {'title':'Thetitle yo',
                     'description':'thedescription',
                     'text':'thetext',
                     'tools': ['blog'],
                     'security_state': 'private',
                     'tags': ['foo'],
                     'default_tool': 'blog',
                     }
        result = controller.handle_submit(converted)
        rl = 'http://example.com/thetitle-yo/members/add_existing.html'
        self.failUnless(result.location.startswith(rl))
        community = context['thetitle-yo']
        self.assertEqual(community.title, 'Thetitle yo')
        self.assertEqual(community.description, 'thedescription')
        self.assertEqual(community.text, 'thetext')
        self.assertEqual(community.default_tool, 'blog')
        self.assertEqual(community.creator, 'userid')
        self.assertEqual(community.modified_by, 'userid')
        self.assertEqual(
            context.users.added_groups,
            [('userid', 'moderators'), ('userid', 'members') ]
        )
        self.assertEqual(dummy_tool_factory.added, True)
        self.assertEqual(len(_tagged), 1)
        self.assertEqual(_tagged[0][0], None)
        self.assertEqual(_tagged[0][1], 'userid')
        self.assertEqual(_tagged[0][2], ['foo'])
        self.assertEqual(workflow.transitioned[0]['to_state'], 'private')

        # try again w/ an invalid default_tool
        converted['title'] = 'Another title yo'
        converted['default_tool'] = 'wiki'
        result = controller.handle_submit(converted)
        community = context['another-title-yo']
        self.failUnless(community.default_tool is None)
 def test_jquery_set_preferred_view(self):
     from zope.interface import Interface
     from karl.models.interfaces import ICommunityInfo
     context = testing.DummyModel()
     communities = context['communities'] = testing.DummyModel()
     yo = testing.DummyModel()
     yo.title = 'Yo'
     yi = testing.DummyModel()
     yi.title = 'Yi'
     communities['yo'] = yo
     communities['yi'] = yi
     profiles = context['profiles'] = testing.DummyModel()
     foo = profiles['foo'] = testing.DummyModel()
     foo.preferred_communities = None
     request = testing.DummyRequest()
     request.params = RequestParamsWithGetall()
     request.params['preferred[]'] = ['Yi']
     karltesting.registerDummySecurityPolicy(
         'foo',
         [
         'group.community:yo:members',
         'group.community:yo:moderators',
         'group.community:yi:moderators',
         ]
         )
     karltesting.registerAdapter(DummyAdapterWithTitle, (Interface, Interface),
                             ICommunityInfo)
     result = self._callFUT(context, request)
     self.assertEqual(result['my_communities'][0].context, yi)
示例#32
0
    def test_no_creator(self):
        from webob.multidict import MultiDict
        context = testing.DummyModel()
        context.catalog = {}
        context['profiles'] = profiles = testing.DummyModel()
        request = testing.DummyRequest(params=MultiDict({'body': 'yo'}))
        request.layout_manager = mock.Mock()
        from zope.interface import Interface
        from karl.models.interfaces import ICatalogSearch
        from karl.views.interfaces import IAdvancedSearchResultsDisplay
        from repoze.lemonade.testing import registerContentFactory
        registerContentFactory(DummyContent, IDummyContent)

        class LocalDummyContent(testing.DummyModel):
            implements(IDummyContent)
            import datetime
            title = 'Dummy Content'
            modified = datetime.datetime(2010, 5, 12, 2, 42)

        class LocalDummySearch(DummySearch):
            content = LocalDummyContent()

        karltesting.registerAdapter(LocalDummySearch, (Interface),
                                    ICatalogSearch)
        karltesting.registerAdapter(DummySearchResultsDisplay,
                                    (Interface, Interface),
                                    IAdvancedSearchResultsDisplay)
        result = self._callFUT(context, request)
        self.assertEqual(result['terms'], ['yo'])
        self.assertEqual(len(result['results']), 1)
示例#33
0
    def test_with_parameter_withresults(self):
        from repoze.lemonade.testing import registerListItem
        from karl.models.interfaces import IGroupSearchFactory
        from karl.views.interfaces import ILiveSearchEntry
        def dummy_factory1(context, request, term):
            pass
        def dummy_factory2(context, request, term):
            def results():
                return 1, [1], lambda x: testing.DummyModel(title='yo')
            return results
        dummy_factory1.livesearch = dummy_factory2.livesearch = True
        dummy_factory1.livesearch_all = dummy_factory2.livesearch_all = True

        registerListItem(IGroupSearchFactory, dummy_factory1, 'dummy1',
                         title='Dummy1', sort_key=1)
        registerListItem(IGroupSearchFactory, dummy_factory2, 'dummy2',
                         title='Dummy2', sort_key=2)
        context = testing.DummyModel()
        request = testing.DummyRequest()
        request.params = {
            'val': 'somesearch',
            }
        def dummy_adapter(context, request):
            return dict(title=context.title)
        karltesting.registerAdapter(dummy_adapter,
                                (testing.DummyModel, testing.DummyRequest),
                                ILiveSearchEntry)
        results = self._callFUT(context, request)
        self.assertEqual(len(results), 1)
        self.assertEqual(results[0]['title'], 'yo')
示例#34
0
 def test_known_kind_no_text_term(self):
     from webob.multidict import MultiDict
     from karl.models.interfaces import IGroupSearchFactory
     from repoze.lemonade.testing import registerContentFactory
     from zope.interface import Interface
     content = DummyCommunityContent()
     def search_factory(*arg, **kw):
         return DummySearchFactory(content)
     search_factory.icon = 'foo.jpg'
     search_factory.advanced_search = True
     karltesting.registerUtility(
         search_factory, IGroupSearchFactory, name='People')
     context = testing.DummyModel()
     context.catalog = {}
     context['profiles'] = profiles = testing.DummyModel()
     profiles['tweedle dee'] = testing.DummyModel(title='Tweedle Dee')
     request = testing.DummyRequest(
         params=MultiDict({'kind':'People'}))
     from karl.models.interfaces import ICatalogSearch
     from karl.views.interfaces import IAdvancedSearchResultsDisplay
     registerContentFactory(DummyContent, IDummyContent)
     karltesting.registerAdapter(DummySearch, (Interface),
                             ICatalogSearch)
     karltesting.registerAdapter(DummySearchResultsDisplay,
                             (Interface, Interface),
                             IAdvancedSearchResultsDisplay)
     result = self._callFUT(context, request)
     self.assertEqual(result['terms'], ['People'])
     self.assertEqual(len(result['results']), 1)
 def test_set_preferred_communities(self):
     from zope.interface import Interface
     from karl.models.interfaces import ICommunityInfo
     from karl.views.communities import get_preferred_communities
     context = testing.DummyModel()
     yo = testing.DummyModel()
     yo.title = 'Yo'
     yi = testing.DummyModel()
     yi.title = 'Yi'
     context['yo'] = yo
     context['yi'] = yi
     profiles = context['profiles'] = testing.DummyModel()
     foo = profiles['foo'] = testing.DummyModel()
     foo.preferred_communities = None
     request = testing.DummyRequest()
     karltesting.registerDummySecurityPolicy(
         'foo',
         groupids=[
         'group.community:yo:members',
         'group.community:yo:moderators',
         'group.community:yi:moderators',
         'group.community:yang:moderators'
         ]
         )
     karltesting.registerAdapter(DummyAdapter, (Interface, Interface),
                             ICommunityInfo)
     communities = ['yi']
     self._callFUT(context, request, communities)
     result = get_preferred_communities(context, request)
     self.assertEqual(len(result), 1)
     self.assertEqual(result[0], 'yi')
 def test_jquery_list_my_communities_view(self):
     from zope.interface import Interface
     from karl.models.interfaces import ICommunityInfo
     context = testing.DummyModel()
     communities = context['communities'] = testing.DummyModel()
     yo = testing.DummyModel()
     yo.title = 'Yo'
     yi = testing.DummyModel()
     yi.title = 'Yi'
     communities['yo'] = yo
     communities['yi'] = yi
     profiles = context['profiles'] = testing.DummyModel()
     foo = profiles['foo'] = testing.DummyModel()
     foo.preferred_communities = ['Yi']
     request = testing.DummyRequest()
     karltesting.registerDummySecurityPolicy(
         'foo',
         groupids=[
         'group.community:yo:members',
         'group.community:yo:moderators',
         'group.community:yi:moderators',
         'group.community:yang:moderators'
         ]
         )
     karltesting.registerAdapter(DummyAdapterWithTitle, (Interface, Interface),
                             ICommunityInfo)
     result = self._callFUT(context, request)
     self.assertEqual(result['preferred'], ['Yi'])
     self.assertEqual(result['show_all'], True)
     self.assertEqual(len(result['my_communities']), 2)
示例#37
0
 def test_community_search(self):
     context = testing.DummyModel()
     context.title = 'Citizens'
     context.catalog = {}
     context['profiles'] = profiles = testing.DummyModel()
     profiles['tweedle dee'] = testing.DummyModel(title='Tweedle Dee')
     from webob.multidict import MultiDict
     from karl.models.interfaces import ICommunity
     from zope.interface import directlyProvides
     directlyProvides(context, ICommunity)
     request = testing.DummyRequest(params=MultiDict({'body':'yo'}))
     from zope.interface import Interface
     from karl.models.interfaces import ICatalogSearch
     from karl.views.interfaces import IAdvancedSearchResultsDisplay
     from repoze.lemonade.testing import registerContentFactory
     registerContentFactory(DummyContent, IDummyContent)
     karltesting.registerAdapter(DummySearch, (Interface),
                             ICatalogSearch)
     karltesting.registerAdapter(DummySearchResultsDisplay,
                             (Interface, Interface),
                             IAdvancedSearchResultsDisplay)
     result = self._callFUT(context, request)
     self.assertEqual(result['community'], 'Citizens')
     self.assertEqual(result['terms'], ['yo'])
     self.assertEqual(len(result['results']), 1)
示例#38
0
 def _register(self):
     from zope.interface import Interface
     from karl.models.interfaces import ICommunityInfo
     from karl.models.interfaces import ICatalogSearch
     from karl.models.adapters import CatalogSearch
     karltesting.registerAdapter(DummyAdapter, (Interface, Interface),
                                 ICommunityInfo)
     karltesting.registerAdapter(CatalogSearch, (Interface), ICatalogSearch)
示例#39
0
 def _register(self):
     from zope.interface import Interface
     from karl.models.interfaces import ICommunityInfo
     from karl.models.interfaces import ICatalogSearch
     from karl.models.adapters import CatalogSearch
     karltesting.registerAdapter(DummyAdapter, (Interface, Interface),
                                 ICommunityInfo)
     karltesting.registerAdapter(CatalogSearch, (Interface), ICatalogSearch)
示例#40
0
 def test_without_kind_without_terms(self):
     from webob.multidict import MultiDict
     from karl.models.interfaces import ICatalogSearch
     karltesting.registerAdapter(DummySearch, (Interface), ICatalogSearch)
     request = testing.DummyRequest(params=MultiDict({}))
     context = testing.DummyModel()
     result = self._callFUT(context, request)
     self.assertEqual(result, (None, []))
示例#41
0
 def test_no_parameter(self):
     context = testing.DummyModel()
     request = testing.DummyRequest()
     from zope.interface import Interface
     from karl.models.interfaces import ICatalogSearch
     karltesting.registerAdapter(DummySearch, (Interface), ICatalogSearch)
     response = self._callFUT(context, request)
     self.assertEqual(response.status, '400 Bad Request')
示例#42
0
    def test_handle_submit_success(self):
        self._register()
        from zope.interface import directlyProvides
        from karl.models.interfaces import ISite
        from karl.models.interfaces import ICommunity
        from repoze.lemonade.interfaces import IContentFactory

        context = testing.DummyModel()
        directlyProvides(context, ISite)
        tags = context.tags = testing.DummyModel()
        _tagged = []

        def _update(item, user, tags):
            _tagged.append((item, user, tags))

        tags.update = _update
        karltesting.registerDummySecurityPolicy("userid")
        workflow = self._registerDummyWorkflow()
        karltesting.registerAdapter(lambda *arg: DummyCommunity, (ICommunity,), IContentFactory)
        dummy_tool_factory = DummyToolFactory()
        self._registerAddables([{"name": "blog", "title": "blog", "component": dummy_tool_factory}])
        context.users = karltesting.DummyUsers({})
        context.catalog = karltesting.DummyCatalog({1: "/foo"})
        request = testing.DummyRequest()
        controller = self._makeOne(context, request)
        converted = {
            "title": "Thetitle yo",
            "description": "thedescription",
            "text": "thetext",
            "tools": ["blog"],
            "security_state": "private",
            "tags": ["foo"],
            "default_tool": "blog",
        }
        result = controller.handle_submit(converted)
        rl = "http://example.com/thetitle-yo/members/add_existing.html"
        self.failUnless(result.location.startswith(rl))
        community = context["thetitle-yo"]
        self.assertEqual(community.title, "Thetitle yo")
        self.assertEqual(community.description, "thedescription")
        self.assertEqual(community.text, "thetext")
        self.assertEqual(community.default_tool, "blog")
        self.assertEqual(community.creator, "userid")
        self.assertEqual(community.modified_by, "userid")
        self.assertEqual(context.users.added_groups, [("userid", "moderators"), ("userid", "members")])
        self.assertEqual(dummy_tool_factory.added, True)
        self.assertEqual(len(_tagged), 1)
        self.assertEqual(_tagged[0][0], None)
        self.assertEqual(_tagged[0][1], "userid")
        self.assertEqual(_tagged[0][2], ["foo"])
        self.assertEqual(workflow.transitioned[0]["to_state"], "private")

        # try again w/ an invalid default_tool
        converted["title"] = "Another title yo"
        converted["default_tool"] = "wiki"
        result = controller.handle_submit(converted)
        community = context["another-title-yo"]
        self.failUnless(community.default_tool is None)
示例#43
0
 def test_it(self):
     from karl.models.interfaces import ITagQuery
     from zope.interface import Interface
     karltesting.registerAdapter(DummyTagQuery, (Interface, Interface),
                                 ITagQuery)
     request = testing.DummyRequest(params={'val':'ignored'})
     context = testing.DummyModel()
     rows = self._callFUT(context, request)
     self.assertEqual(rows, [{"text": "foo"}, {"text": "bar"}])
示例#44
0
文件: test_api.py 项目: araymund/karl
 def test_tag_users(self):
     from karl.models.interfaces import ITagQuery
     from zope.interface import Interface
     karltesting.registerAdapter(DummyTagQuery, (Interface, Interface),
                             ITagQuery)
     context = testing.DummyModel()
     request = testing.DummyRequest()
     api = self._makeOne(context, request)
     self.assertEqual(api.tag_users, ['a'])
示例#45
0
文件: test_tags.py 项目: lslaz1/karl
 def test_it(self):
     from karl.models.interfaces import ITagQuery
     from zope.interface import Interface
     karltesting.registerAdapter(DummyTagQuery, (Interface, Interface),
                                 ITagQuery)
     request = testing.DummyRequest(params={'val': 'ignored'})
     context = testing.DummyModel()
     rows = self._callFUT(context, request)
     self.assertEqual(rows, [{"text": "foo"}, {"text": "bar"}])
示例#46
0
 def test_tag_users(self):
     from karl.models.interfaces import ITagQuery
     from zope.interface import Interface
     karltesting.registerAdapter(DummyTagQuery, (Interface, Interface),
                                 ITagQuery)
     context = testing.DummyModel()
     request = testing.DummyRequest()
     api = self._makeOne(context, request)
     self.assertEqual(api.tag_users, ['a'])
示例#47
0
 def test_no_searchterm(self):
     from webob.multidict import MultiDict
     context = testing.DummyModel()
     request = testing.DummyRequest(params=MultiDict())
     from karl.models.interfaces import ICatalogSearch
     karltesting.registerAdapter(DummyEmptySearch, (Interface),
                             ICatalogSearch)
     result = self._callFUT(context, request)
     self.assertEqual(result['terms'], [])
示例#48
0
 def _register(self):
     from zope.interface import Interface
     from karl.models.interfaces import ITagQuery
     from pyramid_formish import IFormishRenderer
     karltesting.registerAdapter(DummyTagQuery, (Interface, Interface),
                                 ITagQuery)
     def renderer(template, args):
         return ''
     karltesting.registerUtility(renderer, IFormishRenderer)
示例#49
0
 def _registerAddables(self, addables):
     from karl.views.interfaces import IToolAddables
     from zope.interface import Interface
     def tool_adapter(context, request):
         def adapter():
             return addables
         return adapter
     karltesting.registerAdapter(tool_adapter, (Interface, Interface),
                                 IToolAddables)
示例#50
0
 def test_without_kind_without_terms(self):
     from webob.multidict import MultiDict
     from karl.models.interfaces import ICatalogSearch
     karltesting.registerAdapter(DummySearch, (Interface),
                             ICatalogSearch)
     request = testing.DummyRequest(params=MultiDict({}))
     context = testing.DummyModel()
     result = self._callFUT(context, request)
     self.assertEqual(result, (None, []))
示例#51
0
 def test_no_parameter(self):
     from zope.interface import Interface
     from karl.models.interfaces import ICatalogSearch
     context = testing.DummyModel()
     request = testing.DummyRequest()
     karltesting.registerAdapter(DummySearch, (Interface),
                             ICatalogSearch)
     response = self._callFUT(context, request)
     self.assertEqual(response.status, '400 Bad Request')
示例#52
0
 def test_no_searchterm(self):
     from webob.multidict import MultiDict
     context = testing.DummyModel()
     request = testing.DummyRequest(params=MultiDict())
     from karl.models.interfaces import ICatalogSearch
     karltesting.registerAdapter(DummyEmptySearch, (Interface),
                             ICatalogSearch)
     result = self._callFUT(context, request)
     self.assertEqual(result['terms'], [])
示例#53
0
 def _registerAddables(self, addables):
     from karl.views.interfaces import IToolAddables
     from zope.interface import Interface
     def tool_adapter(context, request):
         def adapter():
             return addables
         return adapter
     karltesting.registerAdapter(tool_adapter, (Interface, Interface),
                                 IToolAddables)
示例#54
0
 def _register(self):
     from zope.interface import Interface
     from karl.models.interfaces import ISQLCatalogSearch
     from karl.models.interfaces import IGridEntryInfo
     from karl.models.adapters import CatalogSearch
     karltesting.registerAdapter(DummyGridEntryAdapter,
                                 (Interface, Interface), IGridEntryInfo)
     karltesting.registerAdapter(CatalogSearch, (Interface),
                                 ISQLCatalogSearch)
示例#55
0
 def _register(self):
     from zope.interface import Interface
     from karl.models.interfaces import ITagQuery
     from pyramid_formish import IFormishRenderer
     karltesting.registerAdapter(DummyTagQuery, (Interface, Interface),
                                 ITagQuery)
     def renderer(template, args):
         return ''
     karltesting.registerUtility(renderer, IFormishRenderer)
示例#56
0
    def test_calendar_search_layout(self):
        root = testing.DummyModel()
        root.catalog = {}
        root['profiles'] = profiles = testing.DummyModel()
        profiles['tweedle dee'] = testing.DummyModel(title='Tweedle Dee')
        from webob.multidict import MultiDict
        from karl.models.interfaces import ICommunity
        from zope.interface import directlyProvides

        root['communities'] = testing.DummyModel()
        community = root['communities']['default'] = testing.DummyModel(
            title='citizens')
        office = root['offices'] = testing.DummyModel(title='all rights')
        directlyProvides(community, ICommunity)
        directlyProvides(office, ICommunity)

        request = testing.DummyRequest(params=MultiDict({'body': 'yo'}))
        request.layout_manager = mock.Mock()
        from zope.interface import Interface
        from karl.models.interfaces import ICatalogSearch
        from karl.views.interfaces import IAdvancedSearchResultsDisplay
        from repoze.lemonade.testing import registerContentFactory
        registerContentFactory(DummyContent, IDummyContent)
        karltesting.registerAdapter(DummySearch, (Interface), ICatalogSearch)
        karltesting.registerAdapter(DummySearchResultsDisplay,
                                    (Interface, Interface),
                                    IAdvancedSearchResultsDisplay)

        import karl.views.api
        save_community = karl.views.api.TemplateAPI.community_layout
        save_generic = karl.views.api.TemplateAPI.generic_layout
        try:
            karl.views.api.TemplateAPI.community_layout = 'COMMUNITY'
            karl.views.api.TemplateAPI.generic_layout = 'GENERIC'

            # not on community
            result = self._callFUT(root, request)
            self.assertEqual(result['community'], None)
            self.assertEqual(result['old_layout'], 'GENERIC')
            self.assertEqual(result['show_search_knobs'], False)

            # normal community
            result = self._callFUT(community, request)
            self.assertEqual(result['community'], 'citizens')
            self.assertEqual(result['old_layout'], 'COMMUNITY')
            self.assertEqual(result['show_search_knobs'], False)

            # office (generic layout, ie, wide here)
            result = self._callFUT(office, request)
            self.assertEqual(result['community'], 'all rights')
            self.assertEqual(result['old_layout'], 'GENERIC')
            self.assertEqual(result['show_search_knobs'], False)

        finally:
            karl.views.api.TemplateAPI.community_layout = save_community
            karl.views.api.TemplateAPI.generic_layout = save_generic
示例#57
0
 def _registerContextURL(self):
     # Technically this turns it into a kind of integration test, since
     # we end up also testing the OfflineContextURL, but in this case
     # I think testing this minor integration point is not a performance
     # hit and is somewhat useful.
     from karl.adapters.url import OfflineContextURL
     from pyramid.interfaces import IContextURL
     from karl.testing import registerAdapter
     from zope.interface import Interface
     registerAdapter(OfflineContextURL, (Interface, Interface), IContextURL)
示例#58
0
 def test_without_kind_with_path(self):
     from webob.multidict import MultiDict
     from karl.models.interfaces import ICatalogSearch
     karltesting.registerAdapter(DummySearch, (Interface), ICatalogSearch)
     request = testing.DummyRequest(params=MultiDict({'body': 'yo'}))
     root = testing.DummyModel()
     context = testing.DummyModel()
     root['foo'] = context
     result = self._callFUT(context, request)
     self.assertEqual(result[0]['total'], 1)
示例#59
0
 def test_bad_kind(self):
     from webob.multidict import MultiDict
     context = testing.DummyModel()
     request = testing.DummyRequest(
         params=MultiDict({'kind':'unknown', 'body':'yo'}))
     from zope.interface import Interface
     from karl.models.interfaces import ICatalogSearch
     from pyramid.httpexceptions import HTTPBadRequest
     karltesting.registerAdapter(DummyEmptySearch, (Interface),
                             ICatalogSearch)
     self.assertRaises(HTTPBadRequest, self._callFUT, context, request)