6 declare(strict_types=1);
12 use Magento\Framework\Validation\ValidationResultFactory;
17 use PHPUnit\Framework\TestCase;
24 private $objectManager;
34 private $validationResult;
39 private $snakeToCamelCaseConverter;
42 private $validationResultFactory;
47 private $reservationBuilder;
51 $this->objectManager = $this->getMockBuilder(ObjectManagerInterface::class)->getMock();
52 $this->snakeToCamelCaseConverter = $this->getMockBuilder(SnakeToCamelCaseConverter::class)->getMock();
53 $this->reservation = $this->getMockBuilder(ReservationInterface::class)->getMock();
54 $this->validationResult = $this->getMockBuilder(ValidationResult::class)
55 ->disableOriginalConstructor()
57 $this->validationResultFactory = $this->getMockBuilder(ValidationResultFactory::class)->getMock();
59 $this->reservationBuilder = (
new ObjectManager($this))->getObject(
60 ReservationBuilder::class,
62 'objectManager' => $this->objectManager,
63 'snakeToCamelCaseConverter' => $this->snakeToCamelCaseConverter,
64 'validationResultFactory' => $this->validationResultFactory,
79 $reservationMappedData = [
80 'reservationId' =>
null,
84 'metadata' =>
'some meta data',
87 $this->snakeToCamelCaseConverter
88 ->expects($this->once())
90 ->with(array_keys($reservationData))
91 ->willReturn(array_keys($reservationMappedData));
94 ->expects($this->once())
96 ->with(ReservationInterface::class, $reservationMappedData)
97 ->willReturn($this->reservation);
99 $this->validationResultFactory
100 ->expects($this->once())
102 ->willReturn($this->validationResult);
104 $this->validationResult
105 ->expects($this->once())
114 self::assertEquals($this->reservation, $this->reservationBuilder->build());
126 $this->validationResultFactory
127 ->expects($this->once())
129 ->willReturn($this->validationResult);
131 $this->validationResult
132 ->expects($this->once())
136 $method = $firstSetter[
'method'];
137 $argument = $firstSetter[
'argument'];
138 $this->reservationBuilder->$method($argument);
140 $method = $secondSetter[
'method'];
141 $argument = $secondSetter[
'argument'];
142 $this->reservationBuilder->$method($argument);
144 $this->reservationBuilder->build();
153 'with_missing_stock_id' => [
154 [
'method' =>
'setSku',
'argument' =>
'somesku'],
155 [
'method' =>
'setQuantity',
'argument' => 11]
157 'with_missing_sku' => [
158 [
'method' =>
'setStockId',
'argument' => 1],
159 [
'method' =>
'setQuantity',
'argument' => 11],
161 'with_missing_qty' => [
162 [
'method' =>
'setStockId',
'argument' => 1],
163 [
'method' =>
'setSku',
'argument' =>
'somesku'],
testThrowValidationException(array $firstSetter, array $secondSetter)