'L']); $this->assertEquals(Cart::count(), 1); $this->assertInstanceOf('Gloudemans\Shoppingcart\CartCollection', Cart::content()); } public function testCartCanAddArray() { Cart::add(['id' => 1, 'name' => 'test', 'qty' => 1, 'price' => 10.00, 'options' => ['size' => 'L']]); $this->assertEquals(Cart::count(), 1); $this->assertInstanceOf('Gloudemans\Shoppingcart\CartCollection', Cart::content()); } public function testCartCanAddBatch() { Cart::add([ ['id' => 1, 'name' => 'test_1', 'qty' => 1, 'price' => 10.00], ['id' => 2, 'name' => 'test_2', 'qty' => 1, 'price' => 10.00, 'options' => ['size' => 'large']] ]); $this->assertEquals(Cart::count(), 2); $this->assertInstanceOf('Gloudemans\Shoppingcart\CartCollection', Cart::content()); } public function testCartCanAddToExisting() { Cart::add(1, 'test', 1, 10.00, ['size' => 'L']); Cart::add(1, 'test', 1, 10.00, ['size' => 'L']); $rowId = Cart::content()->first()->rowid; $this->assertEquals(Cart::get($rowId)->qty, 2); $this->assertInstanceOf('Gloudemans\Shoppingcart\CartCollection', Cart::content()); } public function testCartCanUpdate() { Cart::add(1, 'test', 1, 10.00, ['size' => 'L']); $rowId = Cart::content()->first()->rowid; Cart::update($rowId, 2); $this->assertEquals(Cart::get($rowId)->qty, 2); $this->assertEquals(Cart::get($rowId)->subtotal, 20.00); $this->assertInstanceOf('Gloudemans\Shoppingcart\CartCollection', Cart::content()); } public function testCartCanUpdateAttribute() { Cart::add(1, 'test', 1, 10.00, ['size' => 'L']); $rowId = Cart::content()->first()->rowid; Cart::update($rowId, ['name' => 'test_2']); $this->assertEquals(Cart::get($rowId)->name, 'test_2'); $this->assertInstanceOf('Gloudemans\Shoppingcart\CartCollection', Cart::content()); } public function testCartCanUpdateOptionsAttribute() { Cart::add(1, 'test', 1, 10.00, ['size' => 'L']); $rowId = Cart::content()->first()->rowid; Cart::update($rowId, ['options' => ['color' => 'yellow']]); $this->assertEquals(Cart::get($rowId)->options, new Gloudemans\Shoppingcart\CartRowOptionsCollection(['size' => 'L', 'color' => 'yellow'])); $this->assertInstanceOf('Gloudemans\Shoppingcart\CartRowOptionsCollection', Cart::get($rowId)->options); } public function testCartCanRemove() { Cart::add(1, 'test', 1, 10.00, ['size' => 'L']); Cart::add(2, 'test', 1, 10.00, ['size' => 'L']); $rowId = Cart::content()->first()->rowid; Cart::remove($rowId); $this->assertEquals(Cart::count(), 1); $this->assertNull(Cart::get($rowId)); $this->assertInstanceOf('Gloudemans\Shoppingcart\CartCollection', Cart::content()); } public function testCartCanRemoveOnUpdate() { Cart::add(1, 'test', 1, 10.00, ['size' => 'L']); $rowId = Cart::content()->first()->rowid; Cart::update($rowId, 0); $this->assertEquals(Cart::count(), 0); $this->assertNull(Cart::get($rowId)); $this->assertInstanceOf('Gloudemans\Shoppingcart\CartCollection', Cart::content()); } public function testCartCanGet() { Cart::add(1, 'test', 1, 10.00, ['size' => 'L']); $rowId = Cart::content()->first()->rowid; $row = Cart::get($rowId); $this->assertEquals($row->id, 1); $this->assertEquals($row->name, 'test'); $this->assertEquals($row->qty, 1); $this->assertEquals($row->price, 10.00); $this->assertInstanceOf('Gloudemans\Shoppingcart\CartRowCollection', $row); $this->assertInstanceOf('Gloudemans\Shoppingcart\CartRowOptionsCollection', $row->options); $this->assertEquals($row, Cart::content()->first()); $this->assertInstanceOf('Gloudemans\Shoppingcart\CartCollection', Cart::content()); } public function testCartCanGetContent() { Cart::add(1, 'test', 1, 10.00, ['size' => 'L']); $this->assertEquals(Cart::content()->count(), 1); $this->assertInstanceOf('Gloudemans\Shoppingcart\CartCollection', Cart::content()); } public function testCartCanDestroy() { Cart::add(1, 'test', 1, 10.00, ['size' => 'L']); Cart::destroy(); $this->assertEquals(Cart::count(), 0); $this->assertInstanceOf('Gloudemans\Shoppingcart\CartCollection', Cart::content()); } public function testCartCanGetTotal() { Cart::add(1, 'test', 1, 10.00, ['size' => 'L']); Cart::add(2, 'test', 1, 10.00, ['size' => 'L']); $total = Cart::total(); $this->assertTrue(is_float($total)); $this->assertEquals($total, 20.00); } public function testCartCanGetCount() { Cart::add(1, 'test', 1, 10.00, ['size' => 'L']); Cart::add(2, 'test', 2, 10.00, ['size' => 'L']); $count = Cart::count(false); $this->assertTrue(is_integer($count)); $this->assertEquals($count, 2); $count = Cart::count(); $this->assertTrue(is_integer($count)); $this->assertEquals($count, 3); } public function testCartCanHaveMultipleInstances() { Cart::instance('test_1')->add(1, 'test_1', 1, 10.00, ['size' => 'L']); Cart::instance('test_2')->add(2, 'test_2', 2, 10.00, ['size' => 'L']); $name = Cart::instance('test_1')->content()->first()->name; $this->assertEquals($name, 'test_1'); $name = Cart::instance('test_2')->content()->first()->name; $this->assertEquals($name, 'test_2'); $count = Cart::count(); $this->assertEquals($count, 2); Cart::add(3, 'test_3', 3, 10.00); $count = Cart::count(); $this->assertEquals($count, 5); Cart::instance('test_1')->add(1, 'test_1', 1, 10.00, ['size' => 'L']); $count = Cart::count(); $this->assertEquals($count, 2); } public function testCartCanSearch() { Cart::add(1, 'Product 1', 1, 10.00, ['size' => 'large', 'color' => 'red']); Cart::add(2, 'Product 2', 1, 10.00, ['size' => 'large']); $search = Cart::search(['id' => 1, 'name' => 'Product 1']); $this->assertEquals($search, ['a308327de59a3e249baabc24a6c29928']); $search = Cart::search(['id' => 2, 'name' => 'Product 1']); $this->assertFalse($search); $search = Cart::search(['id' => 2, 'name' => 'Product 2']); $this->assertEquals($search, ['bb0042610e1c6e8bfd7293bfa1807f82']); $search = Cart::search(['id' => 1, 'price' => 10.00]); $this->assertEquals($search, ['a308327de59a3e249baabc24a6c29928']); $search = Cart::search(['qty' => 1, 'price' => 10.00]); $this->assertEquals($search, ['a308327de59a3e249baabc24a6c29928', 'bb0042610e1c6e8bfd7293bfa1807f82']); $search = Cart::search(['id' => 2, 'kaas' => 'Product 2']); $this->assertFalse($search); $search = Cart::search(['id' => 2, 'options' => ['size' => 'large']]); $this->assertEquals($search, ['bb0042610e1c6e8bfd7293bfa1807f82']); $search = Cart::search(['options' => ['size' => 'large']]); $this->assertEquals($search, ['a308327de59a3e249baabc24a6c29928', 'bb0042610e1c6e8bfd7293bfa1807f82']); $search = Cart::search(['id' => 1, 'options' => ['color' => 'red']]); $this->assertEquals($search, ['a308327de59a3e249baabc24a6c29928']); } }