diff --git a/src/Controller/Component/ShoppingCartComponent.php b/src/Controller/Component/ShoppingCartComponent.php index 66c5459..8e840cc 100644 --- a/src/Controller/Component/ShoppingCartComponent.php +++ b/src/Controller/Component/ShoppingCartComponent.php @@ -73,7 +73,6 @@ class ShoppingCartComponent extends Component { } else { $cartsQ->where(['session_id' => $sessionId]); } - return $cartsQ->firstOrFail(); } diff --git a/tests/Fixture/CartsFixture.php b/tests/Fixture/CartsFixture.php index 7d0cec7..54fb917 100644 --- a/tests/Fixture/CartsFixture.php +++ b/tests/Fixture/CartsFixture.php @@ -22,7 +22,7 @@ class CartsFixture extends TestFixture { [ 'id' => '74d1aa54-92a2-4039-bc10-61e1190c51ea', 'cart_type_id' => CartTypeId::Cart->value, - 'session_id' => 'session_1', + 'session_id' => 'cli', 'user_id' => null, 'user_id_uuid' => '5a34a6ae-7d3f-4dcf-bac7-57335b51e697', 'created' => '2025-10-08 09:55:15', @@ -36,7 +36,7 @@ class CartsFixture extends TestFixture { [ 'id' => '74d1aa54-92a2-4039-bc10-61e1190c51eb', 'cart_type_id' => CartTypeId::Cart->value, - 'session_id' => 'session_1', + 'session_id' => 'cli', 'user_id' => null, 'user_id_uuid' => '5a34a6ae-7d3f-4dcf-bac7-57335b51e697', 'created' => '2025-10-08 09:55:15', diff --git a/tests/TestCase/Controller/CartItemsControllerTest.php b/tests/TestCase/Controller/CartItemsControllerTest.php index c67da99..6e76559 100644 --- a/tests/TestCase/Controller/CartItemsControllerTest.php +++ b/tests/TestCase/Controller/CartItemsControllerTest.php @@ -91,7 +91,6 @@ class CartItemsControllerTest extends TestCase { ]; $this->session(['Auth.User.id' => 1]); $this->session(['Auth.id' => 1]); - $this->session(['CakeCarts.session_id' => 'session_1']); $before = $this->CartItems->get($id, contain: ['Carts']); // dd($before); $skuId = '3a477e3e-7977-4813-81f6-f85949613979'; diff --git a/tests/TestCase/Controller/Component/ShoppingCartComponentTest.php b/tests/TestCase/Controller/Component/ShoppingCartComponentTest.php index 1d59301..fde05ab 100644 --- a/tests/TestCase/Controller/Component/ShoppingCartComponentTest.php +++ b/tests/TestCase/Controller/Component/ShoppingCartComponentTest.php @@ -4,6 +4,13 @@ declare(strict_types=1); namespace CakeCarts\Test\TestCase\Controller\Component; use Cake\Controller\ComponentRegistry; +use Cake\Controller\Controller; +use Cake\Datasource\Exception\RecordNotFoundException; +use Cake\Event\Event; +use Cake\Http\Exception\NotFoundException; +use Cake\Http\Response; +use Cake\Http\ServerRequest; +use Cake\TestSuite\IntegrationTestTrait; use Cake\TestSuite\TestCase; use CakeCarts\Controller\Component\ShoppingCartComponent; @@ -12,13 +19,21 @@ use CakeCarts\Controller\Component\ShoppingCartComponent; */ class ShoppingCartComponentTest extends TestCase { - /** - * Test subject + use IntegrationTestTrait; + + protected ShoppingCartComponent $component; + protected Controller $controller; + + /** + * Fixtures * - * @var \CakeCarts\Controller\Component\ShoppingCartComponent + * @var array */ - protected $ShoppingCart; - + protected array $fixtures = [ + 'plugin.CakeCarts.CartItems', + 'plugin.CakeCarts.Carts', + ]; + /** * setUp method * @@ -26,8 +41,11 @@ class ShoppingCartComponentTest extends TestCase { */ protected function setUp(): void { parent::setUp(); - $registry = new ComponentRegistry(); - $this->ShoppingCart = new ShoppingCartComponent($registry); + $request = new ServerRequest(); + $this->controller = new Controller($request); + $registry = new ComponentRegistry($this->controller); + + $this->component = new ShoppingCartComponent($registry); } /** @@ -40,5 +58,67 @@ class ShoppingCartComponentTest extends TestCase { parent::tearDown(); } - + + /** + * @return void + */ + public function testGetCartForUserById() + { + $this->session([ + 'CakeCarts.session_id' => 'cli', + ]); + $cart = $this->component->getCartForUserById('74d1aa54-92a2-4039-bc10-61e1190c51ea'); + $this->assertNotNull($cart); + } + + /** + * @return void + */ + public function testGetCartForUserByIdDoesNotExist() + { + $this->expectException(RecordNotFoundException::class); + $cart = $this->component->getCartForUserById('74d1aa54-92a2-4039-bc10-61e1190c51ec'); + } + + /** + * @return void + */ + public function testGetUserIdField() + { + $this->assertNotNull($this->component->getUserIdField()); + } + + /** + * @return void + */ + public function testGetSessionId() + { + $this->assertNotNull($this->component->getSessionId()); + } + + /** + * @return void + */ + public function testCheckIfIsOwnCartIsOwnCart() + { + $this->session([ + 'CakeCarts.session_id' => 'session_1', + ]); + $cart = $this->fetchTable('Carts')->get('74d1aa54-92a2-4039-bc10-61e1190c51ea'); + $this->component->checkIfIsOwnCart($cart); + // if exception not thrown test passes + $this->assertEquals(1, 1); + } + + /** + * @return void + */ + public function testCheckIfIsOwnCartIsNotOwnCart() + { + $this->expectExceptionCode(404); + $cart = $this->fetchTable('Carts')->get('74d1aa54-92a2-4039-bc10-61e1190c51ec'); + $this->component->checkIfIsOwnCart($cart); + // if exception not thrown test fails + $this->expectException(RecordNotFoundException::class); + } }