object = $this->getMockBuilder(NotificationPaymentMethodActive::class)->getMockForAbstractClass(); $this->assertTrue(class_exists(NotificationPaymentMethodActive::class)); $this->assertInstanceOf(NotificationPaymentMethodActive::class, $this->object); } /** * Test property "object" * @dataProvider validObjectDataProvider * @param mixed $value * * @return void * @throws Exception */ public function testAmount(mixed $value): void { $instance = $this->getTestInstance(); $instance->setObject($value); self::assertNotNull($instance->getObject()); self::assertNotNull($instance->object); self::assertEquals($value, is_array($value) ? $instance->getObject()->toArray() : $instance->getObject()); self::assertEquals($value, is_array($value) ? $instance->object->toArray() : $instance->object); } /** * Test invalid property "object" * @dataProvider invalidObjectDataProvider * @param mixed $value * @param string $exceptionClass * * @return void */ public function testInvalidObject(mixed $value, string $exceptionClass): void { $instance = $this->getTestInstance(); $this->expectException($exceptionClass); $instance->setObject($value); } /** * @return array[] * @throws Exception */ public function validObjectDataProvider(): array { $instance = $this->getTestInstance(); return $this->getValidDataProviderByType($instance->getValidator()->getRulesByPropName('_object')); } /** * @return array[] * @throws Exception */ public function invalidObjectDataProvider(): array { $instance = $this->getTestInstance(); return $this->getInvalidDataProviderByType($instance->getValidator()->getRulesByPropName('_object')); } /** * Test valid method "fromArray" * @dataProvider validClassDataProvider * @param mixed $value * * @return void */ public function testFromArray(mixed $value): void { $instance = $this->getTestInstance(); $instance->fromArray($value->toArray()); self::assertEquals($value['object'], $instance->getObject()); } /** * @return array * @throws Exception */ public function validClassDataProvider(): array { $instance = $this->getTestInstance(); $objects = $this->validObjectDataProvider(); $instance->setObject(array_shift($objects[0])); return [[$instance]]; } /** * @dataProvider invalidDataProvider */ public function testInvalidFromArray(array $options): void { $this->expectException(InvalidArgumentException::class); $this->getTestInstance($options); } /** * @return \array[][] */ public static function invalidDataProvider(): array { return [ [ [ 'type' => SettlementType::PREPAYMENT, ], ], [ [ 'event' => SettlementType::PREPAYMENT, ], ], [ [ 'object' => [], ], ], ]; } }