# -*- coding: utf-8 -*-
import unittest
import os
from media.monitor.syncdb import AirtimeDB
from media.monitor.log import get_logger
from media.monitor.pure import partition
import api_clients.api_client as ac
import prepare_tests

class TestAirtimeDB(unittest.TestCase):
    def setUp(self):
        self.ac = ac.AirtimeApiClient(logger=get_logger(),
                                      config_path=prepare_tests.real_config)

    def test_syncdb_init(self):
        sdb = AirtimeDB(self.ac)
        self.assertTrue( len(sdb.list_storable_paths()) > 0 )

    def test_list(self):
        self.sdb = AirtimeDB(self.ac)
        for watch_dir in self.sdb.list_storable_paths():
            self.assertTrue( os.path.exists(watch_dir) )

    def test_directory_get_files(self):
        sdb = AirtimeDB(self.ac)
        print(sdb.list_storable_paths())
        for wdir in sdb.list_storable_paths():
            files = sdb.directory_get_files(wdir)
            print( "total files: %d" % len(files) )
            self.assertTrue( len(files) >= 0 )
            self.assertTrue( isinstance(files, set) )
            exist, deleted = partition(os.path.exists, files)
            print("(exist, deleted) = (%d, %d)" % ( len(exist), len(deleted) ) )

if __name__ == '__main__': unittest.main()