Ejemplo n.º 1
0
    def test_file_query_eval(self):
        # 正常系 embかつリスト
        input_list = "['top', 'middle', 'parent']"
        actual = Action.file_query_eval(input_list, 'emb')
        self.assertIsInstance(actual, list)
        expected = ['top', 'middle', 'parent']
        self.assertListEqual(actual, expected)

        # 正常系 refの時
        actual = Action.file_query_eval(None, 'ref')
        self.assertIsNone(actual)

        # emb eval失敗
        input_list = "['top', 'middle', 'paren"
        with self.assertRaises(SystemExit):
            _ = Action.file_query_eval(input_list, 'emb')

        # embなのにリストでない
        input_list = "{'name':'JJ', 'age':'22', 'flg':'True'}"
        with self.assertRaises(SystemExit):
            _ = Action.file_query_eval(input_list, 'emb')

        # embなのにクエリがない
        with self.assertRaises(SystemExit):
            _ = Action.file_query_eval(None, 'emb')

        # 構造がrefとemb以外の時
        with self.assertRaises(SystemExit):
            input_list = "['top', 'middle', 'parent']"
            _ = Action.file_query_eval(input_list, 'types')
Ejemplo n.º 2
0
# iniファイル読み込み
settings = configparser.ConfigParser()
settings.read(Path.cwd() / 'ini' / 'db.ini')
con = dict([i for i in settings['DB'].items()])

db = DB(con)

# 対象oidの所属コレクションを自動的に取得 ※動作が遅い場合は使用しないこと
collection = db.find_collection_from_objectid(args.objectid)

# ドキュメント構造の取得
structure = db.get_structure(collection, args.objectid)

# クエリの変換
query = Action.file_query_eval(args.query, structure)

# ドキュメント取得
doc = db.doc(collection, args.objectid, query)
doc_keys = list(doc.keys())

# 項目を画面表示
for idx, (key, value) in enumerate(doc.items()):
    print('(' + str(idx) + ')', key, ':', value)

# 表示されている選択番号を入力
if len(doc) > 0:
    while True:
        selected_idx = input('0 - ' + str(len(doc) - 1) + ' > ')
        if selected_idx.isdecimal() and (0 <= int(selected_idx) < len(doc)):
            break