/** * @test * @covers SlimApp\HasRequiredParamsTrait::hasRequiredParams * @param array $requiredParams The required parameters * @param array $data The data to be checked * @param boolean $returnValue The value returned by hasRequiredParams() * @dataProvider provider_hasRequiredParams_returns_true_if_data_contains_required_parameters * @see https://sandro-keil.de/blog/2015/08/31/phpunit-with-peek-and-poke-no-more-reflection/ */ function hasRequiredParams_returns_true_if_data_contains_required_parameters(array $requiredParams, array $data, $returnValue) { // Get mock for our trait $trait = $this->getMockForTrait('\\SlimApp\\HasRequiredParamsTrait'); // Proxy the protected properties and methods $hasRequiredParamsTrait = new \SebastianBergmann\PeekAndPoke\Proxy($trait); // Now we can set the protected params... $hasRequiredParamsTrait->setRequiredParams($requiredParams); // ... and run the protected method $result = $hasRequiredParamsTrait->hasRequiredParams($data); $this->assertEquals($returnValue, $result); }
/** * @test * @covers SlimApp\Validator::unique * @param boolean|string $expectedResult The result returned by the function * @param boolean $ruleValue The value for the rule, stores in the rules property * @param mixed $value The value to validate * @param mixed $resultFindRow The result returned by findRow * @dataProvider provider_unique_returns_true_if_value_is_unique_error_message_otherwise */ public function unique_returns_true_if_value_is_unique_error_message_otherwise($expectedResult, $ruleValue, $value, $resultFindRow) { $table = $this->getMockBuilder('SlimApp\\Db\\DbTable')->setMethods(['getTableName'])->getMock(); $dbTable = new \SebastianBergmann\PeekAndPoke\Proxy($table); $model = $this->getMockBuilder('SlimApp\\Model')->setMockClassName('User')->getMock(); $mapper = $this->getMockBuilder('SlimApp\\Db\\Mapper')->setMethods(['getDbTable', 'getModel', 'findRow'])->getMock(); $mockMapper = $this->getMockBuilder('SlimApp\\Validator')->setConstructorArgs([$mapper])->getMockForAbstractClass(); $mapper->method('getDbTable')->will($this->returnValue($dbTable)); $dbTable->method('getTableName')->will($this->returnValue('Users')); $mapper->method('getModel')->will($this->returnValue($model)); $mapper->method('findRow')->will($this->returnValue($resultFindRow)); $validator = new \SebastianBergmann\PeekAndPoke\Proxy($mockMapper); $rules = ['fieldName' => ['unique' => $ruleValue]]; $validator->rules = $rules; $result = $validator->unique($ruleValue, 'fieldName', $value); $this->assertEquals($expectedResult, $result); }
/** * @test * @param string $tableName * @param array $columnNames * @param array $values * @param string $where * @uses SlimApp\Db\DbTable::insert * @uses SlimApp\Db\DbTable::findRow * @dataProvider provider_delete_deletes_data_and_returns_true_on_success */ public function delete_deletes_data_and_returns_true_on_success($tableName, $columnNames, $values, $where) { $config = (require __DIR__ . '/database-config-for-dbunit.php'); $table = $this->getMockBuilder('SlimApp\\Db\\DbTable')->setConstructorArgs([$config])->getMockForAbstractClass(); $dbTable = new \SebastianBergmann\PeekAndPoke\Proxy($table); // Set tablename manually (set in subclasses, not in abstract class...) $dbTable->tableName = $tableName; // Insert row and then delete it $dbTable->insert($columnNames, $values); $resultDelete = $dbTable->delete($where); // Check if row deleted $result = $dbTable->findRow($where); //die(var_dump($result)); $this->assertTrue($resultDelete); $this->assertFalse($result); }