From a36707c47ac985435519c4ed0b7741bdbd5c333b Mon Sep 17 00:00:00 2001
From: "Stefan E. Funk" <funk@sub.uni-goettingen.de>
Date: Mon, 10 Oct 2022 11:34:49 +0200
Subject: [PATCH] test: add test for comparing modification dates

---
 .../test/online/OaipmhUtilitiesOnline.java    | 30 +++++++++++++++++--
 .../test/online/tg/TestTGGetRecordOnline.java |  2 ++
 2 files changed, 30 insertions(+), 2 deletions(-)

diff --git a/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/OaipmhUtilitiesOnline.java b/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/OaipmhUtilitiesOnline.java
index 08c72a64..c5e28f43 100644
--- a/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/OaipmhUtilitiesOnline.java
+++ b/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/OaipmhUtilitiesOnline.java
@@ -43,8 +43,8 @@ public class OaipmhUtilitiesOnline {
 
   // ## CHANGE SETTINGS BELOW FOR SETTING TEST SCOPE ---------------------------------------------
 
-  public static final String PROPERTIES_FILE = "oaipmh.test.textgridlab-org.properties";
-  // public static final String PROPERTIES_FILE = "oaipmh.test.dev-textgridlab-org.properties";
+  // public static final String PROPERTIES_FILE = "oaipmh.test.textgridlab-org.properties";
+  public static final String PROPERTIES_FILE = "oaipmh.test.dev-textgridlab-org.properties";
 
   public static final boolean TEST_ALL_PAGES = false;
   // public static final boolean TEST_ALL_PAGES = true;
@@ -576,6 +576,32 @@ public class OaipmhUtilitiesOnline {
     }
   }
 
+  /**
+   * <p>
+   * Looks for both dates and compares them. <datestamp> must be equal to <recordChangeDate>!
+   * </p>
+   * 
+   * @param theResponseString
+   */
+  public static void examineModificationDates(String theResponseString) {
+
+    String datestampTag = "<datestamp>";
+    String recordChangeTag = "<recordChangeDate encoding=\"iso8601\">";
+
+    // Count the occurrence of modification date, must be in GetRecord.record.header.datestamp, and
+    // in mets.recordInfo.recordChangeDate!
+    String datestamp = theResponseString.substring(
+        theResponseString.indexOf(datestampTag) + datestampTag.length(),
+        theResponseString.indexOf("</datestamp>") - 10);
+    String recordChangeDate = theResponseString.substring(
+        theResponseString.indexOf(recordChangeTag) + recordChangeTag.length(),
+        theResponseString.indexOf("</recordChangeDate>") - 1);
+
+    if (!datestamp.equals(recordChangeDate)) {
+      assertTrue(datestamp + " != " + recordChangeDate, false);
+    }
+  }
+
   // **
   // DH used methods
   // **
diff --git a/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGGetRecordOnline.java b/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGGetRecordOnline.java
index c58268b3..10bc4ea9 100644
--- a/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGGetRecordOnline.java
+++ b/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGGetRecordOnline.java
@@ -175,6 +175,7 @@ public class TestTGGetRecordOnline {
 
     // Test OAI header.
     OaipmhUtilitiesOnline.examineTGHeaderIDs(response, OaipmhUtilitiesOnline.OAI_IDIOMMETS_PREFIX);
+    OaipmhUtilitiesOnline.examineModificationDates(response);
 
     System.out.println("\tresponse: " + response);
     System.out.println(OaipmhUtilitiesOnline.OK);
@@ -206,6 +207,7 @@ public class TestTGGetRecordOnline {
 
     // Test OAI header.
     OaipmhUtilitiesOnline.examineTGHeaderIDs(response, OaipmhUtilitiesOnline.OAI_IDIOMMETS_PREFIX);
+    OaipmhUtilitiesOnline.examineModificationDates(response);
 
     System.out.println("\tresponse: " + response);
     System.out.println(OaipmhUtilitiesOnline.OK);
-- 
GitLab