Merge branch 'chrisjrn/fix_68'
This commit is contained in:
		
						commit
						7e39339ed9
					
				
					 2 changed files with 42 additions and 1 deletions
				
			
		|  | @ -172,11 +172,20 @@ class ProductConditionController(IsMetByFilter, ConditionController): | |||
| 
 | ||||
|         in_user_carts = Q(enabling_products__productitem__cart__user=user) | ||||
|         released = commerce.Cart.STATUS_RELEASED | ||||
|         paid = commerce.Cart.STATUS_PAID | ||||
|         active = commerce.Cart.STATUS_ACTIVE | ||||
|         in_released_carts = Q( | ||||
|             enabling_products__productitem__cart__status=released | ||||
|         ) | ||||
|         not_in_paid_or_active_carts = ~( | ||||
|             Q(enabling_products__productitem__cart__status=paid) | | ||||
|             Q(enabling_products__productitem__cart__status=active) | ||||
|         ) | ||||
| 
 | ||||
|         queryset = queryset.filter(in_user_carts) | ||||
|         queryset = queryset.exclude(in_released_carts) | ||||
|         queryset = queryset.exclude( | ||||
|             in_released_carts & not_in_paid_or_active_carts | ||||
|         ) | ||||
| 
 | ||||
|         return queryset | ||||
| 
 | ||||
|  |  | |||
|  | @ -6,6 +6,7 @@ from registrasion.models import commerce | |||
| from registrasion.models import conditions | ||||
| from registrasion.controllers.category import CategoryController | ||||
| from controller_helpers import TestingCartController | ||||
| from controller_helpers import TestingInvoiceController | ||||
| from registrasion.controllers.product import ProductController | ||||
| 
 | ||||
| from test_cart import RegistrationCartTestCase | ||||
|  | @ -350,3 +351,34 @@ class FlagTestCases(RegistrationCartTestCase): | |||
|         # and also PROD_1, which is now exhausted for user. | ||||
|         items = commerce.ProductItem.objects.filter(cart=cart.cart) | ||||
|         self.assertTrue([i for i in items if i.product == self.PROD_1]) | ||||
| 
 | ||||
|     def test_product_stays_enabled_even_if_some_are_cancelled(self): | ||||
|         ''' Flags should be enabled, even if *some* enabling products are cnx. | ||||
|         Tests issue #68. | ||||
|         ''' | ||||
| 
 | ||||
|         self.add_product_flag() | ||||
|         cart1 = TestingCartController.for_user(self.USER_1) | ||||
| 
 | ||||
|         with self.assertRaises(ValidationError): | ||||
|             # Can't do this without PROD_2 | ||||
|             cart1.add_to_cart(self.PROD_1, 1) | ||||
| 
 | ||||
|         cart1.add_to_cart(self.PROD_2, 1) | ||||
| 
 | ||||
|         inv = TestingInvoiceController.for_cart(cart1.cart) | ||||
|         inv.pay("Lol", inv.invoice.value) | ||||
| 
 | ||||
|         cart2 = TestingCartController.for_user(self.USER_1) | ||||
|         cart2.add_to_cart(self.PROD_2, 1) | ||||
| 
 | ||||
|         inv.refund() | ||||
| 
 | ||||
|         # Even though cart1 has been cancelled, we have the item in cart2. | ||||
|         # So we should be able to add PROD_1, which depends on PROD_2 | ||||
|         cart2.add_to_cart(self.PROD_1, 1) | ||||
| 
 | ||||
|         cart2.set_quantity(self.PROD_2, 0) | ||||
| 
 | ||||
|         with self.assertRaises(ValidationError): | ||||
|             cart2.add_to_cart(self.PROD_1, 1) | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Christopher Neugebauer
						Christopher Neugebauer