/** * Create the ProductList. * Add some products. */ protected function setUp() { $this->pl = new ProductList(); $this->pl->addProduct(new Product("First", "First Product", 2.5, 1000)); $this->pl->addProduct(new Product("Second", "Second Product", 0.5, 2000)); $this->pl->addProduct(new Product("Third", "Third Product", 10.0, 3550)); }
/** * Create a ProductList from input data retrieved from a Gateway. * * @param array $input * * @throws MalformedDataException If data is malformed. * * @return ProductList */ public function createList(array $data) { $pl = new ProductList(); array_walk($data, function ($product) use($pl) { if (false === array_key_exists('title', $product)) { throw new MalformedDataException("Product must have a title."); } if (false === array_key_exists('description', $product)) { throw new MalformedDataException("Product must have a description."); } if (false === array_key_exists('unit_price', $product)) { throw new MalformedDataException("Product must have a price."); } if (false === array_key_exists('size', $product)) { throw new MalformedDataException("Product must have a size."); } $product = $this->create($product['title'], $product['description'], $product['unit_price'], $product['size']); $pl->addProduct($product); }); return $pl; }