Completed
Push — master ( decfed...00ae50 )
by Narcotic
61:33
created

TranslatableControllerTest::setUp()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 11
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 11
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 7
nc 1
nop 0
1
<?php
2
/**
3
 * Basic functional test for /i18n/language.
4
 */
5
6
namespace Graviton\I18nBundle\Tests\Controller;
7
8
use Graviton\TestBundle\Test\RestTestCase;
9
10
/**
11
 * Basic functional test for /i18n/translatable
12
 *
13
 * @author   List of contributors <https://github.com/libgraviton/graviton/graphs/contributors>
14
 * @license  https://opensource.org/licenses/MIT MIT License
15
 * @link     http://swisscom.ch
16
 */
17
class TranslatableControllerTest extends RestTestCase
18
{
19
20
    /**
21
     * load fixtures
22
     *
23
     * @return void
24
     */
25
    public function setUp()
26
    {
27
        $this->loadFixtures(
28
            array(
29
                'Graviton\I18nBundle\DataFixtures\MongoDB\LoadLanguageData',
30
                'Graviton\I18nBundle\DataFixtures\MongoDB\LoadTranslatableData'
31
            ),
32
            null,
33
            'doctrine_mongodb'
34
        );
35
    }
36
37
    /**
38
     * check that translatable record return correct CORS headers
39
     *
40
     * @return void
41
     */
42 View Code Duplication
    public function testOptionsHasCors()
43
    {
44
        $client = static::createRestClient();
45
46
        $client->request('OPTIONS', '/i18n/translatable/i18n-de-German');
47
        $this->assertCorsHeaders('GET, POST, PUT, PATCH, DELETE, OPTIONS', $client->getResponse());
48
49
        $this->assertEmpty($client->getResults());
50
    }
51
52
    /**
53
     * validate linking of objects
54
     *
55
     * @return void
56
     */
57 View Code Duplication
    public function testContainsReference()
58
    {
59
        $client = static::createRestClient();
60
61
        $client->request('GET', '/i18n/translatable/');
62
        $results = $client->getResults();
63
64
        $this->assertEquals('http://localhost/i18n/language/de', $results[1]->language->{'$ref'});
65
    }
66
67
    /**
68
     * validate linking of objects in item
69
     *
70
     * @return void
71
     */
72 View Code Duplication
    public function testItemContainsReference()
73
    {
74
        $client = static::createRestClient();
75
76
        $client->request('GET', '/i18n/translatable/'.sha1('i18n-de-English'));
77
        $results = $client->getResults();
78
79
        $this->assertEquals('http://localhost/i18n/language/de', $results->language->{'$ref'});
80
    }
81
82
    /**
83
     * validate creating new translatables
84
     *
85
     * @return void
86
     */
87
    public function testCreateTranslatableWithReference()
88
    {
89
        $value = new \stdClass;
90
        $value->id = 'i18n-de-French';
91
        $value->domain = 'i18n';
92
        $value->locale = 'de';
93
        $value->original = 'French';
94
        $value->translated = 'Französisch';
95
        $value->isLocalized = true;
96
        $value->language = new \stdClass;
97
        $value->language->{'$ref'} = 'http://localhost/i18n/language/de';
98
99
        $client = static::createRestClient();
100
101
        $client->post('/i18n/translatable/', $value);
102
        $response = $client->getResponse();
103
104
        $client = static::createRestClient();
105
        $client->request('GET', $response->headers->get('Location'));
106
        $results = $client->getResults();
107
108
        $this->assertEquals('http://localhost/i18n/language/de', $results->language->{'$ref'});
109
    }
110
}
111