1<?php 2require_once 'VersionControl/Git.php'; 3 4require_once dirname(__FILE__) . '/checkFixtures.php'; 5 6class VersionControl_Git_Object_CommitTest extends PHPUnit_Framework_TestCase 7{ 8 public function testConstruct() 9 { 10 $git = new VersionControl_Git(dirname(__FILE__) . '/fixtures/001_VersionControl_Git'); 11 $instance = new VersionControl_Git_Object_Commit($git, '4ed54abb8efca38a0c794ca414b1f296279e0d85'); 12 13 $this->assertTrue($instance instanceof VersionControl_Git_Object_Commit); 14 } 15 16 public function testCreateInstanceByArrayException() 17 { 18 $this->setExpectedException('VersionControl_Git_Exception'); 19 20 $git = new VersionControl_Git(dirname(__FILE__) . '/fixtures/001_VersionControl_Git'); 21 VersionControl_Git_Object_Commit::createInstanceByArray($git, array()); 22 } 23 24 public function testCreateInstanceByArray() 25 { 26 $this->assertTrue($this->getCreatedInstance() instanceof VersionControl_Git_Object_Commit); 27 } 28 29 public function testSetTree() 30 { 31 $git = new VersionControl_Git(dirname(__FILE__) . '/fixtures/001_VersionControl_Git'); 32 $instance = new VersionControl_Git_Object_Commit($git, '4ed54abb8efca38a0c794ca414b1f296279e0d85'); 33 34 $this->assertFalse($instance->setTree('cca66138995a95b45a725e8727ee97a20a816d41')); 35 $this->assertNull($instance->setTree('tree cca66138995a95b45a725e8727ee97a20a816d41')); 36 } 37 38 public function testGetTree() 39 { 40 $git = new VersionControl_Git(dirname(__FILE__) . '/fixtures/001_VersionControl_Git'); 41 $instance = new VersionControl_Git_Object_Commit($git, '4ed54abb8efca38a0c794ca414b1f296279e0d85'); 42 43 $this->assertNull($instance->getTree()); 44 45 $instance->setTree('tree cca66138995a95b45a725e8727ee97a20a816d41'); 46 $this->assertEquals($instance->getTree(), 'cca66138995a95b45a725e8727ee97a20a816d41'); 47 } 48 49 public function testSetParents() 50 { 51 $git = new VersionControl_Git(dirname(__FILE__) . '/fixtures/001_VersionControl_Git'); 52 $instance = new VersionControl_Git_Object_Commit($git, '4ed54abb8efca38a0c794ca414b1f296279e0d85'); 53 54 $this->assertFalse($instance->setParents('ddf8aa7e97a206847658c90a26fe740b2e17231a')); 55 $this->assertNull($instance->setParents('parent ddf8aa7e97a206847658c90a26fe740b2e17231a')); 56 $this->assertNull($instance->setParents(array('parent ddf8aa7e97a206847658c90a26fe740b2e17231a', 'parent ddf8aa7e97a206847658c90a26fe740b2e17231a'))); 57 } 58 59 public function testHasParents() 60 { 61 $git = new VersionControl_Git(dirname(__FILE__) . '/fixtures/001_VersionControl_Git'); 62 $instance = new VersionControl_Git_Object_Commit($git, '4ed54abb8efca38a0c794ca414b1f296279e0d85'); 63 64 $this->assertFalse($instance->hasParents()); 65 $instance->setParents(array('parent ddf8aa7e97a206847658c90a26fe740b2e17231a', 'parent ddf8aa7e97a206847658c90a26fe740b2e17231a')); 66 $this->assertTrue($instance->hasParents()); 67 } 68 69 public function testGetParents() 70 { 71 $git = new VersionControl_Git(dirname(__FILE__) . '/fixtures/001_VersionControl_Git'); 72 $instance = new VersionControl_Git_Object_Commit($git, '4ed54abb8efca38a0c794ca414b1f296279e0d85'); 73 74 $this->assertFalse($instance->getParents()); 75 76 $instance->setParents(array('parent ddf8aa7e97a206847658c90a26fe740b2e17231a', 'invalid')); 77 $this->assertFalse($instance->getParents()); 78 79 $instance->setParents(array('parent ddf8aa7e97a206847658c90a26fe740b2e17231a', 'parent ddf8aa7e97a206847658c90a26fe740b2e17231a')); 80 $parents = $instance->getParents(); 81 $this->assertEquals((string)$parents[0], 'ddf8aa7e97a206847658c90a26fe740b2e17231a'); 82 $this->assertEquals((string)$parents[1], 'ddf8aa7e97a206847658c90a26fe740b2e17231a'); 83 $this->assertEquals(count($parents), 2); 84 } 85 86 public function testSetAuthor() 87 { 88 $git = new VersionControl_Git(dirname(__FILE__) . '/fixtures/001_VersionControl_Git'); 89 $instance = new VersionControl_Git_Object_Commit($git, '4ed54abb8efca38a0c794ca414b1f296279e0d85'); 90 91 $this->assertFalse($instance->setAuthor('Kousuke Ebihara <ebihara@tejimaya.com> 1264003801 +0900')); 92 $this->assertNull($instance->setAuthor('author Kousuke Ebihara <ebihara@tejimaya.com> 1264003801 +0900')); 93 } 94 95 public function testGetAuthor() 96 { 97 $git = new VersionControl_Git(dirname(__FILE__) . '/fixtures/001_VersionControl_Git'); 98 $instance = new VersionControl_Git_Object_Commit($git, '4ed54abb8efca38a0c794ca414b1f296279e0d85'); 99 $instance->setAuthor('author Kousuke Ebihara <ebihara@tejimaya.com> 1264003801 +0900'); 100 101 $this->assertEquals($instance->getAuthor(), 'Kousuke Ebihara <ebihara@tejimaya.com>'); 102 103 $instance->setAuthor('author Kousuke Ebihara <ebihara@tejimaya.com>'); 104 $this->assertNull($instance->getAuthor()); 105 } 106 107 public function testGetCreatedAt() 108 { 109 $git = new VersionControl_Git(dirname(__FILE__) . '/fixtures/001_VersionControl_Git'); 110 $instance = new VersionControl_Git_Object_Commit($git, '4ed54abb8efca38a0c794ca414b1f296279e0d85'); 111 $instance->setAuthor('author Kousuke Ebihara <ebihara@tejimaya.com> 1264003801 +0900'); 112 113 $this->assertEquals(gmdate('Y-m-d H:i:s', $instance->getCreatedAt()), '2010-01-20 16:10:01'); 114 115 $instance->setAuthor('author Kousuke Ebihara <ebihara@tejimaya.com>'); 116 $this->assertNull($instance->getCreatedAt()); 117 } 118 119 public function testSetCommitter() 120 { 121 $git = new VersionControl_Git(dirname(__FILE__) . '/fixtures/001_VersionControl_Git'); 122 $instance = new VersionControl_Git_Object_Commit($git, '4ed54abb8efca38a0c794ca414b1f296279e0d85'); 123 124 $this->assertFalse($instance->setCommitter('Kousuke Ebihara <ebihara@tejimaya.com> 1264003801 +0900')); 125 $this->assertNull($instance->setCommitter('committer Kousuke Ebihara <ebihara@tejimaya.com> 1264003801 +0900')); 126 } 127 128 public function testGetCommitter() 129 { 130 $git = new VersionControl_Git(dirname(__FILE__) . '/fixtures/001_VersionControl_Git'); 131 $instance = new VersionControl_Git_Object_Commit($git, '4ed54abb8efca38a0c794ca414b1f296279e0d85'); 132 $instance->setCommitter('committer Kousuke Ebihara <ebihara@tejimaya.com> 1264003801 +0900'); 133 134 $this->assertEquals($instance->getCommitter(), 'Kousuke Ebihara <ebihara@tejimaya.com>'); 135 136 $instance->setCommitter('committer Kousuke Ebihara <ebihara@tejimaya.com>'); 137 $this->assertNull($instance->getCommitter()); 138 } 139 140 public function testGetCommittedAt() 141 { 142 $git = new VersionControl_Git(dirname(__FILE__) . '/fixtures/001_VersionControl_Git'); 143 $instance = new VersionControl_Git_Object_Commit($git, '4ed54abb8efca38a0c794ca414b1f296279e0d85'); 144 $instance->setCommitter('committer Kousuke Ebihara <ebihara@tejimaya.com> 1264003801 +0900'); 145 146 $this->assertEquals(gmdate('Y-m-d H:i:s', $instance->getCommittedAt()), '2010-01-20 16:10:01'); 147 148 $instance->setCommitter('committer Kousuke Ebihara <ebihara@tejimaya.com>'); 149 $this->assertNull($instance->getCommittedAt()); 150 } 151 152 public function testSetMessage() 153 { 154 $git = new VersionControl_Git(dirname(__FILE__) . '/fixtures/001_VersionControl_Git'); 155 $instance = new VersionControl_Git_Object_Commit($git, '4ed54abb8efca38a0c794ca414b1f296279e0d85'); 156 157 $instance->setMessage('message'); 158 $this->assertEquals($instance->getMessage(), 'message'); 159 } 160 161 public function testFetchException() 162 { 163 $this->setExpectedException('VersionControl_Git_Exception'); 164 165 $git = new VersionControl_Git(dirname(__FILE__) . '/fixtures/001_VersionControl_Git'); 166 $instance = new VersionControl_Git_Object_Commit($git, 'invalid'); 167 $instance->fetch(); 168 } 169 170 public function testFetch() 171 { 172 $git = new VersionControl_Git(dirname(__FILE__) . '/fixtures/001_VersionControl_Git'); 173 $instance = new VersionControl_Git_Object_Commit($git, '4ed54abb8efca38a0c794ca414b1f296279e0d85'); 174 $instance->fetch(); 175 176 $this->assertEquals($instance->getTree(), 'cca66138995a95b45a725e8727ee97a20a816d41'); 177 $this->assertFalse($instance->hasParents()); 178 $this->assertEquals($instance->getAuthor(), 'Kousuke Ebihara <ebihara@tejimaya.com>'); 179 $this->assertEquals(gmdate('Y-m-d H:i:s', $instance->getCreatedAt()), '2010-01-20 16:10:01'); 180 $this->assertEquals($instance->getCommitter(), 'Kousuke Ebihara <ebihara@tejimaya.com>'); 181 $this->assertEquals(gmdate('Y-m-d H:i:s', $instance->getCommittedAt()), '2010-01-20 16:10:01'); 182 $this->assertEquals($instance->getMessage(), 'added directories and files'); 183 } 184 185 protected function getCreatedInstance() 186 { 187 $git = new VersionControl_Git(dirname(__FILE__) . '/fixtures/001_VersionControl_Git'); 188 $instance = VersionControl_Git_Object_Commit::createInstanceByArray($git, array( 189 'commit' => 'commit 4ed54abb8efca38a0c794ca414b1f296279e0d85', 190 'tree' => 'tree cca66138995a95b45a725e8727ee97a20a816d41', 191 'parent' => 'parent ddf8aa7e97a206847658c90a26fe740b2e17231a', 192 'author' => 'author Kousuke Ebihara <ebihara@tejimaya.com> 1264003801 +0900', 193 'committer' => 'committer Kousuke Ebihara <ebihara@tejimaya.com> 1264003801 +0900', 194 )); 195 196 return $instance; 197 } 198} 199