MongoIdValidatorTest.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <?php
  2. namespace yiiunit\extensions\mongodb\validators;
  3. use MongoDB\BSON\ObjectID;
  4. use yii\base\Model;
  5. use yii\mongodb\validators\MongoIdValidator;
  6. use yiiunit\extensions\mongodb\TestCase;
  7. class MongoIdValidatorTest extends TestCase
  8. {
  9. protected function setUp()
  10. {
  11. parent::setUp();
  12. $this->mockApplication();
  13. }
  14. public function testValidateValue()
  15. {
  16. $validator = new MongoIdValidator();
  17. $this->assertFalse($validator->validate('id'));
  18. $this->assertTrue($validator->validate(new ObjectID('4d3ed089fb60ab534684b7e9')));
  19. $this->assertTrue($validator->validate('4d3ed089fb60ab534684b7e9'));
  20. }
  21. public function testValidateAttribute()
  22. {
  23. $model = new MongoIdTestModel();
  24. $validator = new MongoIdValidator(['attributes' => ['id']]);
  25. $model->getValidators()->append($validator);
  26. $model->id = 'id';
  27. $this->assertFalse($model->validate());
  28. $model->id = new ObjectID('4d3ed089fb60ab534684b7e9');
  29. $this->assertTrue($model->validate());
  30. $model->id = '4d3ed089fb60ab534684b7e9';
  31. $this->assertTrue($model->validate());
  32. }
  33. /**
  34. * @depends testValidateAttribute
  35. */
  36. public function testConvertValue()
  37. {
  38. $model = new MongoIdTestModel();
  39. $validator = new MongoIdValidator(['attributes' => ['id']]);
  40. $model->getValidators()->append($validator);
  41. $validator->forceFormat = null;
  42. $model->id = '4d3ed089fb60ab534684b7e9';
  43. $model->validate();
  44. $this->assertTrue(is_string($model->id));
  45. $model->id = new ObjectID('4d3ed089fb60ab534684b7e9');
  46. $model->validate();
  47. $this->assertTrue($model->id instanceof ObjectID);
  48. $validator->forceFormat = 'object';
  49. $model->id = '4d3ed089fb60ab534684b7e9';
  50. $model->validate();
  51. $this->assertTrue($model->id instanceof ObjectID);
  52. $validator->forceFormat = 'string';
  53. $model->id = new ObjectID('4d3ed089fb60ab534684b7e9');
  54. $model->validate();
  55. $this->assertTrue(is_string($model->id));
  56. }
  57. }
  58. class MongoIdTestModel extends Model
  59. {
  60. public $id;
  61. }