Skip to content

Commit

Permalink
Merge branch 'related-list-tests'
Browse files Browse the repository at this point in the history
  • Loading branch information
Sean Hammond committed Feb 24, 2014
2 parents 7f3717b + bbc3c05 commit 23022ab
Show file tree
Hide file tree
Showing 2 changed files with 88 additions and 0 deletions.
30 changes: 30 additions & 0 deletions ckan/new_tests/factories.py
Expand Up @@ -217,6 +217,36 @@ def _create(cls, target_class, *args, **kwargs):
return group_dict


class Related(factory.Factory):
'''A factory class for creating related items.'''

FACTORY_FOR = ckan.model.Related

type = 'idea'
description = 'Look, a description!'
url = 'http://example.com'

title = factory.Sequence(lambda n: 'test title {n}'.format(n=n))

@classmethod
def _build(cls, target_class, *args, **kwargs):
raise NotImplementedError(".build() isn't supported in CKAN")

@classmethod
def _create(cls, target_class, *args, **kwargs):
if args:
assert False, "Positional args aren't supported, use keyword args."

assert 'user' in kwargs, ('The Related factory requires an extra '
'user=user_dict keyword argument (the user '
'who will create the group)')
user_dict = kwargs.pop('user')
context = {'user': user_dict['name']}
related_dict = helpers.call_action('related_create', context=context,
**kwargs)
return related_dict


class MockUser(factory.Factory):
'''A factory class for creating mock CKAN users using the mock library.'''

Expand Down
58 changes: 58 additions & 0 deletions ckan/new_tests/logic/action/test_get.py
Expand Up @@ -188,6 +188,64 @@ def test_user_get(self):
assert 'password' not in got_user
assert 'reset_key' not in got_user

def test_related_list_with_no_params(self):
'''
Test related_list with no parameters and default sort
'''
user = factories.User()
related1 = factories.Related(user=user, featured=True)
related2 = factories.Related(user=user, type='application')

related_list = helpers.call_action('related_list')
assert ([related1, related2] == related_list)

def test_related_list_type_filter(self):
'''
Test related_list with type filter
'''
user = factories.User()
related1 = factories.Related(user=user, featured=True)
related2 = factories.Related(user=user, type='application')

related_list = helpers.call_action('related_list',
type_filter='application')
assert ([related2] == related_list)

def test_related_list_sorted(self):
'''
Test related_list with sort parameter
'''
user = factories.User()
related1 = factories.Related(user=user, featured=True)
related2 = factories.Related(user=user, type='application')

related_list = helpers.call_action('related_list', sort='created_desc')
assert ([related2, related1] == related_list)

def test_related_list_invalid_sort_parameter(self):
'''
Test related_list with invalid value for sort parameter
'''
user = factories.User()
related1 = factories.Related(user=user, featured=True)
related2 = factories.Related(user=user, type='application')

related_list = helpers.call_action('related_list', sort='invalid')
assert ([related1, related2] == related_list)

def test_related_list_featured(self):
'''
Test related_list with no featured filter
'''
user = factories.User()
related1 = factories.Related(user=user, featured=True)
related2 = factories.Related(user=user, type='application')

related_list = helpers.call_action('related_list', featured=True)
assert ([related1] == related_list)
# TODO: Create related items associated with a dataset and test
# related_list with them


class TestBadLimitQueryParameters(object):
'''test class for #1258 non-int query parameters cause 500 errors
Expand Down

0 comments on commit 23022ab

Please sign in to comment.