File: InsertTest.php

package info (click to toggle)
phpmyadmin 4%3A5.2.2-really%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 140,312 kB
  • sloc: javascript: 228,447; php: 166,904; xml: 17,847; sql: 504; sh: 275; makefile: 209; python: 205
file content (130 lines) | stat: -rw-r--r-- 3,936 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<?php

declare(strict_types=1);

namespace PhpMyAdmin\Tests\Selenium\Table;

use PhpMyAdmin\Tests\Selenium\TestBase;

/**
 * @coversNothing
 */
#[\PHPUnit\Framework\Attributes\CoversNothing]
class InsertTest extends TestBase
{
    /**
     * Setup the browser environment to run the selenium t
     * est case
     */
    protected function setUp(): void
    {
        parent::setUp();
        $this->dbQuery(
            'USE `' . $this->databaseName . '`;'
            . 'CREATE TABLE `test_table` ('
            . ' `id` int(11) NOT NULL AUTO_INCREMENT,'
            . ' `name` varchar(20) NOT NULL,'
            . ' `datetimefield` datetime NOT NULL,'
            . ' PRIMARY KEY (`id`)'
            . ');'
        );

        $this->login();
        $this->navigateTable('test_table');
    }

    /**
     * Insert data into table
     *
     * @group large
     */
    #[\PHPUnit\Framework\Attributes\Group('large-group')]
    public function testAddData(): void
    {
        if ($this->isSafari()) {
            /* TODO: this should be fixed, but the cause is unclear to me */
            $this->markTestIncomplete('Fails with Safari');
        }

        $this->waitAjax();
        $this->expandMore();

        $this->byPartialLinkText('Insert')->click();
        $this->waitAjax();
        $this->waitForElement('id', 'insertForm');

        // shorter date to prevent error,
        // automatically gets appended with 00:00:00
        $this->byId('field_3_3')->click()->clear()->sendKeys('2011-01-2');

        $this->byId('field_1_3')->sendKeys('1');
        $this->byId('field_2_3')->sendKeys('abcd');

        // shorter date to prevent error,
        // automatically gets appended with 00:00:00
        $this->byId('field_6_3')->click()->clear()->sendKeys('2012-01-2');

        $this->byId('field_5_3')->sendKeys('foo');

        $this->selectByLabel(
            $this->byName('after_insert'),
            'Insert another new row'
        );

        // post
        $this->byId('buttonYes')->click();
        $this->waitAjax();

        $ele = $this->waitForElement('className', 'alert-success');
        self::assertStringContainsString('2 rows inserted', $ele->getText());

        // shorter date to prevent error,
        // automatically gets appended with 00:00:00
        $this->byId('field_3_3')->click()->clear()->sendKeys('2013-01-2');

        $this->byId('field_2_3')->sendKeys('Abcd');

        // post
        $this->byCssSelector('input[value=Go]')->click();

        $this->waitAjax();

        // New message
        $ele = $this->waitForElement(
            'xpath',
            "//div[contains(@class, 'alert-success') and not(contains(@class, 'message'))]"
        );
        self::assertStringContainsString('1 row inserted', $ele->getText());

        $this->assertDataPresent();
    }

    /**
     * Assert various data present in results table
     */
    private function assertDataPresent(): void
    {
        $this->byPartialLinkText('Browse')->click();

        $this->waitAjax();
        $this->waitForElement('cssSelector', 'table.table_results');

        self::assertEquals('1', $this->getCellByTableClass('table_results', 1, 5));

        self::assertEquals('abcd', $this->getCellByTableClass('table_results', 1, 6));

        self::assertEquals('2011-01-02 00:00:00', $this->getCellByTableClass('table_results', 1, 7));

        self::assertEquals('2', $this->getCellByTableClass('table_results', 2, 5));

        self::assertEquals('foo', $this->getCellByTableClass('table_results', 2, 6));

        self::assertEquals('2012-01-02 00:00:00', $this->getCellByTableClass('table_results', 2, 7));

        self::assertEquals('4', $this->getCellByTableClass('table_results', 3, 5));

        self::assertEquals('Abcd', $this->getCellByTableClass('table_results', 3, 6));

        self::assertEquals('2013-01-02 00:00:00', $this->getCellByTableClass('table_results', 3, 7));
    }
}