def test_get_top(self):
        countstore = CountStore()
        countstore.put("entity1", "test_entity", "test_seg")
        countstore.put("entity2", "test_entity", "test_seg")
        countstore.put("entity2", "test_entity", "test_seg")
        actual = countstore.get_top("test_entity", "test_seg", 10)
        expected = [("entity2", 2), ("entity1", 1)]

        self.assertEqual(expected, actual)

        fixture.setup_mock_time(fixture.jan_1st_2013_midday + 3600)

        countstore.put("entity1", "test_entity", "test_seg")
        countstore.put("entity1", "test_entity", "test_seg")
        countstore.put("entity3", "test_entity", "test_seg")
        actual = countstore.get_top("test_entity", "test_seg", 10)
        expected = [("entity1", 3), ("entity2", 2), ("entity3", 1)]

        self.assertEqual(expected, actual)

        fixture.setup_mock_time(fixture.jan_1st_2013_midday + 2*3600)

        countstore.put("entity3", "test_entity", "test_seg")
        countstore.put("entity3", "test_entity", "test_seg")
        actual = countstore.get_top("test_entity", "test_seg", 10)
        expected = [("entity3", 3), ("entity1", 2)]

        self.assertEqual(expected, actual)
    def test_put_with_total_count(self):
        countstore = CountStore()
        countstore.put("entity1", "test_entity", "test_seg", total_count = 10)
        docs = self.get_all_docs()

        self.assertEqual(9, len(docs))

        expected = self.build_timeslice_docs({
            "entity_id"   : "entity1",
            "entity_type" : "test_entity",
            "segmentation": "test_seg",
            "base_count"  : 10,
            "count"       : 1,
        })
        self.assertEqual(expected, docs)

        fixture.setup_mock_time(fixture.jan_1st_2013_midday + 60*15)

        countstore.put("entity1", "test_entity", "test_seg", total_count = 15)
        docs = self.get_all_docs()

        self.assertEqual(10, len(docs))

        expected = self.build_timeslice_docs({
            "entity_id"   : "entity1",
            "entity_type" : "test_entity",
            "segmentation": "test_seg",
            "count"       : 6,
	        "base_count"  : 10,
        })
        expected[0]["count"] = 1
        expected[0]["base_count"] = 10
        last_doc = copy(expected[-1])
        last_doc["count"] = 1
        last_doc["base_count"] = 15
        last_doc["timeslice"] = fixture.jan_1st_2013_midday + 60*15
        expected.append(last_doc)

        self.assertEqual(expected, docs)
 def setUp(self):
     fixture.setup_database_settings()
     fixture.setup_mock_time()
     self._mongo = Mongo("CountStore")
     self._mongo.clear()