Add test for date field backend boundaries
authorClaudio Cambra <claudio.cambra@nextcloud.com>
Tue, 12 Sep 2023 16:03:43 +0000 (00:03 +0800)
committerbackportbot-nextcloud[bot] <backportbot-nextcloud[bot]@users.noreply.github.com>
Wed, 13 Sep 2023 08:47:54 +0000 (08:47 +0000)
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
test/testdatefieldbackend.cpp

index eb1480207516b4433398332ceaf681ba40bd1e66..918d633dec6a721a2830895b94abdb502aa87699 100644 (file)
@@ -39,6 +39,47 @@ private slots:
         QCOMPARE(backend.dateMsecs(), currentDateMSecs);
         QCOMPARE(backend.dateString(), currentDateString);
     }
+
+    void testDateBoundaries()
+    {
+        Quick::DateFieldBackend backend;
+        const auto minDate = QDate::currentDate().addDays(-5);
+        const auto maxDate = QDate::currentDate().addDays(5);
+        const auto minDateMs = minDate.startOfDay(Qt::UTC).toMSecsSinceEpoch();
+        const auto maxDateMs = maxDate.startOfDay(Qt::UTC).toMSecsSinceEpoch();
+        const auto invalidMinDate = minDate.addDays(-1);
+        const auto invalidMaxDate = maxDate.addDays(1);
+
+        // Set by QDate
+        backend.setMinimumDate(minDate);
+        backend.setMaximumDate(maxDate);
+
+        QCOMPARE(backend.minimumDate(), minDate);
+        QCOMPARE(backend.maximumDate(), maxDate);
+        QCOMPARE(backend.minimumDateMsecs(), minDateMs);
+        QCOMPARE(backend.maximumDateMsecs(), maxDateMs);
+
+        // Reset and try when setting by MSecs
+        backend.setMinimumDate({});
+        backend.setMaximumDate({});
+        backend.setMinimumDateMsecs(minDateMs);
+        backend.setMaximumDateMsecs(maxDateMs);
+
+        QCOMPARE(backend.minimumDate(), minDate);
+        QCOMPARE(backend.maximumDate(), maxDate);
+        QCOMPARE(backend.minimumDateMsecs(), minDateMs);
+        QCOMPARE(backend.maximumDateMsecs(), maxDateMs);
+
+        // Since we default to the current date, the date should be valid
+        QVERIFY(backend.validDate());
+
+        // Now try with invalid dates
+        backend.setDate(invalidMinDate);
+        QVERIFY(!backend.validDate());
+
+        backend.setDate(invalidMaxDate);
+        QVERIFY(!backend.validDate());
+    }
 };
 
 QTEST_MAIN(TestDateFieldBackend)