Bladeren bron

translated mongo record test cases, references #165

gediminasm 13 jaren geleden
bovenliggende
commit
07e4ed5864

+ 67 - 0
tests/Gedmo/Translatable/Fixture/Issue165/SimpleArticle.php

@@ -0,0 +1,67 @@
+<?php
+
+namespace Translatable\Fixture\Issue165;
+
+use Doctrine\ODM\MongoDB\Mapping\Annotations as MongoODM;
+use Gedmo\Mapping\Annotation as Gedmo;
+
+/**
+ * @MongoODM\Document(collection="articles")
+ */
+class SimpleArticle
+{
+    /** @MongoODM\Id */
+    private $id;
+
+    /**
+     * @Gedmo\Translatable
+     * @MongoODM\String
+     */
+    private $title;
+
+    /**
+     * @Gedmo\Translatable
+     * @MongoODM\String
+     */
+    private $content;
+
+    /**
+     * @MongoODM\String
+     */
+    private $untranslated;
+
+    public function getId()
+    {
+        return $this->id;
+    }
+
+    public function setTitle($title)
+    {
+        $this->title = $title;
+    }
+
+    public function getTitle()
+    {
+        return $this->title;
+    }
+
+    public function setContent($content)
+    {
+        $this->content = $content;
+    }
+
+    public function getContent()
+    {
+        return $this->content;
+    }
+
+    public function setUntranslated($untranslated)
+    {
+        $this->untranslated = $untranslated;
+    }
+
+    public function getUntranslated()
+    {
+        return $this->untranslated;
+    }
+}

+ 75 - 0
tests/Gedmo/Translatable/Issue/Issue165Test.php

@@ -0,0 +1,75 @@
+<?php
+
+namespace Gedmo\Translatable;
+
+use Tool\BaseTestCaseMongoODM;
+use Doctrine\Common\EventManager;
+use Translatable\Fixture\Issue165\SimpleArticle;
+
+/**
+ * These are tests for Translatable behavior ODM implementation
+ *
+ * @author Gediminas Morkevicius <gediminas.morkevicius@gmail.com>
+ * @package Gedmo.Translatable
+ * @link http://www.gediminasm.org
+ * @license MIT License (http://www.opensource.org/licenses/mit-license.php)
+ */
+class Issue165Test extends BaseTestCaseMongoODM
+{
+    const ARTICLE = 'Translatable\Fixture\Issue165\SimpleArticle';
+    const TRANSLATION = 'Gedmo\\Translatable\\Document\\Translation';
+
+    private $translationListener;
+    private $articleId;
+
+    protected function setUp()
+    {
+        parent::setUp();
+        $evm = new EventManager();
+        $this->translationListener = new TranslationListener;
+        $this->translationListener->setDefaultLocale('en');
+        $this->translationListener->setTranslatableLocale('en');
+        $evm->addEventSubscriber($this->translationListener);
+
+        $this->getMockDocumentManager($evm);
+    }
+
+    /**
+     * @test
+     */
+    public function shouldPersistUntranslatedFields()
+    {
+        $article = new SimpleArticle;
+        $article->setTitle('en');
+        $article->setContent('en');
+        $article->setUntranslated('en');
+
+        $this->dm->persist($article);
+        $this->dm->flush();
+
+        $this->assertEquals('en', $article->getUntranslated());
+
+        $this->translationListener->setTranslatableLocale('ru');
+
+        $article->setTitle('ru');
+        $article->setContent('ru');
+        $article->setUntranslated('ru');
+
+        $this->dm->persist($article);
+        $this->dm->flush();
+
+        $this->assertEquals('ru', $article->getUntranslated());
+
+        $this->translationListener->setTranslatableLocale('de');
+
+        $newarticle = new SimpleArticle;
+        $newarticle->setTitle('de');
+        $newarticle->setContent('de');
+        $newarticle->setUntranslated('de');
+
+        $this->dm->persist($newarticle);
+        $this->dm->flush();
+
+        $this->assertEquals('de', $newarticle->getUntranslated());
+    }
+}