def testSafeName(self): 
        c = Club()
        c.name = "Some - Racers"

        c.save()
        self.assertEqual("someracers", c.safe_name)
        
        c.name = "some\\racers"
        c.save()
        self.assertEqual("someracers", c.safe_name)
    def testSafeName(self):
        c = Club()
        c.name = "Some - Racers"

        c.save()
        self.assertEqual("someracers", c.safe_name)

        c.name = "some\\racers"
        c.save()
        self.assertEqual("someracers", c.safe_name)
    def testUniqueSafeName(self): 
        c = Club()
        c.name = "Some - Racers"

        c.save()

        new_c = Club()
        new_c.name = "some-racers"

        try: 
            new_c.full_clean()
        except ValidationError as err: 
            self.assertEqual("{'safe_name': [u'Club with this Safe_name already exists.']}", str(err))
        else: 
            self.fail("ValidationError expected")
    def test_coupon_notification(self):

        user = User()
        user.first_name = "justin"
        user.last_name = "gray"
        user.username = "******"
        user.email = "*****@*****.**"
        user.save()

        club = Club()
        club.name = "test-test"
        club.save()

        c = Coupon()
        c.discount_amount = "10.00"
        c.permanent = True
        c.code = "aaa"
        c.expires = datetime.date.today() + datetime.timedelta(days=1)
        c.club = club
        c.user_prof = user.get_profile()
        c.save()

        #make sure notification email was sent
        self.assertEqual(len(mail.outbox), 1)
        self.assertEqual(mail.outbox[0].subject, u'New example.com coupon')
    def test_coupon_notification(self):     

        user = User()
        user.first_name = "justin"
        user.last_name = "gray"
        user.username = "******"
        user.email = "*****@*****.**"
        user.save()

        club = Club()
        club.name ="test-test"
        club.save()
 
        c = Coupon()
        c.discount_amount = "10.00"
        c.permanent = True
        c.code = "aaa"
        c.expires = datetime.date.today() + datetime.timedelta(days=1)
        c.club = club
        c.user_prof = user.get_profile()
        c.save()

        #make sure notification email was sent
        self.assertEqual(len(mail.outbox), 1)
        self.assertEqual(mail.outbox[0].subject, 
            u'New example.com coupon')
    def testUniqueSafeName(self):
        c = Club()
        c.name = "Some - Racers"

        c.save()

        new_c = Club()
        new_c.name = "some-racers"

        try:
            new_c.full_clean()
        except ValidationError as err:
            self.assertEqual(
                "{'safe_name': [u'Club with this Safe_name already exists.']}",
                str(err))
        else:
            self.fail("ValidationError expected")
    def test_coupon_is_valid(self):

        user = User()
        user.first_name = "justin"
        user.last_name = "gray"
        user.username = "******"
        user.email = "*****@*****.**"
        user.save()

        user2 = User()
        user2.first_name = "sirius"
        user2.last_name = "gray"
        user2.username = "******"
        user2.save()

        club = Club()
        club.name = "test-test"
        club.save()

        c = Coupon()
        c.discount_amount = "10.00"
        c.permanent = True
        c.code = "aaa"
        c.expires = datetime.date.today() + datetime.timedelta(days=1)
        c.club = club
        c.save()

        o = Order()
        o.coupon = c
        o.user_prof = user.get_profile()
        o.save()

        self.assertTrue(c.is_valid(user))
        c.uses_left = 0
        self.assertTrue(c.is_valid(user))

        c.expires = datetime.date.today() - datetime.timedelta(days=1)
        self.assertTrue(c.is_valid(user))

        c.permanent = False
        self.assertFalse(c.is_valid(user))

        c.expires = datetime.date.today() + datetime.timedelta(days=1)
        c.uses_left = 1
        self.assertTrue(c.is_valid(user))
        c.uses_left = 0
        self.assertFalse(c.is_valid(user))

        c.uses_left = 1
        c.user_prof = user.get_profile()
        self.assertFalse(c.is_valid(user2))

        c.user_prof = None
        c.single_use_per_user = True
        self.assertFalse(c.is_valid(user))
    def test_coupon_is_valid(self): 
        
        user = User()
        user.first_name = "justin"
        user.last_name = "gray"
        user.username = "******"
        user.email = "*****@*****.**"
        user.save()
        
        user2 = User()
        user2.first_name = "sirius"
        user2.last_name = "gray"
        user2.username = "******"
        user2.save()

        club = Club()
        club.name ="test-test"
        club.save()
 
        c = Coupon()
        c.discount_amount = "10.00"
        c.permanent = True
        c.code = "aaa"
        c.expires = datetime.date.today() + datetime.timedelta(days=1)
        c.club = club
        c.save()
        
        o = Order()
        o.coupon = c
        o.user_prof = user.get_profile()
        o.save()
        
        self.assertTrue(c.is_valid(user))
        c.uses_left = 0
        self.assertTrue(c.is_valid(user))

        c.expires = datetime.date.today() - datetime.timedelta(days=1)    
        self.assertTrue(c.is_valid(user))

        c.permanent = False
        self.assertFalse(c.is_valid(user))

        c.expires = datetime.date.today() + datetime.timedelta(days=1)
        c.uses_left = 1
        self.assertTrue(c.is_valid(user))
        c.uses_left = 0
        self.assertFalse(c.is_valid(user))
        
        c.uses_left = 1
        c.user_prof = user.get_profile()
        self.assertFalse(c.is_valid(user2))
        
        c.user_prof = None
        c.single_use_per_user = True
        self.assertFalse(c.is_valid(user))
    def test_validcode(self): 
        c = Coupon()
        c.code = "test code"

        club = Club()
        club.name = "test-test"
        club.save()
        c.club = club
        
        try: 
            c.full_clean()
        except ValidationError as err: 
            self.assertEqual("{'code': [u'Spaces not allowed in the code']}", str(err))
        else: 
            self.fail("ValidationError expected")
    def test_validcode(self):
        c = Coupon()
        c.code = "test code"

        club = Club()
        club.name = "test-test"
        club.save()
        c.club = club

        try:
            c.full_clean()
        except ValidationError as err:
            self.assertEqual("{'code': [u'Spaces not allowed in the code']}",
                             str(err))
        else:
            self.fail("ValidationError expected")
    def test_expires(self):  
        c = Coupon()
        c.expires = datetime.date.today()
        c.code = "testcode"

        club = Club()
        club.name = "test-test"
        club.save()
        c.club = club

        try: 
            c.full_clean()
        except ValidationError as err: 
            self.assertEqual("{'expires': [u'Date must be at least one day from now']}", str(err))
        else: 
            self.fail("ValidationError expected")   
    def test_expires(self):
        c = Coupon()
        c.expires = datetime.date.today()
        c.code = "testcode"

        club = Club()
        club.name = "test-test"
        club.save()
        c.club = club

        try:
            c.full_clean()
        except ValidationError as err:
            self.assertEqual(
                "{'expires': [u'Date must be at least one day from now']}",
                str(err))
        else:
            self.fail("ValidationError expected")
    def test_total_price(self):
        self.o = Order()
        self.o.user_prof = self.user.get_profile()
        self.o.save()

        item1 = Registration()
        item1.number = 11
        item1.race_class = self.race_class
        item1.pax_class = None
        item1.event = self.e
        item1.price = "40.00"
        item1.order = self.o
        item1.club = self.c
        item1.save()

        item2 = Membership()
        item2.user_prof = self.user.get_profile()
        item2.club = self.c
        item2.num = 1
        item2.start = datetime.date.today() - datetime.timedelta(days=300)
        item2.valid_thru = datetime.date.today() + datetime.timedelta(days=1)
        item2.price = "60.00"
        item2.order = self.o
        item2.save()

        self.o.calc_total_price()
        self.assertEqual(self.o.total_price, "100.00")

        club = Club()
        club.name = "test-test"
        club.save()

        c = Coupon()
        c.discount_amount = "10.00"
        c.permanent = True
        c.code = "aaa"
        c.expires = datetime.date.today() + datetime.timedelta(days=1)
        c.club = club
        c.save()

        self.o.coupon = c
        self.o.calc_total_price()
        self.assertEqual(self.o.total_price, '90.00')
    def test_total_price(self): 
        self.o = Order()
        self.o.user_prof = self.user.get_profile()
        self.o.save()        
        
        item1 = Registration()
        item1.number = 11
        item1.race_class = self.race_class
        item1.pax_class = None
        item1.event = self.e
        item1.price = "40.00"
        item1.order = self.o
        item1.club = self.c
        item1.save()
        
        item2 = Membership()
        item2.user_prof = self.user.get_profile()
        item2.club = self.c
        item2.num = 1
        item2.start = datetime.date.today() - datetime.timedelta(days=300)
        item2.valid_thru = datetime.date.today()+datetime.timedelta(days=1)
        item2.price = "60.00"
        item2.order = self.o
        item2.save()
        
        self.o.calc_total_price()
        self.assertEqual(self.o.total_price, "100.00")

        club = Club()
        club.name ="test-test"
        club.save()
        
        c = Coupon()
        c.discount_amount = "10.00"
        c.permanent = True
        c.code = "aaa"
        c.expires = datetime.date.today() + datetime.timedelta(days=1)
        c.club = club
        c.save()
        
        self.o.coupon = c
        self.o.calc_total_price()
        self.assertEqual(self.o.total_price, '90.00')