Version 1
[yaffs-website] / web / core / modules / views / tests / src / Kernel / Handler / FieldNumericTest.php
1 <?php
2
3 namespace Drupal\Tests\views\Kernel\Handler;
4
5 use Drupal\Tests\views\Kernel\ViewsKernelTestBase;
6 use Drupal\views\Views;
7
8 /**
9  * Tests the core Drupal\views\Plugin\views\field\Numeric handler.
10  *
11  * @group views
12  * @see \Drupal\views\Plugin\views\field\Numeric
13  */
14 class FieldNumericTest extends ViewsKernelTestBase {
15
16   /**
17    * Views used by this test.
18    *
19    * @var array
20    */
21   public static $testViews = ['test_view'];
22
23   /**
24    * Tests the Numeric handler with different settings.
25    *
26    * @dataProvider providerTestFieldNumeric
27    */
28   public function testFieldNumeric($field_settings, $values, $expected_values) {
29     $view = Views::getView('test_view');
30     $view->setDisplay();
31
32     if (!empty($field_settings)) {
33       $view->displayHandlers->get('default')->overrideOption('fields', ['age' => $field_settings]);
34     }
35     $this->executeView($view);
36
37     foreach ($values as $key => $value) {
38       $view->result[0]->views_test_data_age = $value;
39       $this->assertSame($expected_values[$key], $view->field['age']->advancedRender($view->result[0]));
40     }
41   }
42
43   /**
44    * Data provider for testFieldNumeric.
45    *
46    * @return array
47    *   The data set containing field settings, values to set and expected
48    *   values.
49    */
50   public function providerTestFieldNumeric() {
51     return [
52       'no-formating' => [
53         [],
54         [0, 0.1234, -0.1234, 1000.1234, -1000.1234],
55         ['0', '0.1234', '-0.1234', '1,000.1234', '-1,000.1234'],
56       ],
57       'precision_2-hide_empty-hide_zero' => [
58         [
59           'hide_empty' => TRUE,
60           'precision' => 2,
61           'set_precision' => TRUE,
62           'empty_zero' => TRUE,
63           'id' => 'age',
64           'table' => 'views_test_data',
65           'field' => 'age',
66           'relationship' => 'none',
67         ],
68         [0, 0.1234, -0.1234, 1000.1234, -1000.1234, 0.0001, -0.0001, NULL, ''],
69         ['', '0.12', '-0.12', '1,000.12', '-1,000.12', '', '', '', ''],
70       ],
71       'decimal-separator' => [
72         [
73           'hide_empty' => TRUE,
74           'decimal' => ',',
75           'separator' => '.',
76           'empty_zero' => TRUE,
77           'id' => 'age',
78           'table' => 'views_test_data',
79           'field' => 'age',
80           'relationship' => 'none',
81         ],
82         [0.1234, -0.1234, 1000.1234, -1000.1234],
83         ['0,1234', '-0,1234', '1.000,1234', '-1.000,1234'],
84       ],
85       'precision_2-no_separator' => [
86         [
87           'hide_empty' => TRUE,
88           'precision' => 2,
89           'set_precision' => TRUE,
90           'decimal' => ',',
91           'separator' => '',
92           'empty_zero' => TRUE,
93           'id' => 'age',
94           'table' => 'views_test_data',
95           'field' => 'age',
96           'relationship' => 'none',
97         ],
98         [1234, 1234.01, -1234, -1234.01],
99         ['1234,00', '1234,01', '-1234,00', '-1234,01'],
100       ],
101       'precision_0-no_separator' => [
102         [
103           'hide_empty' => TRUE,
104           'precision' => 0,
105           'set_precision' => TRUE,
106           'separator' => '',
107           'empty_zero' => TRUE,
108           'id' => 'age',
109           'table' => 'views_test_data',
110           'field' => 'age',
111           'relationship' => 'none',
112         ],
113         [1234, 1234.01, -1234, -1234.01],
114         ['1234', '1234', '-1234', '-1234'],
115       ],
116       'precision_0-hide_empty-zero_empty' => [
117         [
118           'hide_empty' => TRUE,
119           'precision' => 0,
120           'set_precision' => TRUE,
121           'empty_zero' => TRUE,
122           'id' => 'age',
123           'table' => 'views_test_data',
124           'field' => 'age',
125           'relationship' => 'none',
126           'prefix' => 'test: ',
127         ],
128         [0, 0.1234, -0.1234, 1000.1234, -1000.1234],
129         ['', '', '', 'test: 1,000', 'test: -1,000'],
130       ],
131       'precision_0-hide_empty-not_zero_empty' => [
132         [
133           'hide_empty' => TRUE,
134           'precision' => 0,
135           'set_precision' => TRUE,
136           'empty_zero' => FALSE,
137           'id' => 'age',
138           'table' => 'views_test_data',
139           'field' => 'age',
140           'relationship' => 'none',
141           'prefix' => '',
142         ],
143         [0, 0.1234, -0.1234],
144         ['0', '0', '0'],
145       ],
146       'precision_2-hide_empty-not_zero_empty' => [
147         [
148           'hide_empty' => TRUE,
149           'precision' => 2,
150           'set_precision' => TRUE,
151           'empty_zero' => FALSE,
152           'id' => 'age',
153           'table' => 'views_test_data',
154           'field' => 'age',
155           'relationship' => 'none',
156           'prefix' => '',
157         ],
158         [0, 0.001234, -0.001234, NULL],
159         ['0.00', '0.00', '0.00', ''],
160       ],
161     ];
162   }
163
164 }