test_jiralink_oldrev()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 22
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
cc 2
eloc 12
c 1
b 0
f 1
nc 2
nop 0
dl 0
loc 22
rs 9.8666
1
<?php
2
3
/**
4
 * Tests for the handling the syntax of a link to an jira issue in the issuelinks plugin
5
 *
6
 * @group plugin_issuelinks
7
 * @group plugins
8
 *
9
 */
10
class linksyntax_plugin_issuelinks_test extends DokuWikiTest {
11
12
    protected $pluginsEnabled = array('issuelinks', 'sqlite',);
13
14
    public function setUp() {
15
        parent::setUp();
16
    }
17
18
    public function tearDown() {
19
        parent::tearDown();
20
        /** @var helper_plugin_issuelinks_db $db */
21
        $db = plugin_load('helper', 'issuelinks_db');
22
        $db->reset();
23
    }
24
25
    public function test_jiralink() {
26
        // arrange
27
        global $ID;
28
        $ID = 'testpage';
29
        saveWikiText('testpage','[[jira>SPR-281]] [[jira>TW-7]]','test summary');
30
31
        // act
32
        p_get_instructions('[[jira>SPR-281]]');
33
        p_get_instructions('[[jira>TW-7]]');
34
35
        // assert
36
        /** @var \helper_plugin_sqlite $sqliteHelper */
37
        $sqliteHelper = plugin_load('helper', 'sqlite');
38
        if (!$sqliteHelper->init('issuelinks', DOKU_PLUGIN . 'issuelinks/db/')) {
39
            throw new \Exception('sqlite init failed');
40
        }
41
42
        $sql = 'SELECT page, project_id, issue_id, type FROM pagerev_issues';
43
        $pagerev_issues = $sqliteHelper->res2arr($sqliteHelper->query($sql, array()));
44
45
        $this->assertEquals(array(
46
            array(
47
                'page' => 'testpage',
48
                'project_id' => 'SPR',
49
                'issue_id' => '281',
50
                'type' => 'link',
51
            ),
52
            array(
53
                'page' => 'testpage',
54
                'project_id' => 'TW',
55
                'issue_id' => '7',
56
                'type' => 'link',
57
            )), $pagerev_issues);
58
    }
59
60
    public function test_jiralink_oldrev() {
61
        // arrange
62
        global $ID, $REV;
63
        $ID = 'testpage_oldnew';
64
        saveWikiText($ID,'{{jira>SPR-281}} {{jira>TW-7}}','test summary');
65
        $REV = filemtime(wikiFN($ID))+1;
66
67
        // act
68
        p_get_instructions('{{jira>SPR-281}}');
69
        p_get_instructions('{{jira>TW-7}}');
70
71
        // assert
72
        /** @var \helper_plugin_sqlite $sqliteHelper */
73
        $sqliteHelper = plugin_load('helper', 'sqlite');
74
        if (!$sqliteHelper->init('issuelinks', DOKU_PLUGIN . 'issuelinks/db/')) {
75
            throw new \Exception('sqlite init failed');
76
        }
77
78
        $sql = 'SELECT page, project_id, issue_id, type FROM pagerev_issues';
79
        $pagerev_issues = $sqliteHelper->res2arr($sqliteHelper->query($sql, array()));
80
81
        $this->assertEquals(array(), $pagerev_issues);
82
    }
83
84
    public function test_jiralink_moresyntax() {
85
        // arrange
86
        global $ID;
87
        $ID = 'testpage2';
88
        saveWikiText($ID,'page must exist for m_filetime','test summary');
89
90
        // act
91
        p_get_instructions('[[gh>cosmocode/dokuwiki-plugin-issuelinks#1]]');
92
        p_get_instructions('[[jira>TW-7]]');
93
        p_get_instructions('[[gl>grosse/project-with-merge-request!1]]');
94
        p_get_instructions('[[gl>grosse/project-with-issue#1]]');
95
96
        // assert
97
        /** @var \helper_plugin_sqlite $sqliteHelper */
98
        $sqliteHelper = plugin_load('helper', 'sqlite');
99
        if (!$sqliteHelper->init('issuelinks', DOKU_PLUGIN . 'issuelinks/db/')) {
100
            throw new \Exception('sqlite init failed');
101
        }
102
103
        $sql = 'SELECT page, project_id, issue_id, type FROM pagerev_issues';
104
        $pagerev_issues = $sqliteHelper->res2arr($sqliteHelper->query($sql, array()));
105
106
        $this->assertEquals(array(
107
            array(
108
                'page' => 'testpage2',
109
                'project_id' => 'cosmocode/dokuwiki-plugin-issuelinks',
110
                'issue_id' => '1',
111
                'type' => 'link',
112
            ),
113
            array(
114
                'page' => 'testpage2',
115
                'project_id' => 'TW',
116
                'issue_id' => '7',
117
                'type' => 'link',
118
            ),
119
            array(
120
                'page' => 'testpage2',
121
                'project_id' => 'grosse/project-with-merge-request',
122
                'issue_id' => '1',
123
                'type' => 'link',
124
            ),
125
            array(
126
                'page' => 'testpage2',
127
                'project_id' => 'grosse/project-with-issue',
128
                'issue_id' => '1',
129
                'type' => 'link',
130
            )), $pagerev_issues);
131
    }
132
}
133