Completed
Push — 1.0 ( 2fbcac...32464f )
by Kamil
116:20 queued 93:29
created

ValidTextAttributeConfigurationValidatorSpec   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 60
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 7

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 6
lcom 0
cbo 7
dl 0
loc 60
rs 10
c 1
b 0
f 0

6 Methods

Rating   Name   Duplication   Size   Complexity  
A let() 0 4 1
A it_is_a_constraint_validator() 0 4 1
A it_adds_a_violation_if_max_entries_value_is_lower_than_min_entries_value() 0 13 1
A it_does_nothing_if_an_attribute_is_not_a_text_type() 0 12 1
A it_throws_an_exception_if_validated_value_is_not_an_attribute() 0 9 1
A it_throws_an_exception_if_constraint_is_not_a_valid_text_attribute_configuration_constraint() 0 10 1
1
<?php
2
3
/*
4
 * This file is part of the Sylius package.
5
 *
6
 * (c) Paweł Jędrzejewski
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
declare(strict_types=1);
13
14
namespace spec\Sylius\Bundle\AttributeBundle\Validator\Constraints;
15
16
use PhpSpec\ObjectBehavior;
17
use Prophecy\Argument;
18
use Sylius\Bundle\AttributeBundle\Validator\Constraints\ValidSelectAttributeConfiguration;
19
use Sylius\Bundle\AttributeBundle\Validator\Constraints\ValidTextAttributeConfiguration;
20
use Sylius\Component\Attribute\AttributeType\SelectAttributeType;
21
use Sylius\Component\Attribute\AttributeType\TextAttributeType;
22
use Sylius\Component\Attribute\Model\AttributeInterface;
23
use Symfony\Component\Validator\ConstraintValidator;
24
use Symfony\Component\Validator\Context\ExecutionContextInterface;
25
26
final class ValidTextAttributeConfigurationValidatorSpec extends ObjectBehavior
27
{
28
    function let(ExecutionContextInterface $context): void
29
    {
30
        $this->initialize($context);
31
    }
32
33
    function it_is_a_constraint_validator(): void
34
    {
35
        $this->shouldHaveType(ConstraintValidator::class);
36
    }
37
38
    function it_adds_a_violation_if_max_entries_value_is_lower_than_min_entries_value(
39
        ExecutionContextInterface $context,
40
        AttributeInterface $attribute
41
    ): void {
42
        $constraint = new ValidTextAttributeConfiguration();
43
44
        $attribute->getType()->willReturn(TextAttributeType::TYPE);
45
        $attribute->getConfiguration()->willReturn(['min' => 6, 'max' => 4]);
46
47
        $context->addViolation(Argument::any())->shouldBeCalled();
48
49
        $this->validate($attribute, $constraint);
50
    }
51
52
    function it_does_nothing_if_an_attribute_is_not_a_text_type(
53
        ExecutionContextInterface $context,
54
        AttributeInterface $attribute
55
    ): void {
56
        $constraint = new ValidTextAttributeConfiguration();
57
58
        $attribute->getType()->willReturn(SelectAttributeType::TYPE);
59
60
        $context->addViolation(Argument::any())->shouldNotBeCalled();
61
62
        $this->validate($attribute, $constraint);
63
    }
64
65
    function it_throws_an_exception_if_validated_value_is_not_an_attribute(): void
66
    {
67
        $constraint = new ValidTextAttributeConfiguration();
68
69
        $this
70
            ->shouldThrow(\InvalidArgumentException::class)
71
            ->during('validate', ['badObject', $constraint])
72
        ;
73
    }
74
75
    function it_throws_an_exception_if_constraint_is_not_a_valid_text_attribute_configuration_constraint(
76
        AttributeInterface $attribute
77
    ): void {
78
        $constraint = new ValidSelectAttributeConfiguration;
79
80
        $this
81
            ->shouldThrow(\InvalidArgumentException::class)
82
            ->during('validate', [$attribute, $constraint])
83
        ;
84
    }
85
}
86