class TestUsageManager(unittest.TestCase):
    """
    Tests for the UsageManager
    """
    def setUpClass(self):
        self.mana = UsageManager(TMPFILE)
    
    def tearDownClass(self):
        self.mana.close()
        shutil.rmtree(TMPFILE)
    
    def test_append_item(self):
        """
        Test that appending a couple of usage items works
        """
        args = [True, Time.fromDatetime(datetime.datetime.now()),
                Time.fromDatetime(datetime.datetime.now() + datetime.timedelta(minutes=59)),
                112100, 121222]
        args2 = [False, Time.fromDatetime(datetime.datetime.now() - datetime.timedelta(minutes=43)),
                Time.fromDatetime(datetime.datetime.now() + datetime.timedelta(minutes=50)),
                11244443, 12243453]
        
        item1 = self.mana.add_usage_item(*args)
        item2 = self.mana.add_usage_item(*args2)
        
        self.assertEquals(self.mana.store.getItemByID(item1.storeID), item1)
        self.assertEquals(self.mana.store.getItemByID(item2.storeID), item2)
        
        item1.deleteFromStore()
        item2.deleteFromStore()
    
    def test_get_usage_for_day(self):
        """
        Append 2 3G sessions that occurred 21/11/07 and get usage for that day
        """
        # 16:20 PM  21 Nov 2007
        now = datetime.datetime(2007, 11, 21, 16, 20)
        
        args = [True, Time.fromDatetime(now), # from now to now + 60m (60min)
                Time.fromDatetime(now + datetime.timedelta(minutes=45)),
                11212100, 12321222]
        
        args2 = [True, # from now + 80m to now + 120m  (40min)
                 Time.fromDatetime(now + datetime.timedelta(minutes=80)),
                 Time.fromDatetime(now + datetime.timedelta(minutes=120)),
                 112128, 1232121]
        
        item1 = self.mana.add_usage_item(*args)
        item2 = self.mana.add_usage_item(*args2)
        
        resp = self.mana.get_usage_for_day(now.date())
        
        self.failUnlessIn(item1, resp)
        self.failUnlessIn(item2, resp)
    
    def test_get_usage_for_month(self):
        # 16:20 PM  21 Nov 2006
        now = datetime.datetime(2006, 11, 21, 16, 20)
        
        args = [True, # from now + 180m to now + 210m  (30min)
                Time.fromDatetime(now + datetime.timedelta(minutes=180)),
                Time.fromDatetime(now + datetime.timedelta(minutes=210)),
                112128, 1232121]
        
        item3 = self.mana.add_usage_item(*args)
        
        resp = list(self.mana.get_usage_for_month(now.date()))
        self.failUnless(len(resp) == 1)
        self.failUnlessIn(item3, resp)
class TestUsageManager(unittest.TestCase):
    """
    Tests for the UsageManager
    """
    def setUpClass(self):
        self.mana = UsageManager(TMPFILE)

    def tearDownClass(self):
        self.mana.close()
        shutil.rmtree(TMPFILE)

    def test_append_item(self):
        """
        Test that appending a couple of usage items works
        """
        args = [
            True,
            Time.fromDatetime(datetime.datetime.now()),
            Time.fromDatetime(datetime.datetime.now() +
                              datetime.timedelta(minutes=59)), 112100, 121222
        ]
        args2 = [
            False,
            Time.fromDatetime(datetime.datetime.now() -
                              datetime.timedelta(minutes=43)),
            Time.fromDatetime(datetime.datetime.now() +
                              datetime.timedelta(minutes=50)), 11244443,
            12243453
        ]

        item1 = self.mana.add_usage_item(*args)
        item2 = self.mana.add_usage_item(*args2)

        self.assertEquals(self.mana.store.getItemByID(item1.storeID), item1)
        self.assertEquals(self.mana.store.getItemByID(item2.storeID), item2)

        item1.deleteFromStore()
        item2.deleteFromStore()

    def test_get_usage_for_day(self):
        """
        Append 2 3G sessions that occurred 21/11/07 and get usage for that day
        """
        # 16:20 PM  21 Nov 2007
        now = datetime.datetime(2007, 11, 21, 16, 20)

        args = [
            True,
            Time.fromDatetime(now),  # from now to now + 60m (60min)
            Time.fromDatetime(now + datetime.timedelta(minutes=45)),
            11212100,
            12321222
        ]

        args2 = [
            True,  # from now + 80m to now + 120m  (40min)
            Time.fromDatetime(now + datetime.timedelta(minutes=80)),
            Time.fromDatetime(now + datetime.timedelta(minutes=120)),
            112128,
            1232121
        ]

        item1 = self.mana.add_usage_item(*args)
        item2 = self.mana.add_usage_item(*args2)

        resp = self.mana.get_usage_for_day(now.date())

        self.failUnlessIn(item1, resp)
        self.failUnlessIn(item2, resp)

    def test_get_usage_for_month(self):
        # 16:20 PM  21 Nov 2006
        now = datetime.datetime(2006, 11, 21, 16, 20)

        args = [
            True,  # from now + 180m to now + 210m  (30min)
            Time.fromDatetime(now + datetime.timedelta(minutes=180)),
            Time.fromDatetime(now + datetime.timedelta(minutes=210)),
            112128,
            1232121
        ]

        item3 = self.mana.add_usage_item(*args)

        resp = list(self.mana.get_usage_for_month(now.date()))
        self.failUnless(len(resp) == 1)
        self.failUnlessIn(item3, resp)