Пример #1
0
 def test_tag_id_creation(self):
     database = Database(path=TEST_LOG_PATH)
     existing_ids = set()
     for _ in range(1000):
         tag_id = database.generate_tag_id()
         self.assertNotIn(tag_id, existing_ids)
         existing_ids.add(tag_id)
Пример #2
0
 def test_missing_and_untracked_files(self):
     database = Database(TEST_LOG_PATH)
     documents = [{
         'name': 'first.txt',
         'type': 'txt',
         'path': 'first.txt'
     }, {
         'name': 'second.png',
         'type': 'png',
         'path': 'images/second.png'
     }, {
         'name': 'second.png',
         'type': 'png',
         'path': 'second.png'
     }]
     for document in documents:
         database.create_document(**document)
     storage = Storage(TEST_ROOT_PATH)
     storage_paths = {'first.txt', 'second.txt', 'third.txt'}
     for path in storage_paths:
         absolute_path = TEST_ROOT_PATH + path
         touch(absolute_path)
     repository = Repository(database, storage)
     untracked_files = repository.collect_untracked_file_paths()
     self.assertEqual(untracked_files, {'second.txt', 'third.txt'})
     missing_files = repository.collect_missing_file_paths()
     self.assertEqual(missing_files, {'second.png', 'images/second.png'})
Пример #3
0
 def test_empty_database_and_storage(self):
     database = Database(TEST_LOG_PATH)
     storage = Storage(TEST_ROOT_PATH)
     repository = Repository(database, storage)
     untracked_files = repository.collect_untracked_file_paths()
     self.assertEqual(len(untracked_files), 0)
     missing_files = repository.collect_missing_file_paths()
     self.assertEqual(len(missing_files), 0)
Пример #4
0
 def test_untracked_files(self):
     database = Database(TEST_LOG_PATH)
     storage = Storage(TEST_ROOT_PATH)
     paths = {'first.txt', 'second.txt', 'third.txt'}
     for path in paths:
         absolute_path = TEST_ROOT_PATH + path
         touch(absolute_path)
     repository = Repository(database, storage)
     untracked_file_paths = repository.collect_untracked_file_paths()
     self.assertEqual(untracked_file_paths, paths)
Пример #5
0
def create_sample_database():
    """
    Create a sample database for testing.
    :return: a `Context` object
    """
    database = Database(path=TEST_LOG_PATH)
    for document_id in range(1, 9):
        database.create_document(**sample_documents[document_id])
    for tag_id in range(1, 7):
        database.create_tag(name=sample_tags[tag_id])
    for relation in sample_relations:
        database.create_relation(document_id=relation[0], tag_id=relation[1])
    return database
Пример #6
0
 def test_missing_files(self):
     database = Database(TEST_LOG_PATH)
     storage = Storage(TEST_ROOT_PATH)
     documents = [{
         'name': 'first.txt',
         'type': 'txt',
         'path': 'first.txt'
     }, {
         'name': 'second.png',
         'type': 'png',
         'path': 'images/second.png'
     }, {
         'name': 'second.png',
         'type': 'png',
         'path': 'second.png'
     }]
     paths = {'first.txt', 'second.png', 'images/second.png'}
     for document in documents:
         database.create_document(**document)
     repository = Repository(database, storage)
     missing_file_paths = repository.collect_missing_file_paths()
     self.assertEqual(missing_file_paths, paths)
Пример #7
0
 def test_document_untracking(self):
     database = Database(TEST_LOG_PATH)
     documents = [{
         'name': 'first.txt',
         'type': 'txt',
         'path': 'first.txt'
     }, {
         'name': 'second.png',
         'type': 'png',
         'path': 'images/second.png'
     }, {
         'name': 'second.png',
         'type': 'png',
         'path': 'second.png'
     }]
     for document in documents:
         database.create_document(**document)
     storage = Storage(TEST_ROOT_PATH)
     storage_paths = {'first.txt', 'images/second.png', 'second.png'}
     os.mkdir(TEST_ROOT_PATH + 'images')
     for path in storage_paths:
         absolute_path = TEST_ROOT_PATH + path
         touch(absolute_path)
     repository = Repository(database, storage)
     untracked_files = repository.collect_untracked_file_paths()
     self.assertEqual(untracked_files, set())
     repository.untrack_document(3)
     untracked_files = repository.collect_untracked_file_paths()
     self.assertEqual(untracked_files, {'second.png'})
     repository.untrack_document(1)
     untracked_files = repository.collect_untracked_file_paths()
     self.assertEqual(untracked_files, {'first.txt', 'second.png'})
     repository.untrack_document(2)
     untracked_files = repository.collect_untracked_file_paths()
     self.assertEqual(untracked_files,
                      {'first.txt', 'images/second.png', 'second.png'})
Пример #8
0
 def test_track_untrack_and_track_again(self):
     database = Database(TEST_LOG_PATH)
     storage = Storage(TEST_ROOT_PATH)
     storage_paths = {'alpha.py', 'beta.py'}
     for path in storage_paths:
         absolute_path = TEST_ROOT_PATH + path
         touch(absolute_path)
     repository = Repository(database, storage)
     for _ in range(1, 10):
         untracked_files = repository.collect_untracked_file_paths()
         self.assertEqual(untracked_files, {'alpha.py', 'beta.py'})
         alpha_id = repository.track_file('alpha.py')
         untracked_files = repository.collect_untracked_file_paths()
         self.assertEqual(untracked_files, {'beta.py'})
         beta_id = repository.track_file('beta.py')
         untracked_files = repository.collect_untracked_file_paths()
         self.assertEqual(untracked_files, set())
         repository.untrack_document(alpha_id)
         untracked_files = repository.collect_untracked_file_paths()
         self.assertEqual(untracked_files, {'alpha.py'})
         repository.untrack_document(beta_id)
Пример #9
0
 def test_file_tracking(self):
     database = Database(TEST_LOG_PATH)
     storage = Storage(TEST_ROOT_PATH)
     paths = {'first.txt', 'second.txt', 'third.txt'}
     for path in paths:
         absolute_path = TEST_ROOT_PATH + path
         touch(absolute_path)
     repository = Repository(database, storage)
     untracked_files = repository.collect_untracked_file_paths()
     self.assertEqual(untracked_files,
                      {'first.txt', 'second.txt', 'third.txt'})
     document_id = repository.track_file('second.txt')
     self.assertEqual(document_id, 1)
     untracked_files = repository.collect_untracked_file_paths()
     self.assertEqual(untracked_files, {'first.txt', 'third.txt'})
     document_id = repository.track_file('third.txt')
     self.assertEqual(document_id, 2)
     untracked_files = repository.collect_untracked_file_paths()
     self.assertEqual(untracked_files, {'first.txt'})
     document_id = repository.track_file('first.txt')
     self.assertEqual(document_id, 3)
     untracked_files = repository.collect_untracked_file_paths()
     self.assertEqual(untracked_files, set())
Пример #10
0
import tkinter
from tkinter import ttk
from tkinter import StringVar
from tkinter import messagebox

from grimoire.database import Database
from grimoire.repository import Repository
from grimoire.scope import Scope
from grimoire.storage import Storage

DATABASE_PATH = '/tmp/importer/grimoire.log'
STORAGE_PATH = '/tmp/importer/storage/'
NOTES_PATH = '/tmp/importer/storage/notes/'

database = Database(DATABASE_PATH)
storage = Storage(STORAGE_PATH)
repository = Repository(database, storage)
scope = Scope(database)

if os.path.isdir(NOTES_PATH) is False:
    os.mkdir(NOTES_PATH)


def open_path(file_path):
    absolute_path = os.path.join(storage.path, file_path)
    if not os.path.isfile(absolute_path):
        raise ValueError('Invalid file path! {}'.format(absolute_path))
    extension = os.path.splitext(file_path)[1]
    if len(extension) > 1:
        t = extension[1:].lower()
Пример #11
0
 def test_empty_database(self):
     database = Database(path=TEST_LOG_PATH)
     self.assertEqual(database.count_documents(), 0)
     self.assertEqual(database.count_tags(), 0)
     self.assertEqual(database.count_relations(), 0)
Пример #12
0
 def test_invalid_untrack(self):
     database = Database(TEST_LOG_PATH)
     storage = Storage(TEST_ROOT_PATH)
     repository = Repository(database, storage)
     with self.assertRaises(ValueError):
         _ = repository.untrack_document(1234)
Пример #13
0
 def test_invalid_track(self):
     database = Database(TEST_LOG_PATH)
     storage = Storage(TEST_ROOT_PATH)
     repository = Repository(database, storage)
     with self.assertRaises(ValueError):
         _ = repository.track_file('invalid/path.error')