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 */ 10class 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