@@ -69,9 +69,13 @@ public function it_returns_page_entity_with_filled_properties()
6969 // check properties
7070 $ this ->assertSame ('Notion Is Awesome ' , $ pageResult ->getTitle ());
7171 $ this ->assertSame ('page ' , $ pageResult ->getObjectType ());
72- $ this ->assertCount (7 , $ pageResult ->getRawProperties ());
73- $ this ->assertCount (7 , $ pageResult ->getProperties ());
74- $ this ->assertCount (7 , $ pageResult ->getPropertyKeys ());
72+ $ this ->assertCount (9 , $ pageResult ->getRawProperties ());
73+ $ this ->assertCount (9 , $ pageResult ->getProperties ());
74+ $ this ->assertCount (9 , $ pageResult ->getPropertyKeys ());
75+
76+ // check date and datetime properties
77+ $ this ->assertTrue ($ pageResult ->getProperty ('DateWithTime ' )->hasTime ());
78+ $ this ->assertFalse ($ pageResult ->getProperty ('DateWithoutTime ' )->hasTime ());
7579
7680 $ this ->assertInstanceOf (Carbon::class, $ pageResult ->getCreatedTime ());
7781 $ this ->assertInstanceOf (Carbon::class, $ pageResult ->getLastEditedTime ());
@@ -106,9 +110,11 @@ public function it_assembles_properties_for_a_new_page()
106110 $ checkboxKey = 'CheckboxProperty ' ;
107111 $ checkboxValue = true ;
108112 $ dateRangeKey = 'DateRangeProperty ' ;
113+ $ dateTimeRangeKey = 'DateTimeRangeProperty ' ;
109114 $ dateRangeStartValue = Carbon::now ()->toDateTime ();
110115 $ dateRangeEndValue = Carbon::tomorrow ()->toDateTime ();
111116 $ dateKey = 'DateProperty ' ;
117+ $ dateTimeKey = 'DateTimeProperty ' ;
112118 $ dateValue = Carbon::yesterday ()->toDateTime ();
113119 $ emailKey = 'EmailProperty ' ;
114120 $ emailValue = 'notion-is-awesome@example.org ' ;
@@ -135,7 +141,9 @@ public function it_assembles_properties_for_a_new_page()
135141 $ page ->setTitle ('Name ' , $ pageTitle );
136142 $ page ->setCheckbox ($ checkboxKey , $ checkboxValue );
137143 $ page ->setDate ($ dateRangeKey , $ dateRangeStartValue , $ dateRangeEndValue );
144+ $ page ->setDateTime ($ dateTimeRangeKey , $ dateRangeStartValue , $ dateRangeEndValue );
138145 $ page ->setDate ($ dateKey , $ dateValue );
146+ $ page ->setDateTime ($ dateTimeKey , $ dateValue );
139147 $ page ->setEmail ($ emailKey , $ emailValue );
140148 $ page ->setMultiSelect ($ multiSelectKey , $ multiSelectValues );
141149 $ page ->setNumber ($ numberKey , $ numberValue );
@@ -175,27 +183,65 @@ public function it_assembles_properties_for_a_new_page()
175183 $ this ->assertTrue ($ dateRangeProp ->isRange ());
176184 $ this ->assertEquals ($ dateRangeStartValue , $ dateRangeProp ->getStart ());
177185 $ this ->assertEquals ($ dateRangeEndValue , $ dateRangeProp ->getEnd ());
186+ $ this ->assertFalse ($ dateRangeProp ->hasTime ());
178187 $ this ->assertJson ($ dateRangeProp ->asText ());
179188 $ this ->assertStringContainsString ($ dateRangeStartValue ->format ('Y-m-d H:i:s ' ), $ dateRangeProp ->asText ());
180189 $ this ->assertStringContainsString ($ dateRangeEndValue ->format ('Y-m-d H:i:s ' ), $ dateRangeProp ->asText ());
181190 $ dateRangeContent = $ dateRangeProp ->getRawContent ();
182191 $ this ->assertArrayHasKey ('date ' , $ dateRangeContent );
183192 $ this ->assertCount (2 , $ dateRangeContent ['date ' ]);
184193 $ this ->assertArrayHasKey ('start ' , $ dateRangeContent ['date ' ]);
185- $ this ->assertEquals ($ dateRangeStartValue ->format ('c ' ), $ dateRangeContent ['date ' ]['start ' ]);
194+ $ this ->assertEquals ($ dateRangeStartValue ->format ('Y-m-d ' ), $ dateRangeContent ['date ' ]['start ' ]);
186195 $ this ->assertArrayHasKey ('end ' , $ dateRangeContent ['date ' ]);
187- $ this ->assertEquals ($ dateRangeEndValue ->format ('c ' ), $ dateRangeContent ['date ' ]['end ' ]);
196+ $ this ->assertEquals ($ dateRangeEndValue ->format ('Y-m-d ' ), $ dateRangeContent ['date ' ]['end ' ]);
197+
198+ // date range (with time)
199+ $ this ->assertTrue (
200+ $ this ->assertContainsInstanceOf (Date::class, $ properties )
201+ );
202+ $ dateTimeRangeProp = $ page ->getProperty ($ dateTimeRangeKey );
203+ $ this ->assertInstanceOf (RichDate::class, $ dateTimeRangeProp ->getContent ());
204+ $ dateTimeRangeContent = $ dateTimeRangeProp ->getContent ();
205+ $ this ->assertTrue ($ dateTimeRangeProp ->isRange ());
206+ $ this ->assertEquals ($ dateRangeStartValue , $ dateTimeRangeProp ->getStart ());
207+ $ this ->assertEquals ($ dateRangeEndValue , $ dateTimeRangeProp ->getEnd ());
208+ $ this ->assertTrue ($ dateTimeRangeProp ->hasTime ());
209+ $ this ->assertJson ($ dateTimeRangeProp ->asText ());
210+ $ this ->assertStringContainsString ($ dateRangeStartValue ->format ('Y-m-d H:i:s ' ), $ dateTimeRangeProp ->asText ());
211+ $ this ->assertStringContainsString ($ dateRangeEndValue ->format ('Y-m-d H:i:s ' ), $ dateTimeRangeProp ->asText ());
212+ $ dateTimeRangeContent = $ dateTimeRangeProp ->getRawContent ();
213+ $ this ->assertArrayHasKey ('date ' , $ dateTimeRangeContent );
214+ $ this ->assertCount (2 , $ dateTimeRangeContent ['date ' ]);
215+ $ this ->assertArrayHasKey ('start ' , $ dateTimeRangeContent ['date ' ]);
216+ $ this ->assertEquals ($ dateRangeStartValue ->format ('c ' ), $ dateTimeRangeContent ['date ' ]['start ' ]);
217+ $ this ->assertArrayHasKey ('end ' , $ dateTimeRangeContent ['date ' ]);
218+ $ this ->assertEquals ($ dateRangeEndValue ->format ('c ' ), $ dateTimeRangeContent ['date ' ]['end ' ]);
188219
189220 // date
190221 $ dateProp = $ page ->getProperty ($ dateKey );
191222 $ this ->assertInstanceOf (RichDate::class, $ dateProp ->getContent ());
192223 $ this ->assertFalse ($ dateProp ->isRange ());
193224 $ this ->assertEquals ($ dateValue , $ dateProp ->getStart ());
225+ $ this ->assertNull ($ dateProp ->getEnd ());
226+ $ this ->assertFalse ($ dateProp ->hasTime ());
194227 $ dateContent = $ dateProp ->getRawContent ();
195228 $ this ->assertArrayHasKey ('date ' , $ dateContent );
196229 $ this ->assertCount (1 , $ dateContent ['date ' ]);
197230 $ this ->assertArrayHasKey ('start ' , $ dateContent ['date ' ]);
198- $ this ->assertEquals ($ dateValue ->format ('c ' ), $ dateContent ['date ' ]['start ' ]);
231+ $ this ->assertEquals ($ dateValue ->format ('Y-m-d ' ), $ dateContent ['date ' ]['start ' ]);
232+
233+ // date (with time)
234+ $ dateTimeProp = $ page ->getProperty ($ dateTimeKey );
235+ $ this ->assertInstanceOf (RichDate::class, $ dateTimeProp ->getContent ());
236+ $ this ->assertFalse ($ dateTimeProp ->isRange ());
237+ $ this ->assertEquals ($ dateValue , $ dateTimeProp ->getStart ());
238+ $ this ->assertNull ($ dateTimeProp ->getEnd ());
239+ $ this ->assertTrue ($ dateTimeProp ->hasTime ());
240+ $ dateTimeContent = $ dateTimeProp ->getRawContent ();
241+ $ this ->assertArrayHasKey ('date ' , $ dateTimeContent );
242+ $ this ->assertCount (1 , $ dateTimeContent ['date ' ]);
243+ $ this ->assertArrayHasKey ('start ' , $ dateTimeContent ['date ' ]);
244+ $ this ->assertEquals ($ dateValue ->format ('c ' ), $ dateTimeContent ['date ' ]['start ' ]);
199245
200246 // email
201247 $ this ->assertTrue ($ this ->assertContainsInstanceOf (Email::class, $ properties ));
0 commit comments