#!/usr/bin/env python3
"""Debian packaging applies a patch to search for datafiles in system
directories not in python's package ressources."""

import os
import unittest

from paperwork.frontend.util import (
    _get_resource_path,
    get_documentation,
    get_locale_dirs,
    preload_file,
)


class TestLoadUI(unittest.TestCase):
    def test_load_about_dialog(self):
        widget_tree = _get_resource_path(
            os.path.join("aboutdialog", "aboutdialog.glade")
        )
        self.assertIn("/usr/share/paperwork-gtk", widget_tree)

    def test_load_settings_window(self):
        widget_tree = _get_resource_path(
            os.path.join("settingswindow", "settingswindow.glade")
        )
        self.assertIn("/usr/share/paperwork-gtk", widget_tree)

    def test_load_multiscan(self):
        widget_tree = _get_resource_path(
            os.path.join("multiscan", "multiscan.glade")
        )
        self.assertIn("/usr/share/paperwork-gtk", widget_tree)

    def test_load_search_dialog(self):
        widget_tree = _get_resource_path(
            os.path.join("searchdialog", "searchdialog.glade")
        )
        self.assertIn("/usr/share/paperwork-gtk", widget_tree)

    def test_load_diag_dialog(self):
        widget_tree = _get_resource_path(
            os.path.join("diag", "diagdialog.glade")
        )
        self.assertIn("/usr/share/paperwork-gtk", widget_tree)

    def test_load_label_editor(self):
        widget_tree = _get_resource_path(
            os.path.join("labeleditor", "labeleditor.glade")
        )
        self.assertIn("/usr/share/paperwork-gtk", widget_tree)

    def test_load_import_file_selector(self):
        widget_tree = _get_resource_path(
            os.path.join("import", "importfileselector.glade")
        )
        self.assertIn("/usr/share/paperwork-gtk", widget_tree)

    def test_load_import_action(self):
        widget_tree = _get_resource_path(
            os.path.join("import", "importaction.glade")
        )
        self.assertIn("/usr/share/paperwork-gtk", widget_tree)

    def test_load_export(self):
        widget_tree = _get_resource_path(
            os.path.join("mainwindow", "export.glade"))
        self.assertIn("/usr/share/paperwork-gtk", widget_tree)

    def test_load_search_bar(self):
        widget_tree = _get_resource_path(
            os.path.join("mainwindow", "searchbar.glade")
        )
        self.assertIn("/usr/share/paperwork-gtk", widget_tree)

    def test_load_main_window(self):
        widget_tree = _get_resource_path(
            os.path.join("mainwindow", "mainwindow.glade")
        )
        self.assertIn("/usr/share/paperwork-gtk", widget_tree)


class TestLoadCSS(unittest.TestCase):
    def test_load_css(self):
        css = _get_resource_path("application.css")
        self.assertIn("/usr/share/paperwork-gtk", css)


class TestLoadImages(unittest.TestCase):
    def test_load_waiting(self):
        img = _get_resource_path("waiting.png", pkg="paperwork.frontend")
        self.assertIn("/usr/share/paperwork-gtk", img)

    def test_load_logo(self):
        img = _get_resource_path("paperwork_100.png",
                                 pkg="paperwork.frontend.data")
        self.assertIn("/usr/share/paperwork-gtk", img)

    def test_load_magic_colors(self):
        img = _get_resource_path("magic_colors.png", pkg="paperwork.frontend")
        self.assertIn("/usr/share/paperwork-gtk", img)


class TestPreloadFiles(unittest.TestCase):
    def test_preload_logo(self):
        logo_path = preload_file("paperwork.svg")
        self.assertIn("/usr/share/paperwork-gtk", logo_path)

    def test_prelaod_halo(self):
        logo_path = preload_file("paperwork_halo.svg")
        self.assertIn("/usr/share/paperwork-gtk", logo_path)


class TestLocaleDirs(unittest.TestCase):
    def test_get_locale_dirs(self):
        self.assertIn("/usr/share", get_locale_dirs())


class TestDocumentation(unittest.TestCase):
    def test_get_intro(self):
        docpath = get_documentation("intro")
        self.assertEqual("/usr/share/doc/paperwork-gtk/intro.pdf", docpath)

    def test_get_usage(self):
        docpath = get_documentation("usage")
        self.assertEqual("/usr/share/doc/paperwork-gtk/usage.pdf", docpath)

    def test_get_intro_fr(self):
        docpath = get_documentation("intro_fr")
        self.assertEqual("/usr/share/doc/paperwork-gtk/intro_fr.pdf", docpath)

    def test_get_intro_de(self):
        docpath = get_documentation("intro_de")
        self.assertEqual("/usr/share/doc/paperwork-gtk/intro_de.pdf", docpath)


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