From c87aa3a6ddab439f037b5fc1db5fd9304fc40bb8 Mon Sep 17 00:00:00 2001 From: Renato Araujo Oliveira Filho Date: Tue, 21 Jun 2016 18:39:39 -0300 Subject: Implemented unit test. --- tests/test-eds-ics-non-selected-source.cpp | 94 +++++++++++++++++++++++++++ tests/test-eds-ics-non-selected-source.ics.in | 28 ++++++++ 2 files changed, 122 insertions(+) create mode 100644 tests/test-eds-ics-non-selected-source.cpp create mode 100644 tests/test-eds-ics-non-selected-source.ics.in (limited to 'tests') diff --git a/tests/test-eds-ics-non-selected-source.cpp b/tests/test-eds-ics-non-selected-source.cpp new file mode 100644 index 0000000..5101b32 --- /dev/null +++ b/tests/test-eds-ics-non-selected-source.cpp @@ -0,0 +1,94 @@ +/* + * Copyright 2015 Canonical Ltd. + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 3, as published + * by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranties of + * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + * + * Authors: + * Renato Araujo Oliveira Filh + */ + +#include + +#include +#include +#include + +#include + +#include + +#include "glib-fixture.h" +#include "timezone-mock.h" + +using namespace ayatana::indicator::datetime; +using VAlarmFixture = GlibFixture; + +/*** +**** +***/ + +TEST_F(VAlarmFixture, NonSelectedSources) +{ + // start the EDS engine + auto engine = std::make_shared(std::make_shared()); + + // we need a consistent timezone for the planner and our local DateTimes + constexpr char const * zone_str {"America/Chicago"}; + auto tz = std::make_shared(zone_str); + auto gtz = g_time_zone_new(zone_str); + + // make a planner that looks at the first half of 2015 in EDS + auto planner = std::make_shared(engine, tz); + const DateTime range_begin {gtz, 2015,1, 1, 0, 0, 0.0}; + const DateTime range_end {gtz, 2015,6,31,23,59,59.5}; + planner->range().set(std::make_pair(range_begin, range_end)); + + // give EDS a moment to load + if (planner->appointments().get().empty()) { + g_message("waiting a moment for EDS to load..."); + auto on_appointments_changed = [this](const std::vector& appointments){ + g_message("ah, they loaded"); + if (!appointments.empty()) + g_main_loop_quit(loop); + }; + core::ScopedConnection conn(planner->appointments().changed().connect(on_appointments_changed)); + constexpr int max_wait_sec = 10; + wait_msec(max_wait_sec * G_TIME_SPAN_MILLISECOND); + } + + // appointmes are visible + auto appts = planner->appointments().get(); + EXPECT_TRUE(appts.size() > 0); + + // Unselect all sources + auto registry = e_source_registry_new_sync(NULL, NULL); + auto sources = e_source_registry_list_sources(registry, E_SOURCE_EXTENSION_TASK_LIST); + for (auto l=sources; l!=nullptr; l=l->next) { + auto source = static_cast(l->data); + auto extension = e_source_get_extension(source, E_SOURCE_EXTENSION_CALENDAR); + e_source_selectable_set_selected(E_SOURCE_SELECTABLE(extension), FALSE); + e_source_write_sync(source, NULL, NULL); + } + + g_list_free_full(sources, g_object_unref); + g_object_unref(registry); + + // give some time to planner update + wait_msec(5 * G_TIME_SPAN_MILLISECOND); + + // the planner should be empty at this point + appts = planner->appointments().get(); + EXPECT_TRUE(appts.size() == 0); + // cleanup + g_time_zone_unref(gtz); +} diff --git a/tests/test-eds-ics-non-selected-source.ics.in b/tests/test-eds-ics-non-selected-source.ics.in new file mode 100644 index 0000000..19f93d7 --- /dev/null +++ b/tests/test-eds-ics-non-selected-source.ics.in @@ -0,0 +1,28 @@ +BEGIN:VCALENDAR +CALSCALE:GREGORIAN +PRODID:-//Ximian//NONSGML Evolution Calendar//EN +VERSION:2.0 +X-EVOLUTION-DATA-REVISION:2015-05-07T21:14:49.315443Z(0) +BEGIN:VTODO +UID:20150507T211449Z-4262-32011-1418-1@lomiri-phablet +DTSTAMP:20150508T211449Z +DTSTART:20150508T164000 +RRULE:FREQ=WEEKLY;BYDAY=FR +SUMMARY:Alarm +CATEGORIES:x-lomiri-alarm +CREATED:20150507T211449Z +LAST-MODIFIED:20150507T211449Z +BEGIN:VALARM +X-EVOLUTION-ALARM-UID:20150507T211449Z-4262-32011-1418-2@lomiri-phablet +ACTION:AUDIO +ATTACH:file://@ALARM_DEFAULT_SOUND@ +TRIGGER;VALUE=DURATION;RELATED=START:PT0S +END:VALARM +BEGIN:VALARM +X-EVOLUTION-ALARM-UID:20150507T211449Z-4262-32011-1418-3@lomiri-phablet +ACTION:DISPLAY +DESCRIPTION:Alarm +TRIGGER;VALUE=DURATION;RELATED=START:PT0S +END:VALARM +END:VTODO +END:VCALENDAR -- cgit v1.2.3