Merge branch 'chrisjrn/fix_71'

Fixes #71
This commit is contained in:
Christopher Neugebauer 2016-09-15 15:39:07 +10:00
commit 734592207e
2 changed files with 40 additions and 34 deletions

View file

@ -334,6 +334,4 @@ class GroupMemberConditionController(IsMetByFilter, ConditionController):
''' Returns all of the items from conditions which are enabled by a ''' Returns all of the items from conditions which are enabled by a
user being member of a Django Auth Group. ''' user being member of a Django Auth Group. '''
return conditions.filter( return conditions.filter(group__in=user.groups.all())
group=user.groups.all(),
)

View file

@ -19,21 +19,24 @@ class GroupMemberTestCase(RegistrationCartTestCase):
@classmethod @classmethod
def _create_group_and_flag(cls): def _create_group_and_flag(cls):
''' Creates cls.GROUP, and restricts cls.PROD_1 only to users who are ''' Creates cls.GROUP_1, and restricts cls.PROD_1 only to users who are
members of the group. ''' members of the group. Likewise GROUP_2 and PROD_2 '''
group = Group.objects.create( groups = []
name="TEST GROUP", products = [cls.PROD_1, cls.PROD_2]
) for i, product in enumerate(products):
group = Group.objects.create(name="TEST GROUP" + str(i))
flag = conditions.GroupMemberFlag.objects.create(
description="Group member flag " + str(i),
condition=conditions.FlagBase.ENABLE_IF_TRUE,
)
flag.group.add(group)
flag.products.add(product)
flag = conditions.GroupMemberFlag.objects.create( groups.append(group)
description="Group member flag",
condition=conditions.FlagBase.ENABLE_IF_TRUE,
)
flag.group.add(group)
flag.products.add(cls.PROD_1)
cls.GROUP = group cls.GROUP_1 = groups[0]
cls.GROUP_2 = groups[1]
def test_product_not_enabled_until_user_joins_group(self): def test_product_not_enabled_until_user_joins_group(self):
''' Tests that GroupMemberFlag disables a product for a user until ''' Tests that GroupMemberFlag disables a product for a user until
@ -41,25 +44,30 @@ class GroupMemberTestCase(RegistrationCartTestCase):
self._create_group_and_flag() self._create_group_and_flag()
# USER_1 cannot see PROD_1 until they're in GROUP. groups = [self.GROUP_1, self.GROUP_2]
available = ProductController.available_products( products = [self.PROD_1, self.PROD_2]
self.USER_1,
products=[self.PROD_1],
)
self.assertNotIn(self.PROD_1, available)
self.USER_1.groups.add(self.GROUP) for group, product in zip(groups, products):
# USER_1 cannot see PROD_1 until they're in GROUP. # USER_1 cannot see PROD_1 until they're in GROUP.
available = ProductController.available_products( available = ProductController.available_products(
self.USER_1, self.USER_1,
products=[self.PROD_1], products=[product],
) )
self.assertIn(self.PROD_1, available) self.assertNotIn(product, available)
# USER_2 is still locked out self.USER_1.groups.add(group)
available = ProductController.available_products(
self.USER_2, # USER_1 cannot see PROD_1 until they're in GROUP.
products=[self.PROD_1], available = ProductController.available_products(
) self.USER_1,
self.assertNotIn(self.PROD_1, available) products=[product],
)
self.assertIn(product, available)
# USER_2 is still locked out
available = ProductController.available_products(
self.USER_2,
products=[product],
)
self.assertNotIn(product, available)