ORIENT/plugins/rainlab/translate/tests/unit/models/ImportMessageTest.php

96 lines
3.0 KiB
PHP

<?php namespace RainLab\Translate\Tests\Unit\Models;
use PluginTestCase;
use RainLab\Translate\Models\Message;
use RainLab\Translate\Models\MessageImport;
class ImportMessageTest extends PluginTestCase
{
public function testCanHandleEmptyImport()
{
$messageImport = new MessageImport();
$data = [];
$messageImport->importData($data);
$stats = $messageImport->getResultStats();
$this->assertEquals(false, $stats->hasMessages);
}
public function testCreateMessage()
{
$messageImport = new MessageImport();
$data = [
['code' => 'new', 'de' => 'Neu', 'en' => 'new']
];
$messageImport->importData($data);
$stats = $messageImport->getResultStats();
$this->assertEquals(1, $stats->created);
$this->assertEquals(0, $stats->updated);
$this->assertEquals(0, $stats->skippedCount);
$this->assertEquals(false, $stats->hasMessages);
}
public function testUpdateMessage()
{
$messageImport = new MessageImport();
Message::create(['code' => 'update', 'message_data' => ['en' => 'update', 'de' => 'aktualisieren']]);
$data = [
['code' => 'update', 'de' => 'Neu 2', 'en' => 'new 2']
];
$expected = [
Message::DEFAULT_LOCALE => 'update', 'de' => 'Neu 2', 'en' => 'new 2'
];
$messageImport->importData($data);
$stats = $messageImport->getResultStats();
$this->assertEquals(0, $stats->created);
$this->assertEquals(1, $stats->updated);
$this->assertEquals(0, $stats->skippedCount);
$this->assertEquals(false, $stats->hasMessages);
$updatedMessage = Message::whereCode('update')->first();
$this->assertEquals($expected, $updatedMessage->message_data);
}
public function testMissingCodeIsSkipped()
{
$messageImport = new MessageImport();
$data = [
['de' => 'Neu 2', 'en' => 'new 2']
];
$messageImport->importData($data);
$stats = $messageImport->getResultStats();
$this->assertEquals(0, $stats->created);
$this->assertEquals(0, $stats->updated);
$this->assertEquals(1, $stats->skippedCount);
$this->assertEquals(true, $stats->hasMessages);
$this->assertEquals(Message::count(), 0);
}
public function testDefaultLocaleIsImported()
{
$messageImport = new MessageImport();
$data = [
['code' => 'test.me', 'x' => 'foo bar', 'de' => 'Neu 2', 'en' => 'new 2']
];
$messageImport->importData($data);
$stats = $messageImport->getResultStats();
$this->assertEquals(1, $stats->created);
$this->assertEquals(0, $stats->updated);
$this->assertEquals(0, $stats->skippedCount);
$this->assertEquals(false, $stats->hasMessages);
$this->assertEquals(Message::count(), 1);
$message = Message::where('code', 'test.me')->first();
$this->assertEquals('foo bar', $message->message_data['x']);
}
}