ValidatorTestCase.php 7.84 KB
Newer Older
doctrine's avatar
doctrine committed
1 2
<?php
class Doctrine_ValidatorTestCase extends Doctrine_UnitTestCase {
3
    public function prepareTables() {
zYne's avatar
zYne committed
4
        $this->tables[] = "ValidatorTest";
5 6
        parent::prepareTables();
    }
doctrine's avatar
doctrine committed
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
    public function testIsValidType() {
        $var = "123";
        $this->assertTrue(Doctrine_Validator::isValidType($var,"string"));
        $this->assertTrue(Doctrine_Validator::isValidType($var,"integer"));
        $this->assertTrue(Doctrine_Validator::isValidType($var,"float"));
        $this->assertFalse(Doctrine_Validator::isValidType($var,"array"));
        $this->assertFalse(Doctrine_Validator::isValidType($var,"object"));

        $var = 123;
        $this->assertTrue(Doctrine_Validator::isValidType($var,"string"));
        $this->assertTrue(Doctrine_Validator::isValidType($var,"integer"));
        $this->assertTrue(Doctrine_Validator::isValidType($var,"float"));
        $this->assertFalse(Doctrine_Validator::isValidType($var,"array"));
        $this->assertFalse(Doctrine_Validator::isValidType($var,"object"));

        $var = 123.12;
        $this->assertTrue(Doctrine_Validator::isValidType($var,"string"));
        $this->assertFalse(Doctrine_Validator::isValidType($var,"integer"));
        $this->assertTrue(Doctrine_Validator::isValidType($var,"float"));
        $this->assertFalse(Doctrine_Validator::isValidType($var,"array"));
        $this->assertFalse(Doctrine_Validator::isValidType($var,"object"));

        $var = '123.12';
        $this->assertTrue(Doctrine_Validator::isValidType($var,"string"));
        $this->assertFalse(Doctrine_Validator::isValidType($var,"integer"));
        $this->assertTrue(Doctrine_Validator::isValidType($var,"float"));
        $this->assertFalse(Doctrine_Validator::isValidType($var,"array"));
        $this->assertFalse(Doctrine_Validator::isValidType($var,"object"));

        $var = '';
        $this->assertTrue(Doctrine_Validator::isValidType($var,"string"));
        $this->assertFalse(Doctrine_Validator::isValidType($var,"integer"));
        $this->assertFalse(Doctrine_Validator::isValidType($var,"float"));
        $this->assertFalse(Doctrine_Validator::isValidType($var,"array"));
        $this->assertFalse(Doctrine_Validator::isValidType($var,"object"));

        $var = null;
        $this->assertTrue(Doctrine_Validator::isValidType($var,"string"));
        $this->assertTrue(Doctrine_Validator::isValidType($var,"integer"));
        $this->assertTrue(Doctrine_Validator::isValidType($var,"float"));
        $this->assertTrue(Doctrine_Validator::isValidType($var,"array"));
        $this->assertTrue(Doctrine_Validator::isValidType($var,"object"));

        $var = 'str';
        $this->assertTrue(Doctrine_Validator::isValidType($var,"string"));
        $this->assertFalse(Doctrine_Validator::isValidType($var,"integer"));
        $this->assertFalse(Doctrine_Validator::isValidType($var,"float"));
        $this->assertFalse(Doctrine_Validator::isValidType($var,"array"));
        $this->assertFalse(Doctrine_Validator::isValidType($var,"object"));

        $var = array();
        $this->assertFalse(Doctrine_Validator::isValidType($var,"string"));
        $this->assertFalse(Doctrine_Validator::isValidType($var,"integer"));
        $this->assertFalse(Doctrine_Validator::isValidType($var,"float"));
        $this->assertTrue(Doctrine_Validator::isValidType($var,"array"));
        $this->assertFalse(Doctrine_Validator::isValidType($var,"object"));
        
        $var = new Exception();
        $this->assertFalse(Doctrine_Validator::isValidType($var,"string"));
        $this->assertFalse(Doctrine_Validator::isValidType($var,"integer"));
        $this->assertFalse(Doctrine_Validator::isValidType($var,"float"));
        $this->assertFalse(Doctrine_Validator::isValidType($var,"array"));
        $this->assertTrue(Doctrine_Validator::isValidType($var,"object"));
    }

72
    public function testValidate2() {
zYne's avatar
zYne committed
73
        $test = new ValidatorTest();
74
        $test->mymixed = "message";
75 76 77
        $test->myrange = 1;
        $test->myregexp = '123a';
        
78 79 80 81 82 83
        $validator = new Doctrine_Validator();
        $validator->validateRecord($test);

        $stack = $validator->getErrorStack();

        $this->assertTrue(is_array($stack));
zYne's avatar
zYne committed
84 85
        $this->assertTrue(isset($stack['ValidatorTest'][0]));
        $stack = $stack['ValidatorTest'][0];
86

87

88
        $this->assertEqual($stack['mystring'], Doctrine_Validator::ERR_NOTNULL);
89
        $this->assertEqual($stack['myemail2'], Doctrine_Validator::ERR_NOTBLANK);
90 91
        $this->assertEqual($stack['myrange'], Doctrine_Validator::ERR_RANGE);
        $this->assertEqual($stack['myregexp'], Doctrine_Validator::ERR_REGEXP);
92 93
        $test->mystring = 'str';

94

95 96
        $test->save();
    }
97 98
    public function testEmailValidation() {
    }
99

doctrine's avatar
doctrine committed
100
    public function testValidate() {
zYne's avatar
zYne committed
101
        $user = $this->connection->getTable("User")->find(4); 
doctrine's avatar
doctrine committed
102 103 104 105 106

        $set = array("password" => "this is an example of too long password",
                     "loginname" => "this is an example of too long loginname",
                     "name" => "valid name",
                     "created" => "invalid");
107 108
        $user->setArray($set);
        $email = $user->Email;
doctrine's avatar
doctrine committed
109 110
        $email->address = "zYne@invalid";

111
        $this->assertTrue($user->getModified() == $set);
doctrine's avatar
doctrine committed
112 113

        $validator = new Doctrine_Validator();
114
        $validator->validateRecord($user);
doctrine's avatar
doctrine committed
115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
        $validator->validateRecord($email);

        $stack = $validator->getErrorStack();

        $this->assertTrue(is_array($stack));
        $this->assertEqual($stack["User"][0]["loginname"], Doctrine_Validator::ERR_LENGTH);
        $this->assertEqual($stack["User"][0]["password"], Doctrine_Validator::ERR_LENGTH);
        $this->assertEqual($stack["User"][0]["created"], Doctrine_Validator::ERR_TYPE);

        $this->assertEqual($stack["Email"][0]["address"], Doctrine_Validator::ERR_VALID);
        $email->address = "arnold@example.com";

        $validator->validateRecord($email);
        $stack = $validator->getErrorStack();
        $this->assertEqual($stack["Email"][1]["address"], Doctrine_Validator::ERR_UNIQUE);

    }
132

doctrine's avatar
doctrine committed
133 134 135 136
    public function testIsValidEmail() {

        $validator = new Doctrine_Validator_Email();

zYne's avatar
zYne committed
137
        $email = $this->connection->create("Email");
doctrine's avatar
doctrine committed
138 139 140 141
        $this->assertFalse($validator->validate($email,"address","example@example",null));
        $this->assertFalse($validator->validate($email,"address","example@@example",null));
        $this->assertFalse($validator->validate($email,"address","example@example.",null));
        $this->assertFalse($validator->validate($email,"address","example@e..",null));
doctrine's avatar
doctrine committed
142

doctrine's avatar
doctrine committed
143
        $this->assertFalse($validator->validate($email,"address","example@e..",null));
zYne's avatar
zYne committed
144

doctrine's avatar
doctrine committed
145 146 147 148

    }
    public function testSave() {
        $this->manager->setAttribute(Doctrine::ATTR_VLD, true);
zYne's avatar
zYne committed
149
        $user = $this->connection->getTable("User")->find(4);
doctrine's avatar
doctrine committed
150
        try {
151 152
            $user->name = "this is an example of too long name not very good example but an example nevertheless";
            $user->save();
doctrine's avatar
doctrine committed
153 154 155 156 157
        } catch(Doctrine_Validator_Exception $e) {
            $this->assertEqual($e->getErrorStack(),array("User" => array(array("name" => 0))));
        }

        try {
zYne's avatar
zYne committed
158
            $user = $this->connection->create("User");
doctrine's avatar
doctrine committed
159 160 161 162 163 164 165 166 167
            $user->Email->address = "jackdaniels@drinkmore.info...";
            $user->name = "this is an example of too long user name not very good example but an example nevertheles";
            $user->save();
        } catch(Doctrine_Validator_Exception $e) {
            $a = $e->getErrorStack();
        }
        $this->assertTrue(is_array($a));
        $this->assertEqual($a["Email"][0]["address"], Doctrine_Validator::ERR_VALID);
        $this->assertEqual($a["User"][0]["name"], Doctrine_Validator::ERR_LENGTH);
168
        $this->manager->setAttribute(Doctrine::ATTR_VLD, false);
doctrine's avatar
doctrine committed
169
    }
doctrine's avatar
doctrine committed
170

doctrine's avatar
doctrine committed
171 172
}
?>