Когда я использую браузер, я вижу, что значения в сеансе верны, потому что я использую их для отображения данных.
Однако, когда я отображаю таблицу сеансов в phpunit, она показывает только значение для одного ключа:
Контроллер:
public function add(Book $book)
{
$cart = session('cart');
Book::addToCart($cart, $book);
return back();
}
Model:
public static function addToCart($cart, Book $book)
{
if (!$cart) {
self::createCart($book);
} else {
self::updateCart($cart, $book);
}
}
private static function createCart(Book $book)
{
$cart = [
$book->id => [
'id' => $book->id,
'title' => $book->title,
'quantity' => 1,
'image' => $book->image,
'price' => $book->price
]
];
session(['cart' => $cart]);
}
private static function updateCart($cart, Book $book)
{
if(isset($cart[$book->id])){
$cart[$book->id]['quantity']++;
session(['cart' => $cart]);
} else {
$cart[$book->id] = [
'id' => $book->id,
'title' => $book->title,
'quantity' => 1,
'image' => $book->image,
'price' => $book->price
];
session(['cart' => $cart]);
}
}
например, простой тест (результат в img)
use WithoutMiddleware;
/** @test */
public function cart_is_created()
{
$book = Book::first();
$this->get('/add-to-cart/' . $book)
->assertSessionHas('cart');
dd(session()->all());
}