Test case for detach_emails_before_timestamp
ie. ImapDB.Folder::detach_emails_before_timestamp.
This commit is contained in:
parent
4875b66485
commit
150417727e
1 changed files with 65 additions and 0 deletions
|
|
@ -26,6 +26,7 @@ class Geary.ImapDB.FolderTest : TestCase {
|
|||
//add_test("merge_existing_preview", merge_existing_preview);
|
||||
add_test("set_flags", set_flags);
|
||||
add_test("set_flags_on_deleted", set_flags_on_deleted);
|
||||
add_test("detach_emails_before_timestamp", detach_emails_before_timestamp);
|
||||
}
|
||||
|
||||
public override void set_up() throws GLib.Error {
|
||||
|
|
@ -323,6 +324,70 @@ class Geary.ImapDB.FolderTest : TestCase {
|
|||
assert_flags(test, test_flags);
|
||||
}
|
||||
|
||||
public void detach_emails_before_timestamp() throws GLib.Error {
|
||||
// Ensures that messages outside the folder and within the epoch aren't
|
||||
// removed, and that messages meeting the criteria are removed.
|
||||
|
||||
this.account.db.exec(
|
||||
"INSERT INTO FolderTable (id, name) VALUES (2, 'other');"
|
||||
);
|
||||
|
||||
GLib.DateTime threshold = new GLib.DateTime.local(2020, 1, 1, 0, 0, 0);
|
||||
GLib.DateTime beyond_threshold = new GLib.DateTime.local(2019, 1, 1, 0, 0, 0);
|
||||
GLib.DateTime within_threshold = new GLib.DateTime.local(2021, 1, 1, 0, 0, 0);
|
||||
|
||||
Email.Field fixture_fields = Email.Field.RECEIVERS;
|
||||
string fixture_to = "test1@example.com";
|
||||
this.account.db.exec(
|
||||
"INSERT INTO MessageTable (id, fields, to_field, internaldate_time_t) " +
|
||||
"VALUES (1, %d, '%s', %s);".printf(fixture_fields,
|
||||
fixture_to,
|
||||
within_threshold.to_unix().to_string())
|
||||
);
|
||||
this.account.db.exec(
|
||||
"INSERT INTO MessageTable (id, fields, to_field, internaldate_time_t) " +
|
||||
"VALUES (2, %d, '%s', %s);".printf(fixture_fields,
|
||||
fixture_to,
|
||||
within_threshold.to_unix().to_string())
|
||||
);
|
||||
this.account.db.exec(
|
||||
"INSERT INTO MessageTable (id, fields, to_field, internaldate_time_t) " +
|
||||
"VALUES (3, %d, '%s', %s);".printf(fixture_fields,
|
||||
fixture_to,
|
||||
beyond_threshold.to_unix().to_string())
|
||||
);
|
||||
|
||||
this.account.db.exec("""
|
||||
INSERT INTO MessageLocationTable
|
||||
(id, message_id, folder_id, ordering, remove_marker)
|
||||
VALUES
|
||||
(1, 1, 1, 1, 1),
|
||||
(2, 2, 2, 1, 1),
|
||||
(3, 3, 1, 2, 1);
|
||||
""");
|
||||
|
||||
this.folder.detach_emails_before_timestamp.begin(
|
||||
threshold,
|
||||
null,
|
||||
(obj, ret) => { async_complete(ret); }
|
||||
);
|
||||
this.folder.detach_emails_before_timestamp.end(async_result());
|
||||
|
||||
int64[] expected = { 2, 3 };
|
||||
Db.Result result = this.account.db.query(
|
||||
"SELECT id FROM MessageLocationTable"
|
||||
);
|
||||
|
||||
int i = 0;
|
||||
while (!result.finished) {
|
||||
assert_true(i < expected.length, "Too many rows");
|
||||
assert_int64(expected[i], result.int64_at(0));
|
||||
i++;
|
||||
result.next();
|
||||
}
|
||||
assert_true(i == expected.length, "Not enough rows");
|
||||
}
|
||||
|
||||
private Email new_mock_remote_email(int64 uid,
|
||||
string? subject = null,
|
||||
Geary.EmailFlags? flags = null) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue