public function testCart() { $product1 = Product::find(1); $product1->price = 500; $product1->save(); $product2 = Product::find(2); $product2->price = 1000; $product2->save(); //tax=23+13=33%; $product1 = $this->catalogService->getCartItem(1); //MacBook price:500 $this->assertNotNull($product1); $this->assertEquals(500, $product1->price); $this->assertEquals(665, $product1->price_including_tax); $product2 = $this->catalogService->getCartItem(2); //MacBook price:1000 $this->assertNotNull($product2); $this->assertEquals(1000, $product2->price); $this->assertEquals(1330, $product2->price_including_tax); //Add 2 products $cart = new Cart(Cart::SHOPPING_CART); $cart->add(1, $product1); $cart->add(1, $product2); $this->assertEquals(1500, $cart->getTotal()); $this->assertEquals(495, $cart->getTax()); $this->assertEquals(1995, $cart->getTotalIncludingTax()); //print echo json_encode($cart, JSON_PRETTY_PRINT); //Add another 2 quantities $cart->add(2, $product1); $this->assertEquals(2500, $cart->getTotal()); $this->assertEquals(825, $cart->getTax()); $this->assertEquals(3325, $cart->getTotalIncludingTax()); //Remove 2 quantities $cart->update(1, $product1->id); $this->assertEquals(1500, $cart->getTotal()); $this->assertEquals(495, $cart->getTax()); $this->assertEquals(1995, $cart->getTotalIncludingTax()); //dummy remove $cart->remove(111); $cart->remove(222); //Remove first $cart->remove($product1->id); $this->assertEquals(1000, $cart->getTotal()); $this->assertEquals(330, $cart->getTax()); $this->assertEquals(1330, $cart->getTotalIncludingTax()); //Remove second $cart->remove($product2->id); $this->assertEquals(0, $cart->getTotal()); $this->assertEquals(0, $cart->getTax()); $this->assertEquals(0, $cart->getTotalIncludingTax()); echo json_encode($cart, JSON_PRETTY_PRINT); $cart = unserialize(serialize($cart)); $this->assertEquals(0, $cart->getTotal()); $this->assertEquals(0, $cart->getTax()); $this->assertEquals(0, $cart->getTotalIncludingTax()); }
public function testGetById() { $product1 = Product::with("description.language")->find(1); //MacBook price:500 $this->assertNotNull($product1); $this->assertEquals(500, $product1->price); $product2 = Product::find(44); //MacBook price:1000 $this->assertNotNull($product2); $this->assertEquals(1000, $product2->price); }
public function getProducts($category_id, $language_id, $params) { $paging = array_get($params, 'paging', []); $page_index = 1; $page_size = 10; if (count($paging) > 0) { $page_index = count($paging) == 2 ? $paging[0] : 1; $page_size = count($paging) == 2 ? $paging[1] : $paging[0]; } // force current page to 5 //Paginator::setCurrentPage($page_index); Paginator::currentPageResolver(function () use($page_index) { return $page_index; }); $query = Product::select('id', 'price', 'tax_class_id', 'price', 'image', 'views', 'pd.name as name', 'pd.description as description')->join('products_to_categories as pc', function ($join) use($category_id) { $join->on('products.id', '=', 'pc.product_id'); $join->where('pc.category_id', '=', $category_id); })->leftJoin('products_descriptions AS pd', function ($join) use($language_id) { $join->on('products.id', '=', 'pd.product_id'); $join->where('pd.language_id', '=', Context::getLanguageId()); }); $sorting = array_get($params, 'sorting', []); if (count($sorting) > 0) { $tokens = explode(":", $sorting[0]); $sort_column = $tokens[0]; $sort_direction = count($tokens) > 1 ? $tokens[1] : 'asc'; switch ($sort_column) { case 'price': $query->orderBy('price', $sort_direction); break; case 'popular': $query->orderBy('views', $sort_direction); break; case 'newest': $query->orderBy('created_at', $sort_direction); break; } } $items = $query->paginate($page_size); foreach ($items as $item) { $this->calculateTax($item); } return $items; }