class ProductRepositoryTest(unittest.TestCase):
    def setUp(self):
        fireTruck = Product('f1234', 'Fire Truck', 'red', 8.95, 'medium')
        barbieClassic = Product('b7654', 'Barbie Classic', 'yellow', 15.95, 'small')
        toyConvertible = Product('p1122', 'Toy Porsche Convertible', 'red', 230, 'na')

        self.repository = ProductRepository()
        self.repository.add(fireTruck)
        self.repository.add(barbieClassic)
        self.repository.add(toyConvertible)

    def testFindByColor(self):
        foundProducts = self.repository.selectBy(ColorSpec('red'))
        
        self.assertEquals(2, len(foundProducts))

    def testFindByColorSizeAndBelowPrice(self):
        specs = CompositeSpec()
        specs.add(ColorSpec('red'))
        specs.add(SizeSpec('small'))
        specs.add(BelowPriceSpec(10))

        foundProducts = self.repository.selectBy(specs)
        
        self.assertEquals(0, len(foundProducts))
    def setUp(self):
        fireTruck = Product('f1234', 'Fire Truck', 'red', 8.95, 'medium')
        barbieClassic = Product('b7654', 'Barbie Classic', 'yellow', 15.95, 'small')
        toyConvertible = Product('p1122', 'Toy Porsche Convertible', 'red', 230, 'na')

        self.repository = ProductRepository()
        self.repository.add(fireTruck)
        self.repository.add(barbieClassic)
        self.repository.add(toyConvertible)