summaryrefslogtreecommitdiff
path: root/test/BridgeTest.php
blob: c7f6f47d4e9ec98edeb1fa179ecf25bcf7dd7e71 (plain)
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
<?php

require_once('PHPUnit/Framework.php');
require_once('src/Bridge.php');

class BridgeTest extends PHPUnit_Framework_TestCase {

  protected $db;

  protected function setUp() {
    $this->db = new PDO('mysql:host=localhost;dbname=test');
    $this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    //
    // Build posts table
    //
    $this->db->exec('DROP TABLE IF EXISTS posts');

    $this->db->exec(
      'CREATE TABLE posts (' .
      'post_id MEDIUMINT UNSIGNED NOT NULL, ' .
      'message_id VARCHAR(255) NOT NULL, ' .
      'in_reply_to VARCHAR(255), ' .
      'refs BLOB, ' .
      'PRIMARY KEY (post_id), ' .
      'UNIQUE KEY (message_id))'
    );

    $this->db->exec(
      'INSERT INTO posts (post_id, message_id, in_reply_to, refs) ' .
      'VALUES (' .
        '1, ' .
        '"<20100302094228.33F0310091@charybdis.ellipsis.cx>", ' .
        '"<1267473003.m2f.17543@www.vassalengine.org>", ' .
        '"<1267171317.m2f.17507@www.vassalengine.org> <1267473003.m2f.17543@www.vassalengine.org>"' .
      ')'
    );

    //
    // Build forums table
    //
    $this->db->exec('DROP TABLE IF EXISTS forums');

    $this->db->exec(
      'CREATE TABLE forums (' .
      'list_name VARCHAR(255) NOT NULL, ' .
      'forum_id MEDIUMINT UNSIGNED NOT NULL, ' .
      'PRIMARY KEY (list_name), ' .
      'INDEX (forum_id))'
    );

    $this->db->exec(
      'INSERT INTO forums (list_name, forum_id) ' .
      'VALUES (' .
        '"messages@forums.vassalengine.org", 2' .
      ')'
    );
  }

  protected function tearDown() {
    $this->db = null;
  }

  /**
   * @dataProvider providerGetPostId
   */
  public function testGetPostId($message_id, $expected, $ex) {
    if ($ex) $this->setExpectedException($ex);
    $bridge = new Bridge($this->db);
    $this->assertEquals($expected, $bridge->getPostId($message_id));
  }

  public function providerGetPostId() {
    return array(
      array('bogus', null, 'PHPUnit_Framework_Error'), 
      array('<20100302094228.33F0310091@charybdis.ellipsis.cx>', 1, null),
    );
  }

  /**
   * @dataProvider providerGetMessageId
   */
  public function testGetMessageId($post_id, $expected, $ex) {
    if ($ex) $this->setExpectedException($ex);
    $bridge = new Bridge($this->db);
    $this->assertEquals($expected, $bridge->getMessageId($post_id));
  }

  public function providerGetMessageId() {
    return array(
      array('bogus', null, 'PHPUnit_Framework_Error'), 
      array(1, '<20100302094228.33F0310091@charybdis.ellipsis.cx>', null),
    );
  }

  /**
   * @dataProvider providerRegisterMessage
   */
  public function testRegisterMessage($msg, $expected, $ex) {
    $this->markTestIncomplete();
#    $bridge = new Bridge($this->db);
#    if ($ex) $this->setExpectedException($ex);
#    $this->assertEquals($expected, $bridge->registerMessage($msg));
  }

  public function providerRegisterMessage() {
    return array(
    );
  }

  /**
   * @dataProvider providerGetDefaultForumId
   */
  public function testGetDefaultForumId($list, $expected, $ex) {
    if ($ex) $this->setExpectedException($ex);
    $bridge = new Bridge($this->db);
    $this->assertEquals($expected, $bridge->getDefaultForumId($list));
  }

  public function providerGetDefaultForumId() {
    return array(
      array('bogus', null, 'PHPUnit_Framework_Error'), 
      array('messages@forums.vassalengine.org', 2, null),
    );
  }
}

?>