Browse Source

Add negative timezone in tests for date-only with non-UTC timezone (#18432)

tags/2.0.40
Andriy Borysov 4 years ago committed by GitHub
parent
commit
8dc3131435
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 190
      tests/framework/validators/DateValidatorTest.php

190
tests/framework/validators/DateValidatorTest.php

@ -687,6 +687,196 @@ class DateValidatorTest extends TestCase
$this->assertFalse($model->hasErrors('attr_date'));
$this->assertFalse($model->hasErrors('attr_timestamp'));
$this->assertSame(1497477600, $model->attr_timestamp);
// ICU, timeZone => America/Jamaica, timestampAttributeTimeZone => UTC (default)
$val = new DateValidator([
'format' => 'yyyy-MM-dd',
'timestampAttribute' => 'attr_timestamp',
'timestampAttributeFormat' => 'yyyy-MM-dd HH:mm:ss',
'timeZone' => 'America/Jamaica',
]);
$model = new FakedValidationModel();
$model->attr_date = '2017-06-15';
$model->attr_timestamp = true;
$val->validateAttribute($model, 'attr_date');
$this->assertFalse($model->hasErrors('attr_date'));
$this->assertFalse($model->hasErrors('attr_timestamp'));
$this->assertSame('2017-06-15 00:00:00', $model->attr_timestamp);
// PHP, timeZone => America/Jamaica, timestampAttributeTimeZone => UTC (default)
$val = new DateValidator([
'format' => 'php:Y-m-d',
'timestampAttribute' => 'attr_timestamp',
'timestampAttributeFormat' => 'yyyy-MM-dd HH:mm:ss',
'timeZone' => 'America/Jamaica',
]);
$model = new FakedValidationModel();
$model->attr_date = '2017-06-15';
$model->attr_timestamp = true;
$val->validateAttribute($model, 'attr_date');
$this->assertFalse($model->hasErrors('attr_date'));
$this->assertFalse($model->hasErrors('attr_timestamp'));
$this->assertSame('2017-06-15 00:00:00', $model->attr_timestamp);
// ICU, timeZone => UTC (default), timestampAttributeTimeZone => America/Jamaica
$val = new DateValidator([
'format' => 'yyyy-MM-dd',
'timestampAttribute' => 'attr_timestamp',
'timestampAttributeFormat' => 'yyyy-MM-dd HH:mm:ss',
'timeZone' => 'UTC',
'timestampAttributeTimeZone' => 'America/Jamaica',
]);
$model = new FakedValidationModel();
$model->attr_date = '2017-06-15';
$model->attr_timestamp = true;
$val->validateAttribute($model, 'attr_date');
$this->assertFalse($model->hasErrors('attr_date'));
$this->assertFalse($model->hasErrors('attr_timestamp'));
$this->assertSame('2017-06-14 19:00:00', $model->attr_timestamp);
// PHP, timeZone => UTC (default), timestampAttributeTimeZone => America/Jamaica
$val = new DateValidator([
'format' => 'php:Y-m-d',
'timestampAttribute' => 'attr_timestamp',
'timestampAttributeFormat' => 'yyyy-MM-dd HH:mm:ss',
'timeZone' => 'UTC',
'timestampAttributeTimeZone' => 'America/Jamaica',
]);
$model = new FakedValidationModel();
$model->attr_date = '2017-06-15';
$model->attr_timestamp = true;
$val->validateAttribute($model, 'attr_date');
$this->assertFalse($model->hasErrors('attr_date'));
$this->assertFalse($model->hasErrors('attr_timestamp'));
$this->assertSame('2017-06-14 19:00:00', $model->attr_timestamp);
// ICU, timeZone => America/Jamaica, timestampAttributeTimeZone => America/Jamaica
$val = new DateValidator([
'format' => 'yyyy-MM-dd',
'timestampAttribute' => 'attr_timestamp',
'timestampAttributeFormat' => 'yyyy-MM-dd HH:mm:ss',
'timeZone' => 'America/Jamaica',
'timestampAttributeTimeZone' => 'America/Jamaica',
]);
$model = new FakedValidationModel();
$model->attr_date = '2017-06-15';
$model->attr_timestamp = true;
$val->validateAttribute($model, 'attr_date');
$this->assertFalse($model->hasErrors('attr_date'));
$this->assertFalse($model->hasErrors('attr_timestamp'));
$this->assertSame('2017-06-14 19:00:00', $model->attr_timestamp);
// PHP, timeZone => America/Jamaica, timestampAttributeTimeZone => America/Jamaica
$val = new DateValidator([
'format' => 'php:Y-m-d',
'timestampAttribute' => 'attr_timestamp',
'timestampAttributeFormat' => 'yyyy-MM-dd HH:mm:ss',
'timeZone' => 'America/Jamaica',
'timestampAttributeTimeZone' => 'America/Jamaica',
]);
$model = new FakedValidationModel();
$model->attr_date = '2017-06-15';
$model->attr_timestamp = true;
$val->validateAttribute($model, 'attr_date');
$this->assertFalse($model->hasErrors('attr_date'));
$this->assertFalse($model->hasErrors('attr_timestamp'));
$this->assertSame('2017-06-14 19:00:00', $model->attr_timestamp);
// ICU, defaultTimeZone => America/Jamaica, timestampAttributeTimeZone => UTC (default)
$val = new DateValidator([
'format' => 'yyyy-MM-dd',
'timestampAttribute' => 'attr_timestamp',
'timestampAttributeFormat' => 'yyyy-MM-dd HH:mm:ss',
'defaultTimeZone' => 'America/Jamaica',
'timestampAttributeTimeZone' => 'UTC',
]);
$model = new FakedValidationModel();
$model->attr_date = '2020-01-27';
$model->attr_timestamp = true;
$val->validateAttribute($model, 'attr_date');
$this->assertFalse($model->hasErrors('attr_date'));
$this->assertFalse($model->hasErrors('attr_timestamp'));
$this->assertSame('2020-01-27 05:00:00', $model->attr_timestamp);
// PHP, defaultTimeZone => America/Jamaica, timestampAttributeTimeZone => UTC (default)
$val = new DateValidator([
'format' => 'php:Y-m-d',
'timestampAttribute' => 'attr_timestamp',
'timestampAttributeFormat' => 'yyyy-MM-dd HH:mm:ss',
'defaultTimeZone' => 'America/Jamaica',
'timestampAttributeTimeZone' => 'UTC',
]);
$model = new FakedValidationModel();
$model->attr_date = '2020-01-27';
$model->attr_timestamp = true;
$val->validateAttribute($model, 'attr_date');
$this->assertFalse($model->hasErrors('attr_date'));
$this->assertFalse($model->hasErrors('attr_timestamp'));
$this->assertSame('2020-01-27 05:00:00', $model->attr_timestamp);
// ICU, defaultTimeZone => UTC (default), timestampAttributeTimeZone => America/Jamaica
$val = new DateValidator([
'format' => 'yyyy-MM-dd',
'timestampAttribute' => 'attr_timestamp',
'timestampAttributeFormat' => 'yyyy-MM-dd HH:mm:ss',
'defaultTimeZone' => 'UTC',
'timestampAttributeTimeZone' => 'America/Jamaica',
]);
$model = new FakedValidationModel();
$model->attr_date = '2020-01-27';
$model->attr_timestamp = true;
$val->validateAttribute($model, 'attr_date');
$this->assertFalse($model->hasErrors('attr_date'));
$this->assertFalse($model->hasErrors('attr_timestamp'));
$this->assertSame('2020-01-26 19:00:00', $model->attr_timestamp);
// PHP, defaultTimeZone => UTC (default), timestampAttributeTimeZone => America/Jamaica
$val = new DateValidator([
'format' => 'php:Y-m-d',
'timestampAttribute' => 'attr_timestamp',
'timestampAttributeFormat' => 'yyyy-MM-dd HH:mm:ss',
'defaultTimeZone' => 'UTC',
'timestampAttributeTimeZone' => 'America/Jamaica',
]);
$model = new FakedValidationModel();
$model->attr_date = '2020-01-27';
$model->attr_timestamp = true;
$val->validateAttribute($model, 'attr_date');
$this->assertFalse($model->hasErrors('attr_date'));
$this->assertFalse($model->hasErrors('attr_timestamp'));
$this->assertSame('2020-01-26 19:00:00', $model->attr_timestamp);
// ICU, defaultTimeZone => America/Jamaica, timestampAttributeTimeZone => America/Jamaica
$val = new DateValidator([
'format' => 'yyyy-MM-dd',
'timestampAttribute' => 'attr_timestamp',
'timestampAttributeFormat' => 'yyyy-MM-dd HH:mm:ss',
'defaultTimeZone' => 'America/Jamaica',
'timestampAttributeTimeZone' => 'America/Jamaica',
]);
$model = new FakedValidationModel();
$model->attr_date = '2020-01-27';
$model->attr_timestamp = true;
$val->validateAttribute($model, 'attr_date');
$this->assertFalse($model->hasErrors('attr_date'));
$this->assertFalse($model->hasErrors('attr_timestamp'));
$this->assertSame('2020-01-27 00:00:00', $model->attr_timestamp);
// PHP, defaultTimeZone => America/Jamaica, timestampAttributeTimeZone => America/Jamaica
$val = new DateValidator([
'format' => 'php:Y-m-d',
'timestampAttribute' => 'attr_timestamp',
'timestampAttributeFormat' => 'yyyy-MM-dd HH:mm:ss',
'defaultTimeZone' => 'America/Jamaica',
'timestampAttributeTimeZone' => 'America/Jamaica',
]);
$model = new FakedValidationModel();
$model->attr_date = '2020-01-27';
$model->attr_timestamp = true;
$val->validateAttribute($model, 'attr_date');
$this->assertFalse($model->hasErrors('attr_date'));
$this->assertFalse($model->hasErrors('attr_timestamp'));
$this->assertSame('2020-01-27 00:00:00', $model->attr_timestamp);
}
/**

Loading…
Cancel
Save