Files
cake-carts/tests/TestCase/Controller/CartItemsControllerTest.php

119 lines
2.8 KiB
PHP
Raw Normal View History

<?php
declare(strict_types=1);
namespace CakeCarts\Test\TestCase\Controller;
use Cake\TestSuite\IntegrationTestTrait;
use Cake\TestSuite\TestCase;
2025-10-11 20:41:59 -07:00
use CakeCarts\Model\Table\CartItemsTable;
/**
* CakeCarts\Controller\CartItemsController Test Case
*
* @link \CakeCarts\Controller\CartItemsController
*/
2026-01-23 20:32:22 -08:00
class CartItemsControllerTest extends TestCase {
2026-01-23 20:32:22 -08:00
use IntegrationTestTrait;
/**
2025-10-11 20:41:59 -07:00
* Test subject
*
* @var \CakeCarts\Model\Table\CartItemsTable
*/
2026-01-23 20:32:22 -08:00
protected $CartItems;
2025-10-11 20:41:59 -07:00
2026-01-23 20:32:22 -08:00
/**
* Fixtures
*
* @var array<string>
*/
2026-01-23 20:32:22 -08:00
protected array $fixtures = [
'plugin.CakeCarts.CartItems',
'plugin.CakeCarts.Carts',
];
2026-01-23 20:32:22 -08:00
/**
* @return void
*/
public function setUp(): void {
parent::setUp(); // TODO: Change the autogenerated stub
2026-01-23 20:32:22 -08:00
$config = $this->getTableLocator()->exists('CartItems') ? [] : ['className' => CartItemsTable::class];
$this->CartItems = $this->getTableLocator()->get('CartItems', $config);
}
2025-10-11 20:41:59 -07:00
2026-01-23 20:32:22 -08:00
/**
* Test add method
*
* @link \CakeCarts\Controller\CartItemsController::add()
2026-01-23 20:32:22 -08:00
* @return void
*/
2026-01-23 20:32:22 -08:00
public function testAdd(): void {
$url = [
'plugin' => 'CakeCarts',
'controller' => 'CartItems',
'action' => 'add',
];
$skuId = '3a477e3e-7977-4813-81f6-f85949613979';
$beforeCnt = $this->CartItems->find()->where(['foreign_key_uuid' => $skuId])->count();
$postData = [
'foreign_key' => null,
'foreign_key_uuid' => $skuId,
'model' => 'ProductSkus',
'qty' => 10,
'price' => 0.75,
'subtotal' => 1,
];
$this->post($url, $postData);
$this->assertResponseCode(302);
$afterCnt = $this->CartItems->find()->where(['foreign_key_uuid' => $skuId])->count();
$this->assertEquals($beforeCnt + 1, $afterCnt);
$new = $this->CartItems->find()->where(['foreign_key_uuid' => $skuId, 'qty' => 10, 'model' => 'ProductSkus'])->firstOrFail();
$this->assertEquals(7.5, $new->subtotal);
}
/**
* Test edit method
*
* @link \CakeCarts\Controller\CartItemsController::edit()
2026-01-23 20:32:22 -08:00
* @return void
*/
2026-01-23 20:32:22 -08:00
public function testEdit(): void {
$id = '79f66e8d-8d8d-4095-adc4-fd15234a4397';
$url = [
'plugin' => 'CakeCarts',
'controller' => 'CartItems',
'action' => 'edit',
$id,
];
$this->session(['Auth.User.id' => 1]);
$this->session(['Auth.id' => 1]);
$before = $this->CartItems->get($id, contain: ['Carts']);
2025-10-11 21:46:16 -07:00
// dd($before);
2026-01-23 20:32:22 -08:00
$skuId = '3a477e3e-7977-4813-81f6-f85949613979';
2025-10-11 21:46:16 -07:00
2026-01-23 20:32:22 -08:00
$postData = [
'qty' => 100,
];
$this->post($url, $postData);
$this->assertResponseCode(302);
2025-10-11 21:46:16 -07:00
2026-01-23 20:32:22 -08:00
$new = $this->CartItems->get($id);
$this->assertEquals(100, $new->qty);
}
2026-01-23 20:32:22 -08:00
/**
* Test delete method
*
* @link \CakeCarts\Controller\CartItemsController::delete()
2026-01-23 20:32:22 -08:00
* @return void
*/
2026-01-23 20:32:22 -08:00
public function testDelete(): void {
$this->markTestIncomplete('Not implemented yet.');
}
}