~aleteoryx/muditaos

2c8059216b4d8e621d161995d1f6995c2d490b9b — Tomek Sobkowiak 5 years ago f60b9c0
[EGD-5386] Fix tests in event table

Fix leap year handling in events table entry creation
Set hours/minutes during events table entry creation
M module-apps/application-calendar/data/dateCommon.hpp => module-apps/application-calendar/data/dateCommon.hpp +23 -5
@@ 133,15 133,14 @@ inline uint32_t TimePointToMinutes(const calendar::TimePoint &tp)

inline calendar::TimePoint getFirstWeekDay(const calendar::TimePoint &tp)
{
    date::year_month_day yearMonthDay = date::year_month_day{date::floor<date::days>(tp)};
    auto hourV                        = TimePointToHour24H(tp);
    auto minuteV                      = TimePointToMinutes(tp);
    auto time_of_day  = TimePointToHourMinSec(tp);
    auto yearMonthDay = date::year_month_day{date::floor<date::days>(tp)};
    while (date::weekday{yearMonthDay} != date::mon) {
        auto decrementedDay = --yearMonthDay.day();
        yearMonthDay        = yearMonthDay.year() / yearMonthDay.month() / decrementedDay;
    }
    auto finalDate     = date::sys_days{yearMonthDay.year() / yearMonthDay.month() / yearMonthDay.day()};
    auto finalDateTime = finalDate + std::chrono::hours(hourV) + std::chrono::minutes(minuteV);
    auto finalDateTime = finalDate + time_of_day.hours() + time_of_day.minutes();

    return finalDateTime;
}


@@ 173,7 172,26 @@ inline std::string TimePointToString(const calendar::TimePoint &tp, date::months
            timePoint = date::sys_days{yearMonthDay.year() / yearMonthDay.month() / yearMonthDay.day()};
        }
    }
    return date::format("%F %T", std::chrono::time_point_cast<std::chrono::seconds>(timePoint));

    auto time_of_day = TimePointToHourMinSec(tp);
    return date::format(
        "%F %T",
        std::chrono::time_point_cast<std::chrono::seconds>(timePoint + time_of_day.hours() + time_of_day.minutes()));
}

inline std::string TimePointToString(const calendar::TimePoint &tp, date::years years)
{
    auto yearMonthDay     = date::year_month_day{date::floor<date::days>(tp)};
    auto yearMonthDayLast = (yearMonthDay.year() + date::years(years)) / yearMonthDay.month() / date::last;

    calendar::TimePoint timePoint =
        date::sys_days{yearMonthDayLast.year() / yearMonthDayLast.month() /
                       ((yearMonthDayLast.day() == yearMonthDay.day()) ? yearMonthDayLast.day() : yearMonthDay.day())};

    auto time_of_day = TimePointToHourMinSec(tp);
    return date::format(
        "%F %T",
        std::chrono::time_point_cast<std::chrono::seconds>(timePoint + time_of_day.hours() + time_of_day.minutes()));
}

inline std::string TimePointToLocalizedDateString(const calendar::TimePoint &tp, const std::string format = "")

M module-db/Tables/EventsTable.cpp => module-db/Tables/EventsTable.cpp +8 -8
@@ 422,8 422,8 @@ bool EventsTable::addYear(EventsTableRow entry)
                       entry.provider_iCalUid.c_str(),
                       entry.UID.c_str(),
                       entry.title.c_str(),
                       TimePointToString(entry.date_from + date::years{1}).c_str(),
                       TimePointToString(entry.date_till + date::years{1}).c_str(),
                       TimePointToString(entry.date_from, date::years{1}).c_str(),
                       TimePointToString(entry.date_till, date::years{1}).c_str(),
                       entry.reminder,
                       entry.repeat,
                       TimePointToString(entry.reminder_fired).c_str(),


@@ 432,8 432,8 @@ bool EventsTable::addYear(EventsTableRow entry)
                       entry.provider_iCalUid.c_str(),
                       entry.UID.c_str(),
                       entry.title.c_str(),
                       TimePointToString(entry.date_from + date::years{2}).c_str(),
                       TimePointToString(entry.date_till + date::years{2}).c_str(),
                       TimePointToString(entry.date_from, date::years{2}).c_str(),
                       TimePointToString(entry.date_till, date::years{2}).c_str(),
                       entry.reminder,
                       entry.repeat,
                       TimePointToString(entry.reminder_fired).c_str(),


@@ 442,8 442,8 @@ bool EventsTable::addYear(EventsTableRow entry)
                       entry.provider_iCalUid.c_str(),
                       entry.UID.c_str(),
                       entry.title.c_str(),
                       TimePointToString(entry.date_from + date::years{3}).c_str(),
                       TimePointToString(entry.date_till + date::years{3}).c_str(),
                       TimePointToString(entry.date_from, date::years{3}).c_str(),
                       TimePointToString(entry.date_till, date::years{3}).c_str(),
                       entry.reminder,
                       entry.repeat,
                       TimePointToString(entry.reminder_fired).c_str(),


@@ 452,8 452,8 @@ bool EventsTable::addYear(EventsTableRow entry)
                       entry.provider_iCalUid.c_str(),
                       entry.UID.c_str(),
                       entry.title.c_str(),
                       TimePointToString(entry.date_from + date::years{4}).c_str(),
                       TimePointToString(entry.date_till + date::years{4}).c_str(),
                       TimePointToString(entry.date_from, date::years{4}).c_str(),
                       TimePointToString(entry.date_till, date::years{4}).c_str(),
                       entry.reminder,
                       entry.repeat,
                       TimePointToString(entry.reminder_fired).c_str(),

M module-db/tests/EventsTable_tests.cpp => module-db/tests/EventsTable_tests.cpp +21 -21
@@ 165,11 165,11 @@ TEST_CASE("Events Table tests")
        }
        CHECK(eventsTbl.count() == 0);

        uint32_t numberOfEvents = 7;
        uint32_t numberOfEvents       = 7;
        calendar::TimePoint startDate = TimePointFromString("2019-10-20 14:30:00");
        calendar::TimePoint endDate   = TimePointFromString("2019-10-20 15:30:00");
        testRow1.date_from      = startDate;
        testRow1.date_till      = endDate;
        testRow1.date_from            = startDate;
        testRow1.date_till            = endDate;
        CHECK(eventsTbl.addDaily(testRow1));
        CHECK(eventsTbl.count() == numberOfEvents);



@@ 200,11 200,11 @@ TEST_CASE("Events Table tests")
        }
        CHECK(eventsTbl.count() == 0);

        uint32_t numberOfEvents = 4;
        uint32_t numberOfEvents       = 4;
        calendar::TimePoint startDate = TimePointFromString("2019-10-20 14:30:00");
        calendar::TimePoint endDate   = TimePointFromString("2019-10-20 15:30:00");
        testRow1.date_from      = startDate;
        testRow1.date_till      = endDate;
        testRow1.date_from            = startDate;
        testRow1.date_till            = endDate;
        CHECK(eventsTbl.addWeekly(testRow1));
        CHECK(eventsTbl.count() == numberOfEvents);



@@ 235,11 235,11 @@ TEST_CASE("Events Table tests")
        }
        CHECK(eventsTbl.count() == 0);

        uint32_t numberOfEvents = 4;
        uint32_t numberOfEvents       = 4;
        calendar::TimePoint startDate = TimePointFromString("2019-10-20 14:30:00");
        calendar::TimePoint endDate   = TimePointFromString("2019-10-20 15:30:00");
        testRow1.date_from      = startDate;
        testRow1.date_till      = endDate;
        testRow1.date_from            = startDate;
        testRow1.date_till            = endDate;
        CHECK(eventsTbl.addTwoWeeks(testRow1));
        CHECK(eventsTbl.count() == numberOfEvents);



@@ 438,7 438,7 @@ TEST_CASE("Events Table tests")
        {
            uint32_t customRepeatOption =
                static_cast<uint32_t>(weekDayOption::monday) + static_cast<uint32_t>(weekDayOption::wednesday);
            uint32_t numberOfEvents     = 9;
            uint32_t numberOfEvents               = 9;
            calendar::TimePoint originalStartDate = TimePointFromString("2020-12-10 14:30:00"); // thursday
            calendar::TimePoint originalEndDate   = TimePointFromString("2020-12-10 15:30:00"); // thursday



@@ 450,7 450,7 @@ TEST_CASE("Events Table tests")
            uint32_t customRepeatOption =
                static_cast<uint32_t>(weekDayOption::monday) + static_cast<uint32_t>(weekDayOption::wednesday) +
                static_cast<uint32_t>(weekDayOption::tuesday) + static_cast<uint32_t>(weekDayOption::sunday);
            uint32_t numberOfEvents     = 17;
            uint32_t numberOfEvents               = 17;
            calendar::TimePoint originalStartDate = TimePointFromString("2020-12-10 14:30:00"); // thursday
            calendar::TimePoint originalEndDate   = TimePointFromString("2020-12-10 15:30:00"); // thursday



@@ 459,8 459,8 @@ TEST_CASE("Events Table tests")

        SECTION("Repeat Saturdays (original thursday)")
        {
            uint32_t customRepeatOption = static_cast<uint32_t>(weekDayOption::saturday);
            uint32_t numberOfEvents     = 5;
            uint32_t customRepeatOption           = static_cast<uint32_t>(weekDayOption::saturday);
            uint32_t numberOfEvents               = 5;
            calendar::TimePoint originalStartDate = TimePointFromString("2020-12-10 14:30:00"); // thursday
            calendar::TimePoint originalEndDate   = TimePointFromString("2020-12-10 15:30:00"); // thursday



@@ 518,8 518,8 @@ TEST_CASE("Events Table tests")
        std::string newTitle = "Updated Title", newProviderID = "PurePhoneUpdated";
        calendar::TimePoint newDateFrom = TimePointFromString("2020-10-20 15:00:00"),
                            newDateTill = TimePointFromString("2020-10-20 16:00:00");
        uint32_t newReminder     = static_cast<uint32_t>(Reminder::one_week_before);
        uint32_t newRepeatOption = static_cast<uint32_t>(Repeat::biweekly);
        uint32_t newReminder            = static_cast<uint32_t>(Reminder::one_week_before);
        uint32_t newRepeatOption        = static_cast<uint32_t>(Repeat::biweekly);

        /// check title and provider id update
        auto entryToUpdate        = eventsTbl.getById(testRow6.ID);


@@ 571,11 571,11 @@ TEST_CASE("Events Table tests")
        CHECK(eventsTbl.count() == 6);

        std::string newTitle = "Updated Title", newProviderType = "PurePhoneUpdate", newProviderID = "newID",
                    newProvideriCalUid = "new iCalUid";
                    newProvideriCalUid  = "new iCalUid";
        calendar::TimePoint newDateFrom = TimePointFromString("2020-10-20 15:00:00"),
                            newDateTill = TimePointFromString("2020-10-20 16:00:00");
        uint32_t newReminder           = static_cast<uint32_t>(Reminder::one_week_before);
        uint32_t newRepeatOption       = static_cast<uint32_t>(Repeat::biweekly);
        uint32_t newReminder            = static_cast<uint32_t>(Reminder::one_week_before);
        uint32_t newRepeatOption        = static_cast<uint32_t>(Repeat::biweekly);

        /// check title and provider id update
        auto entryToUpdate             = eventsTbl.getById(testRow6.ID);


@@ 629,11 629,11 @@ TEST_CASE("Events Table tests")
        CHECK(eventsTbl.count() == 6);

        std::string newTitle = "Updated Title", newProviderType = "PurePhoneUpdate", newProviderID = "newID",
                    newProvideriCalUid = "new iCalUid";
                    newProvideriCalUid  = "new iCalUid";
        calendar::TimePoint newDateFrom = TimePointFromString("2020-10-20 15:00:00"),
                            newDateTill = TimePointFromString("2020-10-20 16:00:00");
        uint32_t newReminder           = static_cast<uint32_t>(Reminder::one_week_before);
        uint32_t newRepeatOption       = static_cast<uint32_t>(Repeat::biweekly);
        uint32_t newReminder            = static_cast<uint32_t>(Reminder::one_week_before);
        uint32_t newRepeatOption        = static_cast<uint32_t>(Repeat::biweekly);

        /// check title and provider id update
        auto entryToUpdate             = eventsTbl.getByUID(testRow6.UID);