From 6ec23a5e3a0feec3d067e2866943fa7de3b39f61 Mon Sep 17 00:00:00 2001
From: Hanne Moa <hanne.moa@uninett.no>
Date: Wed, 13 Jul 2016 15:44:52 +0200
Subject: [PATCH] Test module \SimpleSAML\Locale\Localization

---
 lib/SimpleSAML/Locale/Localization.php        | 12 ++-
 .../SimpleSAML/Locale/LocalizationTest.php    | 87 +++++++++++++++++++
 2 files changed, 98 insertions(+), 1 deletion(-)
 create mode 100644 tests/lib/SimpleSAML/Locale/LocalizationTest.php

diff --git a/lib/SimpleSAML/Locale/Localization.php b/lib/SimpleSAML/Locale/Localization.php
index e539c241f..e11a56c3a 100644
--- a/lib/SimpleSAML/Locale/Localization.php
+++ b/lib/SimpleSAML/Locale/Localization.php
@@ -42,6 +42,16 @@ class Localization
      */
     private $localeDomainMap = array();
 
+    /*
+     * Pointer to currently active translator
+     */
+    private $translator;
+
+    /*
+     * Currently active domain
+     */
+    private $currentDomain;
+
 
     /**
      * Constructor
@@ -75,7 +85,7 @@ class Localization
      * @param string $localeDir Location of translations
      * @param string $domain Domain at location
      */
-    private function addDomain($localeDir, $domain)
+    public function addDomain($localeDir, $domain)
     {
         $this->localeDomainMap[$domain] = $localeDir;
     }
diff --git a/tests/lib/SimpleSAML/Locale/LocalizationTest.php b/tests/lib/SimpleSAML/Locale/LocalizationTest.php
new file mode 100644
index 000000000..954b5a03f
--- /dev/null
+++ b/tests/lib/SimpleSAML/Locale/LocalizationTest.php
@@ -0,0 +1,87 @@
+<?php
+
+namespace SimpleSAML\Test\Locale;
+
+use Gettext\Translations;
+use Gettext\Translator;
+
+use SimpleSAML\Locale\Localization;
+
+class LocalizationTest extends \PHPUnit_Framework_TestCase
+{
+
+
+    /**
+     * Test SimpleSAML\Locale\Localization().
+     */
+    public function testLocalization()
+    {
+        // The constructor should activate the default domain
+        $c = \SimpleSAML_Configuration::loadFromArray(
+            array('language.i18n.backend' => 'twig.gettextgettext')
+        );
+        $l = new Localization($c);
+        $this->assertTrue($l->isI18NBackendDefault());
+        $this->assertEquals(Localization::DEFAULT_DOMAIN, 'ssp');
+        $this->assertEquals($l->getCurrentDomain(), Localization::DEFAULT_DOMAIN);
+    }
+
+    /**
+     * Test SimpleSAML\Locale\Localization::activateDomain().
+     */
+    public function testAddDomain()
+    {
+        $c = \SimpleSAML_Configuration::loadFromArray(
+            array('language.i18n.backend' => 'twig.gettextgettext')
+        );
+        $l = new Localization($c);
+        $newDomain = 'test';
+        $newDomainLocaleDir = '/tmp/nonexistent.po';
+        $l->addDomain($newDomainLocaleDir, $newDomain);
+        $registeredDomains = $l->getRegisteredDomains();
+        $this->assertArrayHasKey($newDomain, $registeredDomains);
+        $this->assertEquals($registeredDomains[$newDomain], $newDomainLocaleDir);
+    }
+
+    /**
+     * Test SimpleSAML\Locale\Localization::activateDomain().
+     */
+    public function testActivateDomain()
+    {
+        // Add the domain to activate
+        $c = \SimpleSAML_Configuration::loadFromArray(
+            array('language.i18n.backend' => 'twig.gettextgettext')
+        );
+        $l = new Localization($c);
+        $newDomain = 'test';
+        $newDomainLocaleDir = $l->getLocaleDir();
+        $l->addDomain($newDomainLocaleDir, $newDomain);
+
+        // Activate
+        $l->activateDomain($newDomain);
+        $curDomain = $l->getCurrentDomain();
+        $this->assertEquals($curDomain, $newDomain);
+    }
+
+    /**
+     * Test SimpleSAML\Locale\Localization::restoreDefaultDomain().
+     */
+    public function testRestoreDefaultDomain()
+    {
+        // Add the domain to reset from
+        $c = \SimpleSAML_Configuration::loadFromArray(
+            array('language.i18n.backend' => 'twig.gettextgettext')
+        );
+        $l = new Localization($c);
+        $newDomain = 'ssp';
+        $newDomainLocaleDir = $l->getLocaleDir();
+        $l->addDomain($newDomainLocaleDir, $newDomain);
+        $l->activateDomain($newDomain);
+
+        // Reset
+        $l->restoreDefaultDomain();
+#         $curDomain = $l->getCurrentDomain();
+#         $this->assertEquals($curDomain, Localization::DEFAULT_DOMAIN);
+    }
+
+}
-- 
GitLab