Completed
Pull Request — 8.x-3.x (#495)
by Sebastian
06:33
created

LanguageTest::testAvailableLanguages()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 45
Code Lines 35

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 35
nc 1
nop 0
dl 0
loc 45
rs 8.8571
c 0
b 0
f 0
1
<?php
2
3
namespace Drupal\Tests\graphql_core\Kernel\Languages;
4
5
use Drupal\language\Entity\ConfigurableLanguage;
6
use Drupal\Tests\graphql\Traits\ByPassAccessTrait;
7
use Drupal\Tests\graphql\Traits\GraphQLFileTestTrait;
8
use Drupal\Tests\language\Kernel\LanguageTestBase;
9
10
/**
11
 * Test multilingual behavior of `graphql_core` features.
12
 *
13
 * @group graphql_core
14
 */
15
class LanguageTest extends LanguageTestBase {
16
  use GraphQLFileTestTrait;
17
  use ByPassAccessTrait;
18
19
  /**
20
   * {@inheritdoc}
21
   */
22
  public static $modules = [
23
    'graphql',
24
    'graphql_core',
25
    'graphql_test',
26
    'graphql_context_test',
27
  ];
28
29
  /**
30
   * {@inheritdoc}
31
   */
32
  protected function setUp() {
33
    parent::setUp();
34
    $this->installEntitySchema('configurable_language');
35
    $this->container->get('router.builder')->rebuild();
36
37
    ConfigurableLanguage::create([
38
      'id' => 'fr',
39
      'weight' => 1,
40
    ])->save();
41
42
    ConfigurableLanguage::create([
43
      'id' => 'es',
44
      'weight' => 2,
45
    ])->save();
46
47
    ConfigurableLanguage::create([
48
      'id' => 'pt-br',
49
      'weight' => 3,
50
    ])->save();
51
52
    $config = $this->config('language.negotiation');
53
    $config->set('url.prefixes', ['en' => 'en', 'es' => 'es', 'fr' => 'fr'])
54
      ->save();
55
56
    $this->container->get('kernel')->rebuildContainer();
57
  }
58
59
  /**
60
   * Test listing of available languages.
61
   */
62
  public function testLanguageId() {
63
    $result = $this->executeQueryFile('languages.gql');
64
65
    $english = [
66
      'id' => 'en',
67
      'name' => 'English',
68
      'isDefault' => TRUE,
69
      'isLocked' => FALSE,
70
      'direction' => 'ltr',
71
      'weight' => 0,
72
      'argument' => 'en',
73
    ];
74
75
    $french = [
76
      'id' => 'fr',
77
      'name' => 'French',
78
      'isDefault' => FALSE,
79
      'isLocked' => FALSE,
80
      'direction' => 'ltr',
81
      'weight' => 1,
82
      'argument' => 'fr',
83
    ];
84
85
    $spanish = [
86
      'id' => 'es',
87
      'name' => 'Spanish',
88
      'isDefault' => FALSE,
89
      'isLocked' => FALSE,
90
      'direction' => 'ltr',
91
      'weight' => 2,
92
      'argument' => 'es',
93
    ];
94
95
    $brazil = [
96
      'id' => 'pt-br',
97
      'name' => 'Portuguese, Brazil',
98
      'isDefault' => FALSE,
99
      'isLocked' => FALSE,
100
      'direction' => 'ltr',
101
      'weight' => 3,
102
      'argument' => 'pt_br',
103
    ];
104
105
    $this->assertEquals([$english, $french, $spanish, $brazil], $result['data']['languages']);
106
  }
107
108
}
109