MyShaarli/tests/TimeZoneTest.php
ArthurHoaro ae3aa96898 Change timezone data structure send to the templates
The goal of this is to be able to adapt the timezone form
in template without hacking the HTML already rendered.

  * there are two arrays available:
    * `continents` which contains only a list of available continents
    * `cities` which contains a list of available timezone cities, associated with their continent

Note: there are two distinct array because RainTPL doesn't support nested loop very well.
2017-04-03 19:24:55 +02:00

102 lines
2.8 KiB
PHP

<?php
/**
* TimeZone's tests
*/
require_once 'application/TimeZone.php';
/**
* Unitary tests for timezone utilities
*/
class TimeZoneTest extends PHPUnit_Framework_TestCase
{
/**
* @var array of timezones
*/
protected $installedTimezones;
public function setUp()
{
$this->installedTimezones = [
'Antarctica/Syowa',
'Europe/London',
'Europe/Paris',
'UTC'
];
}
/**
* Generate a timezone selection form
*/
public function testGenerateTimeZoneForm()
{
$expected = [
'continents' => [
'Antarctica',
'Europe',
'UTC',
'selected' => '',
],
'cities' => [
['continent' => 'Antarctica', 'city' => 'Syowa'],
['continent' => 'Europe', 'city' => 'London'],
['continent' => 'Europe', 'city' => 'Paris'],
['continent' => 'UTC', 'city' => 'UTC'],
'selected' => '',
]
];
list($continents, $cities) = generateTimeZoneData($this->installedTimezones);
$this->assertEquals($expected['continents'], $continents);
$this->assertEquals($expected['cities'], $cities);
}
/**
* Generate a timezone selection form, with a preselected timezone
*/
public function testGenerateTimeZoneFormPreselected()
{
$expected = [
'continents' => [
'Antarctica',
'Europe',
'UTC',
'selected' => 'Antarctica',
],
'cities' => [
['continent' => 'Antarctica', 'city' => 'Syowa'],
['continent' => 'Europe', 'city' => 'London'],
['continent' => 'Europe', 'city' => 'Paris'],
['continent' => 'UTC', 'city' => 'UTC'],
'selected' => 'Syowa',
]
];
list($continents, $cities) = generateTimeZoneData($this->installedTimezones, 'Antarctica/Syowa');
$this->assertEquals($expected['continents'], $continents);
$this->assertEquals($expected['cities'], $cities);
}
/**
* Check valid timezones
*/
public function testValidTimeZone()
{
$this->assertTrue(isTimeZoneValid('America', 'Argentina/Ushuaia'));
$this->assertTrue(isTimeZoneValid('Europe', 'Oslo'));
}
/**
* Check invalid timezones
*/
public function testInvalidTimeZone()
{
$this->assertFalse(isTimeZoneValid('CEST', 'CEST'));
$this->assertFalse(isTimeZoneValid('Europe', 'Atlantis'));
$this->assertFalse(isTimeZoneValid('Middle_Earth', 'Moria'));
$this->assertFalse(isTimeZoneValid('UTC', 'UTC'));
}
}