From 7fb61d028e98a9524dc581acbd180c43f4c6f75d Mon Sep 17 00:00:00 2001 From: Adam Saghy Date: Fri, 29 Jul 2022 21:47:14 +0200 Subject: [PATCH] Fix transaction cannot be in future check --- ...sioningEntriesReadPlatformServiceImpl.java | 2 +- .../service/EmailReadPlatformServiceImpl.java | 4 +- .../core/service/DateUtils.java | 4 +- .../DatabaseSpecificSQLGenerator.java | 12 +-- .../service/GenericDataServiceImpl.java | 2 +- .../util/ReportMailingJobDateUtil.java | 6 +- .../service/SmsReadPlatformServiceImpl.java | 4 +- .../HolidayReadPlatformServiceImpl.java | 2 +- .../organisation/teller/util/DateRange.java | 6 +- ...ructionHistoryReadPlatformServiceImpl.java | 4 +- .../calendar/service/CalendarUtils.java | 2 +- ...ollectionSheetReadPlatformServiceImpl.java | 6 +- .../GenerateRdScheduleTasklet.java | 2 +- .../core/service/DateUtilsTest.java | 88 +++++++++++++++++++ 14 files changed, 116 insertions(+), 28 deletions(-) create mode 100644 fineract-provider/src/test/java/org/apache/fineract/infrastructure/core/service/DateUtilsTest.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/service/ProvisioningEntriesReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/service/ProvisioningEntriesReadPlatformServiceImpl.java index eac0c64cd..0cb95b182 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/service/ProvisioningEntriesReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/service/ProvisioningEntriesReadPlatformServiceImpl.java @@ -53,7 +53,7 @@ public class ProvisioningEntriesReadPlatformServiceImpl implements ProvisioningE @Override public Collection retrieveLoanProductsProvisioningData(LocalDate date) { - String formattedDate = DateUtils.DEFAULT_DATE_FORMATER.format(date); + String formattedDate = DateUtils.DEFAULT_DATE_FORMATTER.format(date); LoanProductProvisioningEntryMapper mapper = new LoanProductProvisioningEntryMapper(sqlGenerator); final String sql = mapper.schema(); return this.jdbcTemplate.query(sql, mapper, formattedDate, formattedDate, formattedDate); diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/service/EmailReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/service/EmailReadPlatformServiceImpl.java index b57528d5e..f8c51c93a 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/service/EmailReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/service/EmailReadPlatformServiceImpl.java @@ -181,8 +181,8 @@ public class EmailReadPlatformServiceImpl implements EmailReadPlatformService { String fromDateString = null; String toDateString = null; if (dateFrom != null && dateTo != null) { - fromDateString = DateUtils.DEFAULT_DATE_FORMATER.format(dateFrom); - toDateString = DateUtils.DEFAULT_DATE_FORMATER.format(dateTo); + fromDateString = DateUtils.DEFAULT_DATE_FORMATTER.format(dateFrom); + toDateString = DateUtils.DEFAULT_DATE_FORMATTER.format(dateTo); sqlBuilder.append(" and emo.submittedon_date >= ? and emo.submittedon_date <= ? "); } final String sqlPlusLimit = (limit > 0) ? " " + sqlGenerator.limit(limit) : ""; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/DateUtils.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/DateUtils.java index 52bd3caa0..f6c9b5f33 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/DateUtils.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/DateUtils.java @@ -31,9 +31,9 @@ public final class DateUtils { public static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd"; public static final String DEFAULT_DATETIME_FORMAT = DEFAULT_DATE_FORMAT + " HH:mm:ss"; - public static final DateTimeFormatter DEFAULT_DATETIME_FORMATER = new DateTimeFormatterBuilder().appendPattern(DEFAULT_DATETIME_FORMAT) + public static final DateTimeFormatter DEFAULT_DATETIME_FORMATTER = new DateTimeFormatterBuilder().appendPattern(DEFAULT_DATETIME_FORMAT) .toFormatter(); - public static final DateTimeFormatter DEFAULT_DATE_FORMATER = new DateTimeFormatterBuilder().appendPattern(DEFAULT_DATE_FORMAT) + public static final DateTimeFormatter DEFAULT_DATE_FORMATTER = new DateTimeFormatterBuilder().appendPattern(DEFAULT_DATE_FORMAT) .toFormatter(); private DateUtils() { diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/database/DatabaseSpecificSQLGenerator.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/database/DatabaseSpecificSQLGenerator.java index a11a0b58f..7d1d6b019 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/database/DatabaseSpecificSQLGenerator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/database/DatabaseSpecificSQLGenerator.java @@ -90,9 +90,9 @@ public class DatabaseSpecificSQLGenerator { public String currentBusinessDate() { if (databaseTypeResolver.isMySQL()) { - return format("DATE('%s')", DateUtils.getBusinessLocalDate().format(DateUtils.DEFAULT_DATE_FORMATER)); + return format("DATE('%s')", DateUtils.getBusinessLocalDate().format(DateUtils.DEFAULT_DATE_FORMATTER)); } else if (databaseTypeResolver.isPostgreSQL()) { - return format("DATE '%s'", DateUtils.getBusinessLocalDate().format(DateUtils.DEFAULT_DATE_FORMATER)); + return format("DATE '%s'", DateUtils.getBusinessLocalDate().format(DateUtils.DEFAULT_DATE_FORMATTER)); } else { throw new IllegalStateException("Database type is not supported for current date " + databaseTypeResolver.databaseType()); } @@ -100,9 +100,9 @@ public class DatabaseSpecificSQLGenerator { public String currentTenantDate() { if (databaseTypeResolver.isMySQL()) { - return format("DATE('%s')", DateUtils.getLocalDateOfTenant().format(DateUtils.DEFAULT_DATE_FORMATER)); + return format("DATE('%s')", DateUtils.getLocalDateOfTenant().format(DateUtils.DEFAULT_DATE_FORMATTER)); } else if (databaseTypeResolver.isPostgreSQL()) { - return format("DATE '%s'", DateUtils.getLocalDateOfTenant().format(DateUtils.DEFAULT_DATE_FORMATER)); + return format("DATE '%s'", DateUtils.getLocalDateOfTenant().format(DateUtils.DEFAULT_DATE_FORMATTER)); } else { throw new IllegalStateException("Database type is not supported for current date " + databaseTypeResolver.databaseType()); } @@ -110,9 +110,9 @@ public class DatabaseSpecificSQLGenerator { public String currentTenantDateTime() { if (databaseTypeResolver.isMySQL()) { - return format("TIMESTAMP('%s')", DateUtils.getLocalDateTimeOfTenant().format(DateUtils.DEFAULT_DATETIME_FORMATER)); + return format("TIMESTAMP('%s')", DateUtils.getLocalDateTimeOfTenant().format(DateUtils.DEFAULT_DATETIME_FORMATTER)); } else if (databaseTypeResolver.isPostgreSQL()) { - return format("TIMESTAMP '%s'", DateUtils.getLocalDateTimeOfTenant().format(DateUtils.DEFAULT_DATETIME_FORMATER)); + return format("TIMESTAMP '%s'", DateUtils.getLocalDateTimeOfTenant().format(DateUtils.DEFAULT_DATETIME_FORMATTER)); } else { throw new IllegalStateException("Database type is not supported for current date time" + databaseTypeResolver.databaseType()); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/GenericDataServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/GenericDataServiceImpl.java index 925871aac..8ea83c115 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/GenericDataServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/GenericDataServiceImpl.java @@ -171,7 +171,7 @@ public class GenericDataServiceImpl implements GenericDataService { "[" + localDate.getYear() + ", " + localDate.getMonthValue() + ", " + localDate.getDayOfMonth() + "]"); } else if (currColType.equals("DATETIME")) { final LocalDateTime localDateTime = LocalDateTime.parse(formatDateTimeValue(currVal), - DateUtils.DEFAULT_DATETIME_FORMATER); + DateUtils.DEFAULT_DATETIME_FORMATTER); writer.append("[" + localDateTime.getYear() + ", " + localDateTime.getMonthValue() + ", " + localDateTime.getDayOfMonth() + ", " + localDateTime.getHour() + ", " + localDateTime.getMinute() + ", " + localDateTime.getSecond() + ", " + localDateTime.get(ChronoField.MILLI_OF_SECOND) + "]"); diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/util/ReportMailingJobDateUtil.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/util/ReportMailingJobDateUtil.java index 553fee900..bc6f8d16a 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/util/ReportMailingJobDateUtil.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/util/ReportMailingJobDateUtil.java @@ -33,21 +33,21 @@ public final class ReportMailingJobDateUtil { * get the current date as string using the mysql date format yyyy-MM-dd **/ public static String getTodayDateAsString() { - return DateUtils.getLocalDateOfTenant().format(DateUtils.DEFAULT_DATE_FORMATER); + return DateUtils.getLocalDateOfTenant().format(DateUtils.DEFAULT_DATE_FORMATTER); } /** * get the yesterday's date as string using the mysql date format yyyy-MM-dd **/ public static String getYesterdayDateAsString() { - return DateUtils.getLocalDateOfTenant().minusDays(1).format(DateUtils.DEFAULT_DATE_FORMATER); + return DateUtils.getLocalDateOfTenant().minusDays(1).format(DateUtils.DEFAULT_DATE_FORMATTER); } /** * get the tomorrow's date as string using the mysql date format yyyy-MM-dd **/ public static String getTomorrowDateAsString() { - return DateUtils.getLocalDateOfTenant().plusDays(1).format(DateUtils.DEFAULT_DATE_FORMATER); + return DateUtils.getLocalDateOfTenant().plusDays(1).format(DateUtils.DEFAULT_DATE_FORMATTER); } /** diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/service/SmsReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/service/SmsReadPlatformServiceImpl.java index b67357561..b42bce5af 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/service/SmsReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/service/SmsReadPlatformServiceImpl.java @@ -216,8 +216,8 @@ public class SmsReadPlatformServiceImpl implements SmsReadPlatformService { String fromDateString = null; String toDateString = null; if (dateFrom != null && dateTo != null) { - fromDateString = DateUtils.DEFAULT_DATE_FORMATER.format(dateFrom); - toDateString = DateUtils.DEFAULT_DATE_FORMATER.format(dateTo); + fromDateString = DateUtils.DEFAULT_DATE_FORMATTER.format(dateFrom); + toDateString = DateUtils.DEFAULT_DATE_FORMATTER.format(dateTo); sqlBuilder.append(" and smo.submittedon_date >= ? and smo.submittedon_date <= ? "); objectArray[arrayPos] = fromDateString; arrayPos = arrayPos + 1; diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/service/HolidayReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/service/HolidayReadPlatformServiceImpl.java index bb604527a..8b521c6c7 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/service/HolidayReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/service/HolidayReadPlatformServiceImpl.java @@ -89,7 +89,7 @@ public class HolidayReadPlatformServiceImpl implements HolidayReadPlatformServic final LocalDate toDate) { this.context.authenticatedUser(); - final DateTimeFormatter df = DateUtils.DEFAULT_DATE_FORMATER; + final DateTimeFormatter df = DateUtils.DEFAULT_DATE_FORMATTER; final Object[] objectArray = new Object[3]; int arrayPos = 0; diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/util/DateRange.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/util/DateRange.java index d6d0d8c53..d1271a118 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/util/DateRange.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/util/DateRange.java @@ -60,7 +60,7 @@ public class DateRange { final String testee; if (dateToParse == null) { - testee = DateUtils.DEFAULT_DATE_FORMATER.format(DateUtils.getBusinessLocalDate()); + testee = DateUtils.DEFAULT_DATE_FORMATTER.format(DateUtils.getBusinessLocalDate()); } else { testee = dateToParse; } @@ -68,14 +68,14 @@ public class DateRange { final StringTokenizer tokenizer = new StringTokenizer(testee, DateRange.RANGE_DELIMITER); try { - dateRange.setStartDate(LocalDate.parse(tokenizer.nextToken(), DateUtils.DEFAULT_DATE_FORMATER)); + dateRange.setStartDate(LocalDate.parse(tokenizer.nextToken(), DateUtils.DEFAULT_DATE_FORMATTER)); } catch (DateTimeParseException ex) { LOG.error("Problem occurred in DateRange function Could not parse the date recieved.", ex); } if (tokenizer.hasMoreTokens()) { try { - dateRange.setEndDate(LocalDate.parse(tokenizer.nextToken(), DateUtils.DEFAULT_DATE_FORMATER)); + dateRange.setEndDate(LocalDate.parse(tokenizer.nextToken(), DateUtils.DEFAULT_DATE_FORMATTER)); } catch (DateTimeParseException ex) { LOG.error("Problem occurred in DateRange function Could not parse the date recieved.", ex); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/StandingInstructionHistoryReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/StandingInstructionHistoryReadPlatformServiceImpl.java index 0d2981a4b..8c9ad5c52 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/StandingInstructionHistoryReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/StandingInstructionHistoryReadPlatformServiceImpl.java @@ -126,7 +126,7 @@ public class StandingInstructionHistoryReadPlatformServiceImpl implements Standi sqlBuilder.append(" and "); } sqlBuilder.append(" atsih.execution_time >= ? "); - paramObj.add(DateUtils.DEFAULT_DATE_FORMATER.format(standingInstructionDTO.startDateRange())); + paramObj.add(DateUtils.DEFAULT_DATE_FORMATTER.format(standingInstructionDTO.startDateRange())); addAndCaluse = true; } @@ -135,7 +135,7 @@ public class StandingInstructionHistoryReadPlatformServiceImpl implements Standi sqlBuilder.append(" and "); } sqlBuilder.append(" atsih.execution_time < ? "); - paramObj.add(DateUtils.DEFAULT_DATE_FORMATER.format(standingInstructionDTO.endDateRange())); + paramObj.add(DateUtils.DEFAULT_DATE_FORMATTER.format(standingInstructionDTO.endDateRange())); addAndCaluse = true; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/service/CalendarUtils.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/service/CalendarUtils.java index d6c3f6578..16cd36a8d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/service/CalendarUtils.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/service/CalendarUtils.java @@ -138,7 +138,7 @@ public final class CalendarUtils { private static Date convertToiCal4JCompatibleDate(final LocalDateTime inputDate) { Date formattedDate = null; - final String seedDateStr = DateUtils.DEFAULT_DATETIME_FORMATER.format(inputDate); + final String seedDateStr = DateUtils.DEFAULT_DATETIME_FORMATTER.format(inputDate); try { formattedDate = new Date(seedDateStr, DateUtils.DEFAULT_DATETIME_FORMAT); } catch (final ParseException e) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/service/CollectionSheetReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/service/CollectionSheetReadPlatformServiceImpl.java index dacdff318..4d9568b28 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/service/CollectionSheetReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/service/CollectionSheetReadPlatformServiceImpl.java @@ -327,7 +327,7 @@ public class CollectionSheetReadPlatformServiceImpl implements CollectionSheetRe final Long calendarId = query.longValueOfParameterNamed(calendarIdParamName); final LocalDate transactionDate = query.localDateValueOfParameterNamed(transactionDateParamName); - final String transactionDateStr = DateUtils.DEFAULT_DATE_FORMATER.format(transactionDate); + final String transactionDateStr = DateUtils.DEFAULT_DATE_FORMATTER.format(transactionDate); final Calendar calendar = this.calendarRepositoryWrapper.findOneWithNotFoundDetection(calendarId); // check if transaction against calendar effective from date @@ -462,7 +462,7 @@ public class CollectionSheetReadPlatformServiceImpl implements CollectionSheetRe final CenterData center = this.centerReadPlatformService.retrieveOne(centerId); final LocalDate transactionDate = query.localDateValueOfParameterNamed(transactionDateParamName); - final String dueDateStr = DateUtils.DEFAULT_DATE_FORMATER.format(transactionDate); + final String dueDateStr = DateUtils.DEFAULT_DATE_FORMATTER.format(transactionDate); final JLGCollectionSheetFaltDataMapper mapper = new JLGCollectionSheetFaltDataMapper(sqlGenerator); @@ -679,7 +679,7 @@ public class CollectionSheetReadPlatformServiceImpl implements CollectionSheetRe this.collectionSheetGenerateCommandFromApiJsonDeserializer.validateForGenerateCollectionSheetOfIndividuals(query.json()); final LocalDate transactionDate = query.localDateValueOfParameterNamed(transactionDateParamName); - final String transactionDateStr = DateUtils.DEFAULT_DATE_FORMATER.format(transactionDate); + final String transactionDateStr = DateUtils.DEFAULT_DATE_FORMATTER.format(transactionDate); final AppUser currentUser = this.context.authenticatedUser(); final String hierarchy = currentUser.getOffice().getHierarchy(); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/generaterdschedule/GenerateRdScheduleTasklet.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/generaterdschedule/GenerateRdScheduleTasklet.java index d867ed299..f20e173a3 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/generaterdschedule/GenerateRdScheduleTasklet.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/generaterdschedule/GenerateRdScheduleTasklet.java @@ -50,7 +50,7 @@ public class GenerateRdScheduleTasklet implements Tasklet { final Collection> scheduleDetails = depositAccountReadPlatformService.retriveDataForRDScheduleCreation(); String insertSql = "INSERT INTO m_mandatory_savings_schedule (savings_account_id, duedate, installment, deposit_amount, completed_derived, created_date, lastmodified_date) VALUES "; StringBuilder sb = new StringBuilder(); - String currentDate = DateUtils.getLocalDateTimeOfTenant().format(DateUtils.DEFAULT_DATETIME_FORMATER); + String currentDate = DateUtils.getLocalDateTimeOfTenant().format(DateUtils.DEFAULT_DATETIME_FORMATTER); int iterations = 0; for (Map details : scheduleDetails) { Long count = (Long) details.get("futureInstallemts"); diff --git a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/core/service/DateUtilsTest.java b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/core/service/DateUtilsTest.java new file mode 100644 index 000000000..d00af32dc --- /dev/null +++ b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/core/service/DateUtilsTest.java @@ -0,0 +1,88 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.fineract.infrastructure.core.service; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.OffsetDateTime; +import java.time.ZoneId; +import java.time.temporal.ChronoUnit; +import java.util.HashMap; +import java.util.Map; +import java.util.TimeZone; +import org.apache.fineract.infrastructure.businessdate.domain.BusinessDateType; +import org.apache.fineract.infrastructure.core.domain.FineractPlatformTenant; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class DateUtilsTest { + + @BeforeEach + public void init() { + ThreadLocalContextUtil.setTenant(new FineractPlatformTenant(1L, "default", "Default", "Asia/Kolkata", null)); + ThreadLocalContextUtil.setBusinessDates(new HashMap<>(Map.of(BusinessDateType.BUSINESS_DATE, LocalDate.of(2022, 6, 12)))); + } + + @Test + public void getSystemZoneIdTest() { + TimeZone.setDefault(TimeZone.getTimeZone("GMT+02:00")); + assertEquals("GMT+02:00", DateUtils.getSystemZoneId().getId()); + } + + @Test + public void getDateTimeZoneOfTenant() { + assertEquals(ZoneId.of("Asia/Kolkata"), DateUtils.getDateTimeZoneOfTenant()); + } + + @Test + public void getLocalDateOfTenant() { + assertEquals(LocalDate.now(ZoneId.of("Asia/Kolkata")), DateUtils.getLocalDateOfTenant()); + } + + @Test + public void getLocalDateTimeOfTenant() { + assertEquals(LocalDateTime.now(ZoneId.of("Asia/Kolkata")).truncatedTo(ChronoUnit.SECONDS), DateUtils.getLocalDateTimeOfTenant()); + } + + @Test + public void getOffsetDateTimeOfTenant() { + assertEquals(OffsetDateTime.now(ZoneId.of("Asia/Kolkata")).truncatedTo(ChronoUnit.SECONDS), DateUtils.getOffsetDateTimeOfTenant()); + } + + @Test + public void getLocalDateTimeOfSystem() { + assertEquals(LocalDateTime.now(ZoneId.systemDefault()).truncatedTo(ChronoUnit.SECONDS), DateUtils.getLocalDateTimeOfSystem()); + } + + @Test + public void isDateInTheFuture() { + assertFalse(DateUtils.isDateInTheFuture(LocalDate.of(2022, 6, 11))); + assertFalse(DateUtils.isDateInTheFuture(LocalDate.of(2022, 6, 12))); + assertTrue(DateUtils.isDateInTheFuture(LocalDate.of(2022, 6, 13))); + } + + @Test + public void getBusinesLocalDate() { + assertEquals(LocalDate.of(2022, 6, 12), DateUtils.getBusinessLocalDate()); + } +}