#!/usr/bin/env python3

import unittest
import subprocess
import sys
import os

from gi.repository import EDataServer

class TestEDataServer(unittest.TestCase):

  registry = ()

  @classmethod
  def setUpClass(self):
    self.registry = EDataServer.SourceRegistry.new_sync(None)

  def testSourceRegistryIsValid(self):
    self.assertIsInstance(self.registry, EDataServer.SourceRegistry)

  def testSourceRegistryHasSources(self):
    sources = self.registry.list_sources(None)
    self.assertIsInstance(sources[0], EDataServer.Source)
    print()
    print("Found a source: " + sources[0].get_display_name())

  def testSourceRegistryBuiltinMailAccountExists(self):
    mail_account = self.registry.ref_builtin_mail_account()
    self.assertIsInstance(mail_account, EDataServer.Source)
    self.assertTrue(mail_account.has_extension(EDataServer.SOURCE_EXTENSION_MAIL_ACCOUNT))
    self.assertIn('local', mail_account.get_uid())

  def testSourceRegistryBuiltinCalendarExists(self):
    calendar = self.registry.ref_builtin_calendar()
    self.assertIsInstance(calendar, EDataServer.Source)
    self.assertTrue(calendar.has_extension(EDataServer.SOURCE_EXTENSION_CALENDAR))
    self.assertIn('system-calendar', calendar.get_uid())

  def testSourceRegistryBuiltinAddressBookExists(self):
    addressbook = self.registry.ref_builtin_address_book()
    self.assertIsInstance(addressbook, EDataServer.Source)
    self.assertTrue(addressbook.has_extension(EDataServer.SOURCE_EXTENSION_ADDRESS_BOOK))
    self.assertIn('system-address-book', addressbook.get_uid())

unittest.main(testRunner=unittest.TextTestRunner(stream=sys.stdout, verbosity=2))

