/** * @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); }