Skip to content
This repository was archived by the owner on Jan 5, 2023. It is now read-only.

Commit 811c574

Browse files
authored
Add a few tests for FirestoreDocument and fix odd behaviour of getCreatedTime (#15)
Added few test cases.
1 parent 25bd6f0 commit 811c574

File tree

2 files changed

+126
-0
lines changed

2 files changed

+126
-0
lines changed

src/FirestoreDocument.php

+8
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,10 @@ public function getAbsoluteName()
7878
*/
7979
public function getCreatedTime()
8080
{
81+
if (is_null($this->createTime)) {
82+
return null;
83+
}
84+
8185
return new DateTime($this->createTime);
8286
}
8387

@@ -86,6 +90,10 @@ public function getCreatedTime()
8690
*/
8791
public function getUpdatedTime()
8892
{
93+
if (is_null($this->updateTime)) {
94+
return null;
95+
}
96+
8997
return new DateTime($this->updateTime);
9098
}
9199

tests/FirestoreDocumentTest.php

+118
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
<?php
2+
3+
namespace MrShan0\PHPFirestore\Tests;
4+
5+
use MrShan0\PHPFirestore\FirestoreDocument;
6+
use PHPUnit\Framework\TestCase;
7+
8+
class FirestoreDocumentTest extends TestCase
9+
{
10+
/** @test */
11+
public function get_absolute_name_returns_name()
12+
{
13+
$document = new FirestoreDocument(
14+
[
15+
'name' => 'projects/database/(default)/documents/collection/item',
16+
]
17+
);
18+
19+
$this->assertSame('projects/database/(default)/documents/collection/item', $document->getAbsoluteName());
20+
}
21+
22+
23+
/** @test */
24+
public function get_absolute_name_returns_null_if_no_document_provided()
25+
{
26+
$document = new FirestoreDocument();
27+
28+
$this->assertNull($document->getAbsoluteName());
29+
}
30+
31+
32+
/** @test */
33+
public function get_created_time_returns_created_time()
34+
{
35+
$document = new FirestoreDocument(
36+
[
37+
'name' => 'projects/database/(default)/documents/collection/item',
38+
'createTime' => '2018-12-24T15:00:00.123456Z',
39+
'updateTime' => '2018-12-24T16:00:00.123456Z',
40+
'fields' => [
41+
'myKey' => [
42+
'stringValue' => 'my value'
43+
]
44+
],
45+
]
46+
);
47+
48+
$this->assertEquals(new \DateTime('2018-12-24T15:00:00.123456Z'), $document->getCreatedTime());
49+
}
50+
51+
52+
/** @test */
53+
public function get_updated_time_returns_updated_time()
54+
{
55+
$document = new FirestoreDocument(
56+
[
57+
'name' => 'projects/database/(default)/documents/collection/item',
58+
'createTime' => '2018-12-24T15:00:00.123456Z',
59+
'updateTime' => '2018-12-24T16:00:00.123456Z',
60+
'fields' => [
61+
'myKey' => [
62+
'stringValue' => 'my value'
63+
]
64+
],
65+
]
66+
);
67+
68+
$this->assertEquals(new \DateTime('2018-12-24T16:00:00.123456Z'), $document->getUpdatedTime());
69+
}
70+
71+
72+
/** @test */
73+
public function get_created_time_returns_null_if_document_does_not_exist()
74+
{
75+
$document = new FirestoreDocument(
76+
[
77+
'name' => 'projects/database/(default)/documents/collection/item',
78+
]
79+
);
80+
81+
$this->assertNull($document->getCreatedTime());
82+
}
83+
84+
85+
/** @test */
86+
public function get_updated_time_returns_null_if_document_does_not_exist()
87+
{
88+
$document = new FirestoreDocument(
89+
[
90+
'name' => 'projects/database/(default)/documents/collection/item',
91+
]
92+
);
93+
94+
$this->assertNull($document->getUpdatedTime());
95+
}
96+
97+
98+
/** @test */
99+
public function get_name_returns_name()
100+
{
101+
$document = new FirestoreDocument(
102+
[
103+
'name' => 'projects/database/(default)/documents/collection/item',
104+
]
105+
);
106+
107+
$this->assertSame('projects/database/(default)/documents/collection/item', $document->getName());
108+
}
109+
110+
111+
/** @test */
112+
public function get_name_returns_null_if_no_document_provided()
113+
{
114+
$document = new FirestoreDocument();
115+
116+
$this->assertNull($document->getName());
117+
}
118+
}

0 commit comments

Comments
 (0)