summaryrefslogtreecommitdiff
path: root/test/automated/displayless/test-tag-manager.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/automated/displayless/test-tag-manager.c')
-rw-r--r--test/automated/displayless/test-tag-manager.c126
1 files changed, 126 insertions, 0 deletions
diff --git a/test/automated/displayless/test-tag-manager.c b/test/automated/displayless/test-tag-manager.c
new file mode 100644
index 000000000..e6d5820ee
--- /dev/null
+++ b/test/automated/displayless/test-tag-manager.c
@@ -0,0 +1,126 @@
+#include "test-utilities.h"
+#include "test-utilities-tracker.h"
+
+#include <src/nautilus-file.h>
+#include <src/nautilus-tag-manager.h>
+
+typedef struct
+{
+ NautilusTagManager *tag_manager;
+ GFile *file_one;
+} TagManagerFixture;
+
+static void
+tag_manager_fixture_set_up (TagManagerFixture *fixture,
+ gconstpointer user_data)
+{
+ TrackerFilesProcessedWatcher *minerfs_watcher, *extractor_watcher;
+ g_autofree gchar *path = NULL;
+
+ fixture->tag_manager = nautilus_tag_manager_get ();
+ nautilus_tag_manager_set_cancellable (fixture->tag_manager, NULL);
+
+ minerfs_watcher = tracker_files_processed_watcher_new (TRACKER_MINERFS_BUS_NAME, TRACKER_MINERFS_OBJECT_PATH);
+ extractor_watcher = tracker_files_processed_watcher_new (TRACKER_EXTRACT_BUS_NAME, TRACKER_EXTRACT_OBJECT_PATH);
+
+ create_one_file ("stars");
+
+ path = g_build_filename (g_get_tmp_dir (), "stars_first_dir", "stars_first_dir_child", NULL);
+ fixture->file_one = g_file_new_for_path (path);
+
+ tracker_files_processed_watcher_await_file (minerfs_watcher, fixture->file_one);
+ tracker_files_processed_watcher_await_file (extractor_watcher, fixture->file_one);
+ tracker_files_processed_watcher_free (minerfs_watcher);
+ tracker_files_processed_watcher_free (extractor_watcher);
+}
+
+static void
+tag_manager_fixture_tear_down (TagManagerFixture *fixture,
+ gconstpointer user_data)
+{
+ g_clear_object (&fixture->tag_manager);
+ g_clear_object (&fixture->file_one);
+}
+
+static void
+starred_changed_cb (NautilusTagManager *tag_manager,
+ GList *selection,
+ gpointer user_data)
+{
+ GMainLoop *loop = user_data;
+
+ g_main_loop_quit (loop);
+}
+
+static void
+test_star_unstar (TagManagerFixture *fixture,
+ gconstpointer user_data)
+{
+ GList *selection;
+ gulong signal_id;
+ g_autoptr (GMainLoop) loop = NULL;
+
+ loop = g_main_loop_new (NULL, 0);
+
+ signal_id = g_signal_connect (fixture->tag_manager, "starred-changed", G_CALLBACK (starred_changed_cb), loop);
+
+ selection = g_list_prepend (NULL, nautilus_file_get (fixture->file_one));
+
+ /* Nothing is starred to begin with */
+ g_assert (nautilus_tag_manager_get_starred_files (fixture->tag_manager) == NULL);
+
+ /* Star one file and check. */
+ nautilus_tag_manager_star_files (fixture->tag_manager, NULL, selection, NULL, NULL);
+ g_main_loop_run (loop);
+
+ g_assert_cmpint (g_list_length (nautilus_tag_manager_get_starred_files (fixture->tag_manager)), ==, 1);
+
+ /* Unstar the file and check again. */
+ nautilus_tag_manager_unstar_files (fixture->tag_manager, NULL, selection, NULL, NULL);
+ g_main_loop_run (loop);
+
+ g_assert_cmpint (g_list_length (nautilus_tag_manager_get_starred_files (fixture->tag_manager)), ==, 0);
+
+ g_signal_handler_disconnect (fixture->tag_manager, signal_id);
+}
+
+static void
+setup_test_suite (void)
+{
+ g_test_add ("/test-tag-manager/star_unstar", TagManagerFixture, NULL,
+ tag_manager_fixture_set_up, test_star_unstar,
+ tag_manager_fixture_tear_down);
+}
+
+int
+main (int argc,
+ char *argv[])
+{
+ g_autoptr (TrackerSparqlConnection) connection = NULL;
+ g_autoptr (GError) error = NULL;
+ g_autoptr (NautilusFileUndoManager) undo_manager = NULL;
+
+ g_test_init (&argc, &argv, NULL);
+
+ nautilus_ensure_extension_points ();
+
+ undo_manager = nautilus_file_undo_manager_new ();
+
+ /* Make sure to run this test using the 'tracker-sandbox' script
+ * so it doesn't make changes to your real Tracker index.
+ */
+ connection = tracker_sparql_connection_bus_new ("org.freedesktop.Tracker3.Miner.Files", NULL, NULL, &error);
+
+ g_assert_no_error (error);
+
+ if (!g_getenv ("TRACKER_INDEXED_TMPDIR"))
+ {
+ g_error ("This test expects to be run inside `tracker sandbox --index-recursive-tmpdir`.");
+ }
+
+ g_setenv ("TMPDIR", g_getenv ("TRACKER_INDEXED_TMPDIR"), TRUE);
+
+ setup_test_suite ();
+
+ return g_test_run ();
+}