mirror of
https://github.com/Sylius/Sylius.git
synced 2026-07-15 01:20:59 +00:00
[Unit] Refactor product options tests codestyle
This commit is contained in:
parent
8b0d39b60b
commit
1fdc8afba8
2 changed files with 52 additions and 87 deletions
|
|
@ -16,16 +16,22 @@ namespace Sylius\Tests\Api\Admin;
|
|||
use Sylius\Component\Product\Model\ProductOptionInterface;
|
||||
use Sylius\Component\Product\Model\ProductOptionValueInterface;
|
||||
use Sylius\Tests\Api\JsonApiTestCase;
|
||||
use Sylius\Tests\Api\Utils\AdminUserLoginTrait;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
|
||||
final class ProductOptionsTest extends JsonApiTestCase
|
||||
{
|
||||
use AdminUserLoginTrait;
|
||||
protected function setUp(): void
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
$this->setUpAdminContext();
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function it_gets_a_product_option(): void
|
||||
{
|
||||
$this->setUpDefaultGetHeaders();
|
||||
|
||||
$fixtures = $this->loadFixturesFromFiles([
|
||||
'authentication/api_administrator.yaml',
|
||||
'channel.yaml',
|
||||
|
|
@ -35,55 +41,40 @@ final class ProductOptionsTest extends JsonApiTestCase
|
|||
/** @var ProductOptionInterface $productOption */
|
||||
$productOption = $fixtures['product_option_color'];
|
||||
|
||||
$this->client->request(
|
||||
method: 'GET',
|
||||
uri: sprintf('/api/v2/admin/product-options/%s', $productOption->getCode()),
|
||||
server: $this->headerBuilder()->withJsonLdAccept()->withAdminUserAuthorization('api@example.com')->build(),
|
||||
);
|
||||
$this->requestGet(sprintf('/api/v2/admin/product-options/%s', $productOption->getCode()));
|
||||
|
||||
$this->assertResponse(
|
||||
$this->client->getResponse(),
|
||||
'admin/product_option/get_product_option',
|
||||
Response::HTTP_OK,
|
||||
);
|
||||
$this->assertResponseSuccessful('admin/product_option/get_product_option');
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function it_gets_product_options(): void
|
||||
{
|
||||
$this->setUpDefaultGetHeaders();
|
||||
|
||||
$this->loadFixturesFromFiles([
|
||||
'authentication/api_administrator.yaml',
|
||||
'channel.yaml',
|
||||
'product/product_option.yaml',
|
||||
]);
|
||||
|
||||
$this->client->request(
|
||||
method: 'GET',
|
||||
uri: '/api/v2/admin/product-options',
|
||||
server: $this->headerBuilder()->withJsonLdAccept()->withAdminUserAuthorization('api@example.com')->build(),
|
||||
);
|
||||
$this->requestGet('/api/v2/admin/product-options');
|
||||
|
||||
$this->assertResponse(
|
||||
$this->client->getResponse(),
|
||||
'admin/product_option/get_product_options',
|
||||
Response::HTTP_OK,
|
||||
);
|
||||
$this->assertResponseSuccessful('admin/product_option/get_product_options');
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function it_creates_a_product_option(): void
|
||||
{
|
||||
$this->setUpDefaultPostHeaders();
|
||||
|
||||
$this->loadFixturesFromFiles([
|
||||
'authentication/api_administrator.yaml',
|
||||
'channel.yaml',
|
||||
]);
|
||||
$header = array_merge($this->logInAdminUser('api@example.com'), self::CONTENT_TYPE_HEADER);
|
||||
|
||||
$this->client->request(
|
||||
method: 'POST',
|
||||
$this->requestPost(
|
||||
uri: '/api/v2/admin/product-options',
|
||||
server: $header,
|
||||
content: json_encode([
|
||||
body: [
|
||||
'code' => 'NEW_COLOR',
|
||||
'translations' => [
|
||||
'en_US' => [
|
||||
|
|
@ -101,37 +92,29 @@ final class ProductOptionsTest extends JsonApiTestCase
|
|||
],
|
||||
],
|
||||
'position' => 9,
|
||||
], \JSON_THROW_ON_ERROR),
|
||||
],
|
||||
);
|
||||
|
||||
$this->assertResponse(
|
||||
$this->client->getResponse(),
|
||||
'admin/product_option/post_product_option_response',
|
||||
Response::HTTP_CREATED,
|
||||
);
|
||||
$this->assertResponseCreated('admin/product_option/post_product_option_response');
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function it_does_not_allow_to_create_a_product_option_with_invalid_data(): void
|
||||
{
|
||||
$this->setUpDefaultPostHeaders();
|
||||
|
||||
$this->loadFixturesFromFiles([
|
||||
'authentication/api_administrator.yaml',
|
||||
'channel.yaml',
|
||||
]);
|
||||
$header = array_merge($this->logInAdminUser('api@example.com'), self::CONTENT_TYPE_HEADER);
|
||||
|
||||
$this->client->request(
|
||||
method: 'POST',
|
||||
$this->requestPost(
|
||||
uri: '/api/v2/admin/product-options',
|
||||
server: $header,
|
||||
content: json_encode([
|
||||
body: [
|
||||
'values' => [
|
||||
[
|
||||
'translations' => [
|
||||
],
|
||||
],
|
||||
['translations' => []],
|
||||
],
|
||||
], \JSON_THROW_ON_ERROR),
|
||||
],
|
||||
);
|
||||
|
||||
$this->assertResponseViolations(
|
||||
|
|
@ -160,21 +143,20 @@ final class ProductOptionsTest extends JsonApiTestCase
|
|||
/** @test */
|
||||
public function it_updates_a_product_option(): void
|
||||
{
|
||||
$this->setUpDefaultPutHeaders();
|
||||
|
||||
$fixtures = $this->loadFixturesFromFiles([
|
||||
'authentication/api_administrator.yaml',
|
||||
'channel.yaml',
|
||||
'product/product_option.yaml',
|
||||
]);
|
||||
$header = array_merge($this->logInAdminUser('api@example.com'), self::CONTENT_TYPE_HEADER);
|
||||
|
||||
/** @var ProductOptionInterface $productOption */
|
||||
$productOption = $fixtures['product_option_color'];
|
||||
|
||||
$this->client->request(
|
||||
method: 'PUT',
|
||||
$this->requestPut(
|
||||
uri: sprintf('/api/v2/admin/product-options/%s', $productOption->getCode()),
|
||||
server: $header,
|
||||
content: json_encode([
|
||||
body: [
|
||||
'values' => [
|
||||
[
|
||||
'code' => 'CHANGED_COLOR',
|
||||
|
|
@ -186,58 +168,52 @@ final class ProductOptionsTest extends JsonApiTestCase
|
|||
],
|
||||
],
|
||||
'position' => 9,
|
||||
], \JSON_THROW_ON_ERROR),
|
||||
],
|
||||
);
|
||||
|
||||
$this->assertResponse(
|
||||
$this->client->getResponse(),
|
||||
'admin/product_option/put_product_option_response',
|
||||
Response::HTTP_OK,
|
||||
);
|
||||
$this->assertResponseSuccessful('admin/product_option/put_product_option_response');
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function it_does_not_update_a_product_option_with_duplicate_locale_translation(): void
|
||||
{
|
||||
$this->setUpDefaultPutHeaders();
|
||||
|
||||
$fixtures = $this->loadFixturesFromFiles([
|
||||
'authentication/api_administrator.yaml',
|
||||
'channel.yaml',
|
||||
'product/product_option.yaml',
|
||||
]);
|
||||
$header = array_merge($this->logInAdminUser('api@example.com'), self::CONTENT_TYPE_HEADER);
|
||||
|
||||
/** @var ProductOptionInterface $productOption */
|
||||
$productOption = $fixtures['product_option_color'];
|
||||
|
||||
$this->client->request(
|
||||
method: 'PUT',
|
||||
$this->requestPut(
|
||||
uri: sprintf('/api/v2/admin/product-options/%s', $productOption->getCode()),
|
||||
server: $header,
|
||||
content: json_encode([
|
||||
body: [
|
||||
'translations' => [
|
||||
'en_US' => [
|
||||
'name' => 'New Color',
|
||||
],
|
||||
],
|
||||
], \JSON_THROW_ON_ERROR),
|
||||
],
|
||||
);
|
||||
|
||||
$this->assertResponse(
|
||||
$this->client->getResponse(),
|
||||
$this->assertResponseUnprocessableEntity(
|
||||
'admin/product_option/put_product_option_with_duplicate_locale_translation',
|
||||
Response::HTTP_UNPROCESSABLE_ENTITY,
|
||||
);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function it_does_not_update_a_product_option_value_with_duplicate_locale_translation(): void
|
||||
{
|
||||
$this->setUpDefaultPutHeaders();
|
||||
|
||||
$fixtures = $this->loadFixturesFromFiles([
|
||||
'authentication/api_administrator.yaml',
|
||||
'channel.yaml',
|
||||
'product/product_option.yaml',
|
||||
]);
|
||||
$header = array_merge($this->logInAdminUser('api@example.com'), self::CONTENT_TYPE_HEADER);
|
||||
|
||||
/** @var ProductOptionInterface $productOption */
|
||||
$productOption = $fixtures['product_option_color'];
|
||||
|
|
@ -246,11 +222,9 @@ final class ProductOptionsTest extends JsonApiTestCase
|
|||
|
||||
$productOptionCode = $productOption->getCode();
|
||||
|
||||
$this->client->request(
|
||||
method: 'PUT',
|
||||
uri: '/api/v2/admin/product-options/' . $productOptionCode,
|
||||
server: $header,
|
||||
content: json_encode([
|
||||
$this->requestPut(
|
||||
uri: sprintf('/api/v2/admin/product-options/%s', $productOptionCode),
|
||||
body: [
|
||||
'values' => [
|
||||
[
|
||||
'@id' => sprintf('/api/v2/admin/product-options/%s/values/%s', $productOptionCode, $productOptionValue->getCode()),
|
||||
|
|
@ -261,19 +235,17 @@ final class ProductOptionsTest extends JsonApiTestCase
|
|||
],
|
||||
],
|
||||
],
|
||||
], \JSON_THROW_ON_ERROR),
|
||||
],
|
||||
);
|
||||
|
||||
$this->assertResponse(
|
||||
$this->client->getResponse(),
|
||||
'admin/product_option/put_product_option_value_with_duplicate_locale_translation',
|
||||
Response::HTTP_UNPROCESSABLE_ENTITY,
|
||||
);
|
||||
$this->assertResponseUnprocessableEntity('admin/product_option/put_product_option_value_with_duplicate_locale_translation');
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function it_deletes_a_product_option(): void
|
||||
{
|
||||
$this->setUpDefaultDeleteHeaders();
|
||||
|
||||
$fixtures = $this->loadFixturesFromFiles([
|
||||
'authentication/api_administrator.yaml',
|
||||
'channel.yaml',
|
||||
|
|
@ -283,11 +255,7 @@ final class ProductOptionsTest extends JsonApiTestCase
|
|||
/** @var ProductOptionInterface $productOption */
|
||||
$productOption = $fixtures['product_option_color'];
|
||||
|
||||
$this->client->request(
|
||||
method: 'DELETE',
|
||||
uri: sprintf('/api/v2/admin/product-options/%s', $productOption->getCode()),
|
||||
server: $this->headerBuilder()->withJsonLdAccept()->withAdminUserAuthorization('api@example.com')->build(),
|
||||
);
|
||||
$this->requestDelete(sprintf('/api/v2/admin/product-options/%s', $productOption->getCode()));
|
||||
|
||||
$this->assertResponseCode($this->client->getResponse(), Response::HTTP_NO_CONTENT);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,15 +20,12 @@ final class ProductOptionsTest extends JsonApiTestCase
|
|||
/** @test */
|
||||
public function it_returns_product_option(): void
|
||||
{
|
||||
$this->setUpDefaultGetHeaders();
|
||||
|
||||
$this->loadFixturesFromFile('product/product_with_many_locales.yaml');
|
||||
|
||||
$this->client->request(
|
||||
method: 'GET',
|
||||
uri: '/api/v2/shop/product-options/COLOR',
|
||||
server: self::CONTENT_TYPE_HEADER,
|
||||
);
|
||||
$response = $this->client->getResponse();
|
||||
$this->requestGet('/api/v2/shop/product-options/COLOR');
|
||||
|
||||
$this->assertResponse($response, 'shop/product_option/get_product_option');
|
||||
$this->assertResponseSuccessful( 'shop/product_option/get_product_option');
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue