Skip to content

Commit

Permalink
feat: cria classe responsavel pelo carrinho
Browse files Browse the repository at this point in the history
  • Loading branch information
valdeir2000 committed Aug 9, 2020
1 parent c451450 commit eaf91a4
Show file tree
Hide file tree
Showing 2 changed files with 105 additions and 0 deletions.
53 changes: 53 additions & 0 deletions upload/system/library/PagSeguro/src/Domains/Cart.php
@@ -0,0 +1,53 @@
<?php

namespace ValdeirPsr\PagSeguro\Domains;

class Cart
{
/** @var CartItem[] */
private $items = [];

/**
* @param CartItem[] $values
*/
public function __construct(array $values = [])
{
$this->setItems($values);
}

/**
* Define os items do carrinho
*
* @param CartItem[] $values
*
* @return self
*/
public function setItems(array $values = []): self
{
$this->values = [];

foreach($values as $value) {
$this->addItem($value);
}

return $this;
}

/**
* Adiciona um item ao carrinho
*
* @param CartItem $value
*
* @return self
*/
public function addItem(CartItem $value): self
{
$this->items[] = $value;
return $this;
}

public function getItems(): array
{
return $this->items;
}
}
52 changes: 52 additions & 0 deletions upload/system/library/PagSeguro/tests/unit/Domains/CartTest.php
@@ -0,0 +1,52 @@
<?php

use PHPUnit\Framework\TestCase;
use ValdeirPsr\PagSeguro\Domains\Cart;
use ValdeirPsr\PagSeguro\Domains\CartItem;

class CartTest extends TestCase
{
/**
* @test
*/
public function newInstance()
{
$instance = new Cart;
$this->assertInstanceOf(Cart::class, $instance);
}

/**
* @test
*/
public function defineItemsWithValidArgumentsWithoutErrors()
{
$instance = new Cart([
new CartItem(),
new CartItem(),
new CartItem(),
new CartItem(),
new CartItem(),
new CartItem(),
new CartItem()
]);

$this->assertContainsOnlyInstancesOf(CartItem::class, $instance->getItems());
}

/**
* @test
*/
public function defineItemsWithInvalidArgumentsShouldGiveError()
{
$this->expectException(TypeError::class);
$instance = new Cart([
new CartItem(),
new CartItem(),
new CartItem(),
new CartItem(),
new CartItem(),
new Cart(),
new CartItem()
]);
}
}

0 comments on commit eaf91a4

Please sign in to comment.