@@ -27,8 +27,8 @@ import com.google.firebase.dataconnect.testutil.dateFromYearMonthDayUTC
27
27
import com.google.firebase.dataconnect.testutil.executeWithEmptyVariables
28
28
import com.google.firebase.dataconnect.testutil.property.arbitrary.EdgeCases
29
29
import com.google.firebase.dataconnect.testutil.property.arbitrary.dataConnect
30
- import com.google.firebase.dataconnect.testutil.property.arbitrary.date
31
- import com.google.firebase.dataconnect.testutil.property.arbitrary.dateOffDayBoundary
30
+ import com.google.firebase.dataconnect.testutil.property.arbitrary.dateTestData
31
+ import com.google.firebase.dataconnect.testutil.property.arbitrary.toJavaUtilDate
32
32
import io.kotest.assertions.assertSoftly
33
33
import io.kotest.assertions.throwables.shouldThrow
34
34
import io.kotest.assertions.withClue
@@ -37,7 +37,6 @@ import io.kotest.property.Arb
37
37
import io.kotest.property.arbitrary.int
38
38
import io.kotest.property.arbitrary.next
39
39
import io.kotest.property.checkAll
40
- import java.util.Date
41
40
import kotlinx.coroutines.test.runTest
42
41
import kotlinx.serialization.Serializable
43
42
import kotlinx.serialization.serializer
@@ -47,17 +46,17 @@ class DateScalarIntegrationTest : DemoConnectorIntegrationTestBase() {
47
46
48
47
@Test
49
48
fun nonNullDate_insert_NormalCases () = runTest {
50
- checkAll(20 , Arb .dataConnect.date ()) {
51
- val key = connector.insertNonNullDate.execute(it.date ).data.key
49
+ checkAll(20 , Arb .dataConnect.dateTestData ()) {
50
+ val key = connector.insertNonNullDate.execute(it.toJavaUtilDate() ).data.key
52
51
assertNonNullDateByKeyEquals(key, it.string)
53
52
}
54
53
}
55
54
56
55
@Test
57
56
fun nonNullDate_insert_EdgeCases () = runTest {
58
57
assertSoftly {
59
- EdgeCases .dates.all.forEach {
60
- val key = connector.insertNonNullDate.execute(it.date ).data.key
58
+ EdgeCases .dates.all() .forEach {
59
+ val key = connector.insertNonNullDate.execute(it.toJavaUtilDate() ).data.key
61
60
assertNonNullDateByKeyEquals(key, it.string)
62
61
}
63
62
}
@@ -76,10 +75,9 @@ class DateScalarIntegrationTest : DemoConnectorIntegrationTestBase() {
76
75
77
76
@Test
78
77
fun nonNullDate_insert_ShouldIgnoreTime () = runTest {
79
- checkAll(20 , Arb .dataConnect.dateOffDayBoundary()) {
80
- val key = connector.insertNonNullDate.execute(it.date).data.key
81
- assertNonNullDateByKeyEquals(key, it.string)
82
- }
78
+ val date = " 2024-03-26T19:48:00.144Z"
79
+ val key = connector.insertNonNullDate.executeWithStringVariables(date).data.key
80
+ assertNonNullDateByKeyEquals(key, dateFromYearMonthDayUTC(2024 , 3 , 26 ))
83
81
}
84
82
85
83
@Test
@@ -96,7 +94,7 @@ class DateScalarIntegrationTest : DemoConnectorIntegrationTestBase() {
96
94
GetNonNullDatesWithDefaultsByKeyQuery .Data .NonNullDatesWithDefaults (
97
95
valueWithVariableDefault = dateFromYearMonthDayUTC(6904 , 11 , 30 ),
98
96
valueWithSchemaDefault = dateFromYearMonthDayUTC(2112 , 1 , 31 ),
99
- epoch = EdgeCases .dates.zero.date ,
97
+ epoch = EdgeCases .dates.epoch.toJavaUtilDate() ,
100
98
requestTime1 = expectedRequestTime,
101
99
requestTime2 = expectedRequestTime,
102
100
)
@@ -135,24 +133,26 @@ class DateScalarIntegrationTest : DemoConnectorIntegrationTestBase() {
135
133
136
134
@Test
137
135
fun nonNullDate_update_NormalCases () = runTest {
138
- checkAll(20 , Arb .dataConnect.date (), Arb .dataConnect.date ()) { date1, date2 ->
139
- val key = connector.insertNonNullDate.execute(date1.date ).data.key
140
- connector.updateNonNullDate.execute(key) { value = date2.date }
136
+ checkAll(20 , Arb .dataConnect.dateTestData (), Arb .dataConnect.dateTestData ()) { date1, date2 ->
137
+ val key = connector.insertNonNullDate.execute(date1.toJavaUtilDate() ).data.key
138
+ connector.updateNonNullDate.execute(key) { value = date2.toJavaUtilDate() }
141
139
assertNonNullDateByKeyEquals(key, date2.string)
142
140
}
143
141
}
144
142
145
143
@Test
146
144
fun nonNullDate_update_EdgeCases () = runTest {
147
- val edgeCases = EdgeCases .dates.all
148
- val dates1 = edgeCases + List (edgeCases.size) { Arb .dataConnect.date().next(rs) } + edgeCases
149
- val dates2 = List (edgeCases.size) { Arb .dataConnect.date().next(rs) } + edgeCases + edgeCases
145
+ val edgeCases = EdgeCases .dates.all()
146
+ val dates1 =
147
+ edgeCases + List (edgeCases.size) { Arb .dataConnect.dateTestData().next(rs) } + edgeCases
148
+ val dates2 =
149
+ List (edgeCases.size) { Arb .dataConnect.dateTestData().next(rs) } + edgeCases + edgeCases
150
150
151
151
assertSoftly {
152
152
for ((date1, date2) in dates1.zip(dates2)) {
153
153
withClue(" date1=${date1.string} date2=${date2.string} " ) {
154
- val key = connector.insertNonNullDate.execute(date1.date ).data.key
155
- connector.updateNonNullDate.execute(key) { value = date2.date }
154
+ val key = connector.insertNonNullDate.execute(date1.toJavaUtilDate() ).data.key
155
+ connector.updateNonNullDate.execute(key) { value = date2.toJavaUtilDate() }
156
156
assertNonNullDateByKeyEquals(key, date2.string)
157
157
}
158
158
}
@@ -161,26 +161,26 @@ class DateScalarIntegrationTest : DemoConnectorIntegrationTestBase() {
161
161
162
162
@Test
163
163
fun nonNullDate_update_DateVariableOmitted () = runTest {
164
- val date = Arb .dataConnect.date ().next(rs)
165
- val key = connector.insertNonNullDate.execute(date.date ).data.key
164
+ val date = Arb .dataConnect.dateTestData ().next(rs)
165
+ val key = connector.insertNonNullDate.execute(date.toJavaUtilDate() ).data.key
166
166
connector.updateNonNullDate.execute(key) {}
167
- assertNonNullDateByKeyEquals(key, date.date )
167
+ assertNonNullDateByKeyEquals(key, date.toJavaUtilDate() )
168
168
}
169
169
170
170
@Test
171
171
fun nullableDate_insert_NormalCases () = runTest {
172
- checkAll(20 , Arb .dataConnect.date ()) {
173
- val key = connector.insertNullableDate.execute { value = it.date }.data.key
172
+ checkAll(20 , Arb .dataConnect.dateTestData ()) {
173
+ val key = connector.insertNullableDate.execute { value = it.toJavaUtilDate() }.data.key
174
174
assertNullableDateByKeyEquals(key, it.string)
175
175
}
176
176
}
177
177
178
178
@Test
179
179
fun nullableDate_insert_EdgeCases () = runTest {
180
- val edgeCases = EdgeCases .dates.all + listOf (null )
180
+ val edgeCases = EdgeCases .dates.all() + listOf (null )
181
181
assertSoftly {
182
182
edgeCases.forEach {
183
- val key = connector.insertNullableDate.execute { value = it?.date }.data.key
183
+ val key = connector.insertNullableDate.execute { value = it?.toJavaUtilDate() }.data.key
184
184
if (it == = null ) {
185
185
assertNullableDateByKeyHasNullInnerValue(key)
186
186
} else {
@@ -209,10 +209,9 @@ class DateScalarIntegrationTest : DemoConnectorIntegrationTestBase() {
209
209
210
210
@Test
211
211
fun nullableDate_insert_ShouldIgnoreTime () = runTest {
212
- checkAll(20 , Arb .dataConnect.dateOffDayBoundary()) {
213
- val key = connector.insertNullableDate.execute { value = it.date }.data.key
214
- assertNullableDateByKeyEquals(key, it.string)
215
- }
212
+ val date = " 2024-03-26T19:48:00.144Z"
213
+ val key = connector.insertNullableDate.executeWithStringVariables(date).data.key
214
+ assertNullableDateByKeyEquals(key, dateFromYearMonthDayUTC(2024 , 3 , 26 ))
216
215
}
217
216
218
217
@Test
@@ -245,7 +244,7 @@ class DateScalarIntegrationTest : DemoConnectorIntegrationTestBase() {
245
244
GetNullableDatesWithDefaultsByKeyQuery .Data .NullableDatesWithDefaults (
246
245
valueWithVariableDefault = dateFromYearMonthDayUTC(8113 , 2 , 9 ),
247
246
valueWithSchemaDefault = dateFromYearMonthDayUTC(1921 , 12 , 2 ),
248
- epoch = EdgeCases .dates.zero.date ,
247
+ epoch = EdgeCases .dates.epoch.toJavaUtilDate() ,
249
248
requestTime1 = expectedRequestTime,
250
249
requestTime2 = expectedRequestTime,
251
250
)
@@ -254,24 +253,26 @@ class DateScalarIntegrationTest : DemoConnectorIntegrationTestBase() {
254
253
255
254
@Test
256
255
fun nullableDate_update_NormalCases () = runTest {
257
- checkAll(20 , Arb .dataConnect.date (), Arb .dataConnect.date ()) { date1, date2 ->
258
- val key = connector.insertNullableDate.execute { value = date1.date }.data.key
259
- connector.updateNullableDate.execute(key) { value = date2.date }
256
+ checkAll(20 , Arb .dataConnect.dateTestData (), Arb .dataConnect.dateTestData ()) { date1, date2 ->
257
+ val key = connector.insertNullableDate.execute { value = date1.toJavaUtilDate() }.data.key
258
+ connector.updateNullableDate.execute(key) { value = date2.toJavaUtilDate() }
260
259
assertNullableDateByKeyEquals(key, date2.string)
261
260
}
262
261
}
263
262
264
263
@Test
265
264
fun nullableDate_update_EdgeCases () = runTest {
266
- val edgeCases = EdgeCases .dates.all
267
- val dates1 = edgeCases + List (edgeCases.size) { Arb .dataConnect.date().next(rs) } + edgeCases
268
- val dates2 = List (edgeCases.size) { Arb .dataConnect.date().next(rs) } + edgeCases + edgeCases
265
+ val edgeCases = EdgeCases .dates.all()
266
+ val dates1 =
267
+ edgeCases + List (edgeCases.size) { Arb .dataConnect.dateTestData().next(rs) } + edgeCases
268
+ val dates2 =
269
+ List (edgeCases.size) { Arb .dataConnect.dateTestData().next(rs) } + edgeCases + edgeCases
269
270
270
271
assertSoftly {
271
272
for ((date1, date2) in dates1.zip(dates2)) {
272
273
withClue(" date1=${date1.string} date2=${date2.string} " ) {
273
- val key = connector.insertNullableDate.execute { value = date1.date }.data.key
274
- connector.updateNullableDate.execute(key) { value = date2.date }
274
+ val key = connector.insertNullableDate.execute { value = date1.toJavaUtilDate() }.data.key
275
+ connector.updateNullableDate.execute(key) { value = date2.toJavaUtilDate() }
275
276
assertNullableDateByKeyEquals(key, date2.string)
276
277
}
277
278
}
@@ -280,23 +281,23 @@ class DateScalarIntegrationTest : DemoConnectorIntegrationTestBase() {
280
281
281
282
@Test
282
283
fun nullableDate_update_UpdateNonNullValueToNull () = runTest {
283
- val date = Arb .dataConnect.date ().next(rs).date
284
+ val date = Arb .dataConnect.dateTestData ().next(rs).toJavaUtilDate()
284
285
val key = connector.insertNullableDate.execute { value = date }.data.key
285
286
connector.updateNullableDate.execute(key) { value = null }
286
287
assertNullableDateByKeyHasNullInnerValue(key)
287
288
}
288
289
289
290
@Test
290
291
fun nullableDate_update_UpdateNullValueToNonNull () = runTest {
291
- val date = Arb .dataConnect.date ().next(rs).date
292
+ val date = Arb .dataConnect.dateTestData ().next(rs).toJavaUtilDate()
292
293
val key = connector.insertNullableDate.execute { value = null }.data.key
293
294
connector.updateNullableDate.execute(key) { value = date }
294
295
assertNullableDateByKeyEquals(key, date)
295
296
}
296
297
297
298
@Test
298
299
fun nullableDate_update_DateVariableOmitted () = runTest {
299
- val date = Arb .dataConnect.date ().next(rs).date
300
+ val date = Arb .dataConnect.dateTestData ().next(rs).toJavaUtilDate()
300
301
val key = connector.insertNullableDate.execute { value = date }.data.key
301
302
connector.updateNullableDate.execute(key) {}
302
303
assertNullableDateByKeyEquals(key, date)
@@ -310,7 +311,7 @@ class DateScalarIntegrationTest : DemoConnectorIntegrationTestBase() {
310
311
queryResult.data shouldBe GetDateByKeyQueryStringData (expected)
311
312
}
312
313
313
- private suspend fun assertNonNullDateByKeyEquals (key : NonNullDateKey , expected : Date ) {
314
+ private suspend fun assertNonNullDateByKeyEquals (key : NonNullDateKey , expected : java.util. Date ) {
314
315
val queryResult = connector.getNonNullDateByKey.execute(key)
315
316
queryResult.data shouldBe
316
317
GetNonNullDateByKeyQuery .Data (GetNonNullDateByKeyQuery .Data .Value (expected))
@@ -333,16 +334,19 @@ class DateScalarIntegrationTest : DemoConnectorIntegrationTestBase() {
333
334
queryResult.data shouldBe GetDateByKeyQueryStringData (expected)
334
335
}
335
336
336
- private suspend fun assertNullableDateByKeyEquals (key : NullableDateKey , expected : Date ) {
337
+ private suspend fun assertNullableDateByKeyEquals (
338
+ key : NullableDateKey ,
339
+ expected : java.util.Date
340
+ ) {
337
341
val queryResult = connector.getNullableDateByKey.execute(key)
338
342
queryResult.data shouldBe
339
343
GetNullableDateByKeyQuery .Data (GetNullableDateByKeyQuery .Data .Value (expected))
340
344
}
341
345
342
346
/* *
343
347
* A `Data` type that can be used in place of [GetNonNullDateByKeyQuery.Data] that types the value
344
- * as a [String] instead of a [Date], allowing verification of the data sent over the wire without
345
- * possible confounding from date deserialization.
348
+ * as a [String] instead of a [java.util. Date], allowing verification of the data sent over the
349
+ * wire without possible confounding from date deserialization.
346
350
*/
347
351
@Serializable
348
352
private data class GetDateByKeyQueryStringData (val value : DateStringValue ? ) {
@@ -353,15 +357,15 @@ class DateScalarIntegrationTest : DemoConnectorIntegrationTestBase() {
353
357
354
358
/* *
355
359
* A `Variables` type that can be used in place of [InsertNonNullDateMutation.Variables] that
356
- * types the value as a [String] instead of a [Date], allowing verification of the data sent over
357
- * the wire without possible confounding from date serialization.
360
+ * types the value as a [String] instead of a [java.util. Date], allowing verification of the data
361
+ * sent over the wire without possible confounding from date serialization.
358
362
*/
359
363
@Serializable private data class InsertDateStringVariables (val value : String? )
360
364
361
365
/* *
362
366
* A `Variables` type that can be used in place of [InsertNonNullDateMutation.Variables] that
363
- * types the value as a [Int] instead of a [Date], allowing verification that the server fails
364
- * with an expected error (rather than crashing, for example).
367
+ * types the value as a [Int] instead of a [java.util. Date], allowing verification that the server
368
+ * fails with an expected error (rather than crashing, for example).
365
369
*/
366
370
@Serializable private data class InsertDateIntVariables (val value : Int )
367
371
0 commit comments