def test_imap_handle_folder_renames(db, default_account): monitor = ImapSyncMonitor(default_account) folder_names_and_roles = { ('INBOX', 'inbox'), ('[Gmail]/Todos', 'all'), ('[Gmail]/Basura', 'trash') } folders_renamed = { ('INBOX', 'inbox'), ('[Gmail]/All', 'all'), ('[Gmail]/Trash', 'trash') } original_raw_folders = [RawFolder(*args) for args in folder_names_and_roles] renamed_raw_folders = [RawFolder(*args) for args in folders_renamed] monitor.save_folder_names(db.session, original_raw_folders) assert len(db.session.query(Folder).filter( Folder.account_id == default_account.id).all()) == 3 monitor.save_folder_names(db.session, renamed_raw_folders) saved_folder_data = set( db.session.query(Folder.name, Folder.canonical_name).filter( Folder.account_id == default_account.id).all()) assert saved_folder_data == folders_renamed
def test_handle_trailing_whitespace(db, default_account): raw_folders = [ RawFolder('Miscellania', ''), RawFolder('Miscellania ', ''), RawFolder('Inbox', 'inbox') ] monitor = ImapSyncMonitor(default_account) monitor.save_folder_names(db.session, raw_folders) saved_folder_data = set( db.session.query(Folder.name, Folder.canonical_name).filter( Folder.account_id == default_account.id)) assert saved_folder_data == {('Miscellania', ''), ('Inbox', 'inbox')}
def test_handle_trailing_whitespace(db, default_account): raw_folders = [ RawFolder('Miscellania', None), RawFolder('Miscellania ', None), RawFolder('Inbox', 'inbox') ] monitor = ImapSyncMonitor(default_account) monitor.save_folder_names(db.session, raw_folders) saved_folder_data = set( db.session.query(Folder.name, Folder.canonical_name).filter( Folder.account_id == default_account.id) ) assert saved_folder_data == {('Miscellania', None), ('Inbox', 'inbox')}
def test_imap_remote_delete(db, default_account): monitor = ImapSyncMonitor(default_account) folders = { ('All', 'inbox'), ('Trash', 'trash'), ('Applications', ''), } new_folders = {('All', 'inbox'), ('Trash', 'trash')} original_raw_folders = [RawFolder(*args) for args in folders] new_raw_folders = [RawFolder(*args) for args in new_folders] monitor.save_folder_names(db.session, original_raw_folders) original_folders = db.session.query(Folder).filter( Folder.account_id == default_account.id).all() assert len(original_folders) == 3 for label in original_folders: assert label.category is not None original_categories = { f.canonical_name: f.category.display_name for f in original_folders } for folder in folders: display_name, role = folder assert original_categories[role] == display_name monitor.save_folder_names(db.session, new_raw_folders) saved_folder_data = set( db.session.query(Folder.name, Folder.canonical_name).filter( Folder.account_id == default_account.id).all()) assert saved_folder_data == new_folders renamed_folders = db.session.query(Folder).filter( Folder.account_id == default_account.id).all() for folder in renamed_folders: assert folder.category is not None renamed_categories = { f.canonical_name: f.category.display_name for f in renamed_folders } for folder in new_folders: display_name, role = folder assert renamed_categories[role] == display_name
def test_imap_remote_delete(db, default_account): monitor = ImapSyncMonitor(default_account) folders = { ('All', 'inbox'), ('Trash', 'trash'), ('Applications', ''), } new_folders = { ('All', 'inbox'), ('Trash', 'trash') } original_raw_folders = [RawFolder(*args) for args in folders] new_raw_folders = [RawFolder(*args) for args in new_folders] monitor.save_folder_names(db.session, original_raw_folders) original_folders = db.session.query(Folder).filter( Folder.account_id == default_account.id).all() assert len(original_folders) == 3 for label in original_folders: assert label.category is not None original_categories = {f.canonical_name: f.category.display_name for f in original_folders} for folder in folders: display_name, role = folder assert original_categories[role] == display_name monitor.save_folder_names(db.session, new_raw_folders) saved_folder_data = set( db.session.query(Folder.name, Folder.canonical_name).filter( Folder.account_id == default_account.id).all()) assert saved_folder_data == new_folders renamed_folders = db.session.query(Folder).filter( Folder.account_id == default_account.id).all() for folder in renamed_folders: assert folder.category is not None renamed_categories = {f.canonical_name: f.category.display_name for f in renamed_folders} for folder in new_folders: display_name, role = folder assert renamed_categories[role] == display_name
def test_handle_folder_deletions(db, default_account): monitor = ImapSyncMonitor(default_account) folder_names_and_roles = { ('INBOX', 'inbox'), ('Miscellania', None), } raw_folders = [RawFolder(*args) for args in folder_names_and_roles] monitor.save_folder_names(db.session, raw_folders) assert len(db.session.query(Folder).filter( Folder.account_id == default_account.id).all()) == 2 monitor.save_folder_names(db.session, [RawFolder('INBOX', 'inbox')]) saved_folder_data = set( db.session.query(Folder.name, Folder.canonical_name).filter( Folder.account_id == default_account.id).all()) assert saved_folder_data == {('INBOX', 'inbox')}
def test_save_generic_folder_names(db, default_account): monitor = ImapSyncMonitor(default_account) folder_names_and_roles = { ('INBOX', 'inbox'), ('Sent Mail', 'sent'), ('Sent Messages', 'sent'), ('Drafts', 'drafts'), ('Miscellania', None), ('miscellania', None), ('Recipes', None), } raw_folders = [RawFolder(*args) for args in folder_names_and_roles] monitor.save_folder_names(db.session, raw_folders) saved_folder_data = set( db.session.query(Folder.name, Folder.canonical_name).filter( Folder.account_id == default_account.id).all()) assert saved_folder_data == folder_names_and_roles
def test_imap_save_generic_folder_names(db, default_account): monitor = ImapSyncMonitor(default_account) folder_names_and_roles = { ('INBOX', 'inbox'), ('Sent Mail', 'sent'), ('Sent Messages', 'sent'), ('Drafts', 'drafts'), ('Miscellania', ''), ('miscellania', ''), ('Recipes', ''), } raw_folders = [RawFolder(*args) for args in folder_names_and_roles] monitor.save_folder_names(db.session, raw_folders) saved_folder_data = set( db.session.query(Folder.name, Folder.canonical_name).filter( Folder.account_id == default_account.id).all()) assert saved_folder_data == folder_names_and_roles
def create_foldersyncstatuses(db, default_account): # Create a bunch of folder sync statuses. monitor = ImapSyncMonitor(default_account) folder_names_and_roles = { RawFolder('INBOX', 'inbox'), RawFolder('Sent Mail', 'sent'), RawFolder('Sent Messages', 'sent'), RawFolder('Drafts', 'drafts'), RawFolder('Miscellania', None), RawFolder('miscellania', None), RawFolder('Recipes', None), } monitor.save_folder_names(db.session, folder_names_and_roles) folders = db.session.query(Folder).filter_by(account_id=default_account.id) for folder in folders: add_imap_status_info_rows(folder.id, default_account.id, db.session) db.session.commit()
def create_foldersyncstatuses(db, default_account): # Create a bunch of folder sync statuses. monitor = ImapSyncMonitor(default_account) folder_names_and_roles = { RawFolder("INBOX", "inbox"), RawFolder("Sent Mail", "sent"), RawFolder("Sent Messages", "sent"), RawFolder("Drafts", "drafts"), RawFolder("Miscellania", None), RawFolder("miscellania", None), RawFolder("Recipes", None), } monitor.save_folder_names(db.session, folder_names_and_roles) folders = db.session.query(Folder).filter_by(account_id=default_account.id) for folder in folders: add_imap_status_info_rows(folder.id, default_account.id, db.session) db.session.commit()
def test_imap_handle_folder_renames(db, default_account): monitor = ImapSyncMonitor(default_account) folder_names_and_roles = {('INBOX', 'inbox'), ('[Gmail]/Todos', 'all'), ('[Gmail]/Basura', 'trash')} folders_renamed = {('INBOX', 'inbox'), ('[Gmail]/All', 'all'), ('[Gmail]/Trash', 'trash')} original_raw_folders = [ RawFolder(*args) for args in folder_names_and_roles ] renamed_raw_folders = [RawFolder(*args) for args in folders_renamed] monitor.save_folder_names(db.session, original_raw_folders) assert len( db.session.query(Folder).filter( Folder.account_id == default_account.id).all()) == 3 monitor.save_folder_names(db.session, renamed_raw_folders) saved_folder_data = set( db.session.query(Folder.name, Folder.canonical_name).filter( Folder.account_id == default_account.id).all()) assert saved_folder_data == folders_renamed