class TestCache(unittest.TestCase):
    
    def setUp(self):
        self.cache = Cache()
        self.cache.clear()


    def testGetGame(self):
        game = self.cache.getGame({'id': '105600'})
        self.assertIsNone(game)
        
        self.cache.putGame({'id': '105600', 'name': 'Terraria', 'features': ['Single-player', 'Multi-player', 'Co-op']})
        game = self.cache.getGame('105600')
        self.assertIsNotNone(game)
        self.assertEqual(game['id'], '105600')
        self.assertEqual(game['name'], 'Terraria')
        self.assertItemsEqual(game['features'], ['Single-player', 'Multi-player', 'Co-op'])
        
        
    def testUpdateGame(self):
        game = self.cache.getGame({'id': '105600'})
        self.assertIsNone(game)
        
        self.cache.putGame({'id': '105600', 'name': 'Terraria', 'features': ['Single-player', 'Multi-player', 'Co-op'], 'test': 'test'})
        self.cache.putGame({'id': '105600', 'name': 'Terraria2', 'features': []})
        game = self.cache.getGame('105600')
        self.assertIsNotNone(game)
        self.assertEqual(game['id'], '105600')
        self.assertEqual(game['name'], 'Terraria2')
        self.assertItemsEqual(game['features'], [])
        self.assertFalse('test' in game)
        self.assertFalse('_id' in game)
        self.assertEqual(self.cache.games.count(), 1)