def test_get_live_data_keeps_one_hour_data(self):
        test_now = datetime.now()
        live_data_handler = RedisTimeCappedSubscriber(
            self.connection,
            'live_data',
            3600,
            pubsub_key=CURRENT_COST_KEY,
            indicator_key='watt')

        redis_toolbox.now = lambda: test_now
        yield from live_data_handler.handle({
            'date': redis_toolbox.now(),
            'watt': 100
        })
        redis_toolbox.now = lambda: test_now + timedelta(seconds=1800)
        yield from live_data_handler.handle({
            'date': redis_toolbox.now(),
            'watt': 200
        })
        redis_toolbox.now = lambda: test_now + timedelta(seconds=3660)
        yield from live_data_handler.handle({
            'date': redis_toolbox.now(),
            'watt': 300
        })

        self.assertEqual(
            2, len((yield from
                    live_data_handler.get_data(since_seconds=3600))))
        self.assertEqual(
            1, len((yield from
                    live_data_handler.get_data(since_seconds=1800))))
    def test_get_live_data(self):
        live_data_handler = RedisTimeCappedSubscriber(self.connection, 'live_data', 3600, pubsub_key=CURRENT_COST_KEY, indicator_key='watt').start()
        yield from live_data_handler.handle({'date': redis_toolbox.now(), 'watt': 100})

        data = yield from live_data_handler.get_data()

        self.assertEqual(1, len(data))
        self.assertEqual({'date': redis_toolbox.now(), 'watt': 100}, data[0])
    def test_get_live_data_keeps_one_hour_data(self):
        test_now = datetime.now()
        live_data_handler = RedisTimeCappedSubscriber(self.connection, 'live_data', 3600, pubsub_key=CURRENT_COST_KEY, indicator_key='watt')

        redis_toolbox.now = lambda: test_now
        yield from live_data_handler.handle({'date': redis_toolbox.now(), 'watt': 100})
        redis_toolbox.now = lambda: test_now + timedelta(seconds=1800)
        yield from live_data_handler.handle({'date': redis_toolbox.now(), 'watt': 200})
        redis_toolbox.now = lambda: test_now + timedelta(seconds=3660)
        yield from live_data_handler.handle({'date': redis_toolbox.now(), 'watt': 300})

        self.assertEqual(2, len((yield from live_data_handler.get_data(since_seconds=3600))))
        self.assertEqual(1, len((yield from live_data_handler.get_data(since_seconds=1800))))
    def test_get_live_data(self):
        live_data_handler = RedisTimeCappedSubscriber(
            self.connection,
            'live_data',
            3600,
            pubsub_key=CURRENT_COST_KEY,
            indicator_key='watt').start()
        yield from live_data_handler.handle({
            'date': redis_toolbox.now(),
            'watt': 100
        })

        data = yield from live_data_handler.get_data()

        self.assertEqual(1, len(data))
        self.assertEqual({'date': redis_toolbox.now(), 'watt': 100}, data[0])
    def test_save_event_redis_function_no_ttl_if_not_first_element(self):
        yield from self.connection.lpush('current_cost_2012-12-13', ['not used'])

        self.message_handler.handle(dumps({'date': (redis_toolbox.now().isoformat()), 'watt': 305, 'temperature': 21.4}))

        ttl = yield from self.connection.ttl('current_cost_2012-12-13')
        self.assertEqual(-1, int(ttl))
    def test_save_event_redis_function_no_ttl_if_not_first_element(self):
        yield from self.connection.lpush('current_cost_2012-12-13',
                                         ['not used'])

        self.message_handler.handle(
            dumps({
                'date': (redis_toolbox.now().isoformat()),
                'watt': 305,
                'temperature': 21.4
            }))

        ttl = yield from self.connection.ttl('current_cost_2012-12-13')
        self.assertEqual(-1, int(ttl))