1<?php 2 3class Profile_BuilderTest extends PHPUnit_Framework_TestCase 4{ 5 function testBasicProfile() 6 { 7 $builder = new Services_Workspace_ProfileBuilder; 8 9 $expect = <<<EXPECT 10{ } 11EXPECT; 12 $this->assertIs($expect, $builder->getContent()); 13 } 14 15 function testAddObjects() 16 { 17 $builder = new Services_Workspace_ProfileBuilder; 18 $builder->addObject( 19 'wiki_page', 20 'foo', 21 [ 22 'name' => 'Foo', 23 'content' => 'Hello', 24 ] 25 ); 26 $builder->addObject( 27 'trackerfield', 28 'date', 29 [ 30 'tracker' => $builder->ref('tracker'), 31 ] 32 ); 33 34 $expect = <<<EXPECT 35objects: 36 - 37 type: wiki_page 38 ref: foo 39 data: 40 name: Foo 41 content: Hello 42 - 43 type: trackerfield 44 ref: date 45 data: 46 tracker: \$tracker 47EXPECT; 48 $this->assertIs($expect, $builder->getContent()); 49 } 50 51 function testGroups() 52 { 53 $builder = new Services_Workspace_ProfileBuilder; 54 $builder->addGroup('Base', $builder->user('group')); 55 $builder->addGroup('Viewer', $builder->user('group') . ' Viewer', true); 56 $builder->setManagingGroup('Base'); 57 58 $expect = <<<EXPECT 59mappings: 60 Base: '\$profilerequest:group\$undefined\$' 61 Viewer: '\$profilerequest:group\$undefined\$ Viewer' 62permissions: 63 Base: 64 description: '\$profilerequest:group\$undefined\$' 65 objects: 66 - 67 type: group 68 id: Base 69 allow: 70 - group_view 71 - group_view_members 72 - group_add_member 73 - group_remove_member 74 - 75 type: group 76 id: Viewer 77 allow: 78 - group_view 79 - group_view_members 80 - group_add_member 81 - group_remove_member 82 Viewer: 83 description: '\$profilerequest:group\$undefined\$ Viewer' 84 autojoin: 'y' 85 objects: 86 - 87 type: group 88 id: Base 89 allow: 90 - group_view 91 - group_view_members 92 - 93 type: group 94 id: Viewer 95 allow: 96 - group_view 97 - group_view_members 98EXPECT; 99 $this->assertIs($expect, $builder->getContent()); 100 } 101 102 function testReplaceSimpleSyntax() 103 { 104 $builder = new Services_Workspace_ProfileBuilder; 105 $builder->addGroup('Base', '{group}'); 106 $builder->setManagingGroup('Base'); 107 108 $expect = <<<EXPECT 109mappings: 110 Base: '\$profilerequest:group\$undefined\$' 111permissions: 112 Base: 113 description: '\$profilerequest:group\$undefined\$' 114 objects: 115 - 116 type: group 117 id: Base 118 allow: 119 - group_view 120 - group_view_members 121 - group_add_member 122 - group_remove_member 123EXPECT; 124 $this->assertIs($expect, $builder->getContent()); 125 } 126 127 function testAssignDefaultGroup() 128 { 129 $builder = new Services_Workspace_ProfileBuilder; 130 $builder->addObject( 131 'wiki_page', 132 'foo', 133 [ 134 'name' => 'Foo', 135 'content' => 'Hello', 136 'categories' => $builder->user('category'), 137 ] 138 ); 139 140 $expect = <<<EXPECT 141objects: 142 - 143 type: categorize 144 data: 145 type: wiki_page 146 object: \$foo 147 categories: 148 - '\$profilerequest:category\$undefined\$' 149 - 150 type: wiki_page 151 ref: foo 152 data: 153 name: Foo 154 content: Hello 155EXPECT; 156 $this->assertIs($expect, $builder->getContent()); 157 } 158 159 private function assertIs($expect, $content) 160 { 161 $matches = WikiParser_PluginMatcher::match($content); 162 163 foreach ($matches as $plugin) { 164 $this->assertEquals(trim($expect), trim($plugin->getBody())); 165 } 166 } 167} 168