Passed
Push — develop ( 6bfba2...d35452 )
by Nikolay
05:12
created

ChangeExtensionsSettingsTest::testChangeExtensions()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 68
Code Lines 45

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 45
c 1
b 0
f 0
dl 0
loc 68
rs 9.2
cc 1
nc 1
nop 1

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
/**
3
 * Copyright (C) MIKO LLC - All Rights Reserved
4
 * Unauthorized copying of this file, via any medium is strictly prohibited
5
 * Proprietary and confidential
6
 * Written by Nikolay Beketov, 5 2020
7
 *
8
 */
9
10
namespace MikoPBX\Tests\AdminCabinet\Tests;
11
12
13
use Facebook\WebDriver\WebDriverBy;
14
use MikoPBX\Tests\AdminCabinet\Lib\MikoPBXTestsBase;
15
16
class ChangeExtensionsSettingsTest extends MikoPBXTestsBase
17
{
18
    /**
19
     * @depends testLogin
20
     * @dataProvider additionProvider
21
     *
22
     * @param array $params;
23
     */
24
    public function testChangeExtension($params):void
25
    {
26
        $this->clickSidebarMenuItemByHref('/admin-cabinet/extensions/index/');
27
28
        $this->clickModifyButtonOnRowWithText($params['username']);
29
        $this->changeInputField('number', $params['number']);
30
        self::$driver->executeScript('$("#number").trigger("change")');
31
        self::$driver->executeScript('extension.cbOnCompleteNumber()');
32
        $this->changeTabOnCurrentPage('routing');
33
        $this->submitForm('extensions-form');
34
35
        // TESTS
36
        $xpath                   = "//input[@name = 'id']";
37
        $input_ExtensionUniqueID = self::$driver->findElement(WebDriverBy::xpath($xpath));
38
        $this->assertNotEmpty($input_ExtensionUniqueID->getAttribute('value'));
39
40
        $this->clickSidebarMenuItemByHref('/admin-cabinet/extensions/index/');
41
        $this->clickModifyButtonOnRowWithText($params['username']);
42
        $this->assertInputFieldValueEqual('number',  $params['number']);
43
    }
44
45
46
    /**
47
     * @depends testLogin
48
     * @dataProvider additionProvider
49
     *
50
     * @param array $params;
51
     */
52
    public function testChangeMobile($params):void
53
    {
54
55
        $this->clickSidebarMenuItemByHref('/admin-cabinet/extensions/index/');
56
57
        $this->clickModifyButtonOnRowWithText($params['username']);
58
        $this->changeInputField('mobile_number', $params['mobile']);
59
        self::$driver->executeScript('$("#mobile_number").trigger("change")');
60
        self::$driver->executeScript('extension.cbOnCompleteMobileNumber()');
61
        $this->changeTabOnCurrentPage('routing');
62
        $this->changeInputField('fwd_ringlength', $params['fwd_ringlength']);
63
        $this->submitForm('extensions-form');
64
65
        // TESTS
66
        $xpath                   = "//input[@name = 'id']";
67
        $input_ExtensionUniqueID = self::$driver->findElement(WebDriverBy::xpath($xpath));
68
        $this->assertNotEmpty($input_ExtensionUniqueID->getAttribute('value'));
69
70
        $this->clickSidebarMenuItemByHref('/admin-cabinet/extensions/index/');
71
        $this->clickModifyButtonOnRowWithText($params['username']);
72
        $this->changeTabOnCurrentPage('routing');
73
        $this->assertInputFieldValueEqual('fwd_ringlength', $params['fwd_ringlength']);
74
        $this->assertMenuItemSelected('fwd_forwardingonbusy', $params['mobile']);
75
        $this->assertMenuItemSelected('fwd_forwarding', $params['mobile']);
76
        $this->assertMenuItemSelected('fwd_forwardingonunavailable', $params['mobile']);
77
78
        $this->changeTabOnCurrentPage('general');
79
        // Раскрываем расширенные опции
80
        $this->openAccordionOnThePage();
81
        $this->assertInputFieldValueEqual('mobile_dialstring',  $params['mobile']);
82
    }
83
84
    /**
85
     * @depends testLogin
86
     * @dataProvider additionProvider
87
     *
88
     * @param array $params;
89
     */
90
    public function testClearMobile($params):void
91
    {
92
        $this->clickSidebarMenuItemByHref('/admin-cabinet/extensions/index/');
93
94
        $this->clickModifyButtonOnRowWithText($params['username']);
95
        $this->changeInputField('mobile_number', '');
96
        self::$driver->executeScript('$("#mobile_number").trigger("change")');
97
        self::$driver->executeScript('extension.cbOnClearedMobileNumber()');
98
        $this->changeTabOnCurrentPage('routing');
99
        $this->changeInputField('fwd_ringlength', '');
100
        $this->submitForm('extensions-form');
101
        // TESTS
102
        $xpath                   = "//input[@name = 'id']";
103
        $input_ExtensionUniqueID = self::$driver->findElement(WebDriverBy::xpath($xpath));
104
        $this->assertNotEmpty($input_ExtensionUniqueID->getAttribute('value'));
105
106
        $this->clickSidebarMenuItemByHref('/admin-cabinet/extensions/index/');
107
        $this->clickModifyButtonOnRowWithText($params['username']);
108
109
        $this->changeTabOnCurrentPage('routing');
110
        $this->assertInputFieldValueEqual('fwd_ringlength', '');
111
        $this->assertMenuItemSelected('fwd_forwardingonbusy', '');
112
        $this->assertMenuItemSelected('fwd_forwarding', '');
113
        $this->assertMenuItemSelected('fwd_forwardingonunavailable', '');
114
115
        // Раскрываем расширенные опции
116
        $this->changeTabOnCurrentPage('general');
117
        $this->openAccordionOnThePage();
118
        $this->assertInputFieldValueEqual('mobile_dialstring',  '');
119
    }
120
121
    /**
122
     * @depends testLogin
123
     * @dataProvider additionProvider
124
     *
125
     * @param array $params;
126
     */
127
    public function testChangeEmail($params):void
128
    {
129
        $this->clickSidebarMenuItemByHref('/admin-cabinet/extensions/index/');
130
131
        $this->clickModifyButtonOnRowWithText($params['username']);
132
133
        $this->changeInputField('user_email', $params['email']);
134
        self::$driver->executeScript('$("#user_email").trigger("change")');
135
        self::$driver->executeScript('extension.cbOnCompleteEmail()');
136
        $this->submitForm('extensions-form');
137
138
        // TESTS
139
        $xpath                   = "//input[@name = 'id']";
140
        $input_ExtensionUniqueID = self::$driver->findElement(WebDriverBy::xpath($xpath));
141
        $this->assertNotEmpty($input_ExtensionUniqueID->getAttribute('value'));
142
143
        $this->clickSidebarMenuItemByHref('/admin-cabinet/extensions/index/');
144
        $this->clickModifyButtonOnRowWithText($params['username']);
145
        $this->assertInputFieldValueEqual('user_email',  $params['email']);
146
    }
147
148
    /**
149
     * @depends testLogin
150
     * @dataProvider additionProvider
151
     *
152
     * @param array $params;
153
     */
154
    public function testClearEmail($params):void
155
    {
156
        $this->clickSidebarMenuItemByHref('/admin-cabinet/extensions/index/');
157
158
        $this->clickModifyButtonOnRowWithText($params['username']);
159
160
        $this->changeInputField('user_email', '');
161
        self::$driver->executeScript('$("#user_email").trigger("change")');
162
        $this->submitForm('extensions-form');
163
164
        // TESTS
165
        $xpath                   = "//input[@name = 'id']";
166
        $input_ExtensionUniqueID = self::$driver->findElement(WebDriverBy::xpath($xpath));
167
        $this->assertNotEmpty($input_ExtensionUniqueID->getAttribute('value'));
168
169
        $this->clickSidebarMenuItemByHref('/admin-cabinet/extensions/index/');
170
        $this->clickModifyButtonOnRowWithText($params['username']);
171
        $this->assertInputFieldValueEqual('user_email',  '');
172
    }
173
174
    /**
175
     * @depends testLogin
176
     * @dataProvider additionProvider
177
     *
178
     * @param array $params;
179
     */
180
    public function testChangeForwarding($params):void
181
    {
182
        $this->clickSidebarMenuItemByHref('/admin-cabinet/extensions/index/');
183
184
        $this->clickModifyButtonOnRowWithText($params['username']);
185
186
        $this->changeTabOnCurrentPage('routing');
187
        $this->changeInputField('fwd_ringlength', $params['fwd_ringlength']);
188
        $this->selectDropdownItem('fwd_forwardingonbusy', $params['fwd_forwardingonbusy']);
189
        $this->selectDropdownItem('fwd_forwarding', $params['fwd_forwarding']);
190
        $this->selectDropdownItem('fwd_forwardingonunavailable', $params['fwd_forwardingonunavailable']);
191
192
        $this->submitForm('extensions-form');
193
194
        // TESTS
195
        $xpath                   = "//input[@name = 'id']";
196
        $input_ExtensionUniqueID = self::$driver->findElement(WebDriverBy::xpath($xpath));
197
        $this->assertNotEmpty($input_ExtensionUniqueID->getAttribute('value'));
198
199
        $this->clickSidebarMenuItemByHref('/admin-cabinet/extensions/index/');
200
        $this->clickModifyButtonOnRowWithText($params['username']);
201
        $this->changeTabOnCurrentPage('routing');
202
        $this->assertInputFieldValueEqual('fwd_ringlength', $params['fwd_ringlength']);
203
        $this->assertMenuItemSelected('fwd_forwardingonbusy', $params['fwd_forwardingonbusy']);
204
        $this->assertMenuItemSelected('fwd_forwarding', $params['fwd_forwarding']);
205
        $this->assertMenuItemSelected('fwd_forwardingonunavailable', $params['fwd_forwardingonunavailable']);
206
207
    }
208
209
210
    /**
211
     * @depends      testLogin
212
     * @dataProvider additionProvider
213
     *
214
     * @param $params
215
     *
216
     */
217
    public function testChangeExtensions($params): void
218
    {
219
        $this->clickSidebarMenuItemByHref('/admin-cabinet/extensions/index/');
220
221
        $this->clickModifyButtonOnRowWithText($params['username']);
222
223
        $this->changeInputField('user_username', $params['username']);
224
        $this->changeInputField('number', $params['number']);
225
        self::$driver->executeScript('$("#number").trigger("change")');
226
        self::$driver->executeScript('extension.cbOnCompleteNumber()');
227
        $this->changeInputField('mobile_number', $params['mobile']);
228
        self::$driver->executeScript('$("#mobile_number").trigger("change")');
229
        self::$driver->executeScript('extension.cbOnCompleteMobileNumber()');
230
        $this->changeInputField('user_email', $params['email']);
231
        $this->changeInputField('sip_secret', $params['secret']);
232
233
        $this->changeTabOnCurrentPage('routing');
234
        $this->changeInputField('fwd_ringlength', $params['fwd_ringlength']);
235
        $this->selectDropdownItem('fwd_forwardingonbusy', $params['fwd_forwardingonbusy']);
236
        $this->selectDropdownItem('fwd_forwarding', $params['fwd_forwarding']);
237
        $this->selectDropdownItem('fwd_forwardingonunavailable', $params['fwd_forwardingonunavailable']);
238
        $this->changeTabOnCurrentPage('general');
239
240
        // Раскрываем расширенные опции
241
        $this->openAccordionOnThePage();
242
243
        $this->changeInputField('sip_busylevel', $params['sip_busylevel']);
244
        $this->selectDropdownItem('sip_networkfilterid', $params['sip_networkfilterid']);
245
246
        $this->changeInputField('sip_busylevel', $params['sip_busylevel']);
247
248
        $this->changeTextAreaValue('sip_manualattributes', $params['manualattributes']);
249
250
        //$filePath           =  __DIR__."/../assets/{$params['number']}.png";
251
        $filePath = 'C:\Users\hello\Documents\images\person.jpg';
252
        $this->changeFileField('file-select', $filePath);
253
254
        $this->submitForm('extensions-form');
255
256
        // TESTS
257
        $xpath                   = "//input[@name = 'id']";
258
        $input_ExtensionUniqueID = self::$driver->findElement(WebDriverBy::xpath($xpath));
259
        $this->assertNotEmpty($input_ExtensionUniqueID->getAttribute('value'));
260
261
        $this->clickSidebarMenuItemByHref('/admin-cabinet/extensions/index/');
262
        $this->clickModifyButtonOnRowWithText($params['username']);
263
        $this->assertInputFieldValueEqual('user_username',  $params['username']);
264
        $this->assertInputFieldValueEqual('number',  $params['number']);
265
        $this->assertInputFieldValueEqual('user_email',  $params['email']);
266
        // $this->assertInputFieldValueEqual('mobile_number',  $params['mobile']);
267
268
        $this->changeTabOnCurrentPage('routing');
269
        $this->assertInputFieldValueEqual('fwd_ringlength', $params['fwd_ringlength']);
270
        $this->assertMenuItemSelected('fwd_forwardingonbusy', $params['fwd_forwardingonbusy']);
271
        $this->assertMenuItemSelected('fwd_forwarding', $params['fwd_forwarding']);
272
        $this->assertMenuItemSelected('fwd_forwardingonunavailable', $params['fwd_forwardingonunavailable']);
273
        $this->changeTabOnCurrentPage('general');
274
        $this->assertInputFieldValueEqual('sip_secret',  $params['secret']);
275
276
277
        // Раскрываем расширенные опции
278
        $this->openAccordionOnThePage();
279
        $this->assertInputFieldValueEqual('mobile_dialstring',  $params['mobile']);
280
        $this->assertInputFieldValueEqual('sip_busylevel', $params['sip_busylevel']);
281
        $this->assertMenuItemSelected('sip_networkfilterid', $params['sip_networkfilterid']);
282
283
284
        $this->assertTextAreaValueIsEqual('sip_manualattributes', $params['manualattributes']);
285
    }
286
287
288
    /**
289
     * Dataset provider
290
     * @return array
291
     */
292
    public function additionProvider(): array
293
    {
294
295
        $params = [];
296
        $params[] = [
297
            [
298
                'number'   => 289,
299
                'email'    => '[email protected]',
300
                'username' => 'Alexandra Pushina',
301
                'mobile'   => '79123125410',
302
                'secret'   => '23542354wet2',
303
                'sip_busylevel'=>2,
304
                'sip_dtmfmode'=>'inband',
305
                'sip_networkfilterid'=>'4',
306
                'fwd_ringlength'=>'30',
307
                'fwd_forwardingonbusy'=>'203',
308
                'fwd_forwarding'=>'89251111111',
309
                'fwd_forwardingonunavailable'=>'201',
310
                'manualattributes'=>'[endpoint]
311
callerid=2546456<235>',
312
            ]];
313
        return $params;
314
    }
315
}