database = $this->prophesize(Connection::class)->reveal(); } /** * Tests the getDateField method. * * @covers ::getDateField */ public function testGetDateField() { $date_sql = new SqliteDateSql($this->database); $expected = "strftime('%s', foo.field)"; $this->assertEquals($expected, $date_sql->getDateField('foo.field', TRUE)); $expected = 'foo.field'; $this->assertEquals($expected, $date_sql->getDateField('foo.field', FALSE)); } /** * Tests date formatting replacement. * * @covers ::getDateFormat * * @dataProvider providerTestGetDateFormat */ public function testGetDateFormat($field, $format, $expected) { $date_sql = new SqliteDateSql($this->database); $this->assertEquals($expected, $date_sql->getDateFormat($field, $format)); } /** * Provider for date formatting test. */ public function providerTestGetDateFormat() { return [ ['foo.field', 'Y-y-M-m', "strftime('%Y-%Y-%m-%m', foo.field, 'unixepoch')"], ['bar.field', 'n-F D d l', "strftime('%m-%m %d %d %d', bar.field, 'unixepoch')"], ['baz.bar_field', 'j/W/H-h i s A', "strftime('%d/%W/%H-%H %M %S ', baz.bar_field, 'unixepoch')"], ['foo.field', 'W', "CAST(((strftime('%j', date(strftime('%Y-%m-%d', foo.field, 'unixepoch'), '-3 days', 'weekday 4')) - 1) / 7 + 1) AS NUMERIC)"] ]; } /** * Tests timezone offset formatting. * * @covers ::setFieldTimezoneOffset */ public function testSetFieldTimezoneOffset() { $date_sql = new SqliteDateSql($this->database); $field = 'foobar.field'; $date_sql->setFieldTimezoneOffset($field, 42); $this->assertEquals("(foobar.field + 42)", $field); } /** * Tests setting the database offset. * * @covers ::setTimezoneOffset */ public function testSetTimezoneOffset() { $database = $this->prophesize(Connection::class); $database->query()->shouldNotBeCalled(); $date_sql = new SqliteDateSql($database->reveal()); $date_sql->setTimezoneOffset(42); } }