/** * @covers DmMailer\InputFilter\Template * @dataProvider inputDataProvider * * @param mixed $nameData * @param array $expectedMessages * @param string $inputName */ public function testCampaignValidation($nameData, array $expectedMessages, $inputName) { $this->sut->setData([$inputName => $nameData]); $this->sut->isValid(); $actualMessages = $this->sut->getMessages(); $this->assertInternalType('array', $actualMessages); if ($expectedMessages) { $this->assertArrayHasKey($inputName, $actualMessages); $this->assertInternalType('array', $actualMessages[$inputName]); $message = 'Found message keys: ' . implode(', ', array_keys($actualMessages[$inputName])); foreach ($expectedMessages as $expectedMessage) { $this->assertArrayHasKey($expectedMessage, $actualMessages[$inputName], $message); } } else { $message = ''; if (isset($actualMessages[$inputName])) { $message = 'Found message keys: ' . implode(', ', array_keys($actualMessages[$inputName])); } $this->assertArrayNotHasKey($inputName, $actualMessages, $message); } }