# -*- coding: utf-8 -*-
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

import unittest

from compare_locales import webapps


class TestFileComparison(unittest.TestCase):

    def mock_FileComparison(self, mock_listdir):
        class Target(webapps.FileComparison):
            def _listdir(self):
                return mock_listdir()
        return Target('.', 'en-US')

    def test_just_reference(self):
        def _listdir():
            return ['my_app.en-US.properties']
        filecomp = self.mock_FileComparison(_listdir)
        filecomp.files()
        self.assertEqual(filecomp.locales(), [])
        self.assertEqual(filecomp._reference.keys(), ['my_app'])
        file_ = filecomp._reference['my_app']
        self.assertEqual(file_.file, 'locales/my_app.en-US.properties')

    def test_just_locales(self):
        def _listdir():
            return ['my_app.ar.properties',
                    'my_app.sr-Latn.properties',
                    'my_app.sv-SE.properties',
                    'my_app.po_SI.properties']
        filecomp = self.mock_FileComparison(_listdir)
        filecomp.files()
        self.assertEqual(filecomp.locales(),
                         ['ar', 'sr-Latn', 'sv-SE'])
        self.assertEqual(filecomp._files['ar'].keys(), ['my_app'])
        file_ = filecomp._files['ar']['my_app']
        self.assertEqual(file_.file, 'locales/my_app.ar.properties')