Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.
Common duplication problems, and corresponding solutions are:
1 | <?php |
||
2 | class BugherdHeroToolTest extends FunctionalTest |
||
3 | { |
||
4 | protected static $fixture_file = 'SiteTreeTest.yml'; |
||
5 | public static $use_draft_site = true; |
||
6 | private $bugherd_string = 'sidebarv2.js?apikey='; |
||
7 | /** |
||
8 | * Test checks if an bugherd key was entered |
||
9 | */ |
||
10 | public function testProjectKey() |
||
11 | { |
||
12 | Config::inst()->update('BugherdHeroTool', 'project_key', 'xxxx'); |
||
13 | $project_key = Config::inst()->get('BugherdHeroTool', 'project_key'); |
||
14 | $this->assertTrue(is_string($project_key), "Can't find your Bugherd project_key, please insert the key into your _config.yml"); |
||
15 | } |
||
16 | |||
17 | |||
18 | |||
19 | public function testMemberStatus() |
||
20 | { |
||
21 | Config::inst()->update('BugherdHeroTool', 'member_status', true); |
||
22 | Config::inst()->update('Director', 'environment_type', 'dev'); |
||
23 | Config::inst()->update('BugherdHeroTool', 'environment_type', 'dev'); |
||
24 | Config::inst()->update('BugherdHeroTool', 'project_key', 'xxxx'); |
||
25 | |||
26 | $response = $this->get($this->objFromFixture('Page', 'home')->Link()); |
||
27 | $body = strpos($response->getBody(), $this->bugherd_string); |
||
28 | $this->assertFalse($body, _t('BugherdHeroToolTest.FindInTemplate').vsprintf(_t('BugherdHeroToolTest.ModeTestedModeMember'), array('loggedOut'))); |
||
29 | |||
30 | $cmseditor = $this->objFromFixture('Member', 'cmseditor'); |
||
31 | $cmseditor->logIn(); |
||
32 | $response = $this->get($this->objFromFixture('Page', 'home')->Link()); |
||
33 | $body = strpos($response->getBody(), $this->bugherd_string); |
||
34 | $this->assertTrue(is_numeric($body), _t('BugherdHeroToolTest.CantFindInTemplate').vsprintf(_t('BugherdHeroToolTest.ModeTestedModeMember'), array('loggedIn'))); |
||
35 | } |
||
36 | |||
37 | /** |
||
38 | * Test checks if the bugherd template can be found in the template implementation |
||
39 | */ |
||
40 | public function testModusDevNoMember() |
||
41 | { |
||
42 | Config::inst()->update('BugherdHeroTool', 'environment_type', 'dev'); |
||
43 | Config::inst()->update('Director', 'environment_type', 'dev'); |
||
44 | Config::inst()->update('BugherdHeroTool', 'project_key', 'xxxx'); |
||
45 | |||
46 | $response = $this->get($this->objFromFixture('Page', 'home')->Link()); |
||
47 | $body = strpos($response->getBody(), $this->bugherd_string); |
||
48 | $this->assertTrue(is_numeric($body), _t('BugherdHeroToolTest.CantFindInTemplate').vsprintf(_t('BugherdHeroToolTest.ModeTestedMode'), array('dev', 'dev'))); |
||
49 | |||
50 | Config::inst()->update('Director', 'environment_type', 'test'); |
||
51 | $response = $this->get($this->objFromFixture('Page', 'home')->Link()); |
||
52 | $body = strpos($response->getBody(), $this->bugherd_string); |
||
53 | $this->assertFalse($body, _t('BugherdHeroToolTest.FindInTemplate').vsprintf(_t('BugherdHeroToolTest.ModeTestedMode'), array('dev', 'test'))); |
||
54 | |||
55 | Config::inst()->update('Director', 'environment_type', 'live'); |
||
56 | $response = $this->get($this->objFromFixture('Page', 'home')->Link()); |
||
57 | $body = strpos($response->getBody(), $this->bugherd_string); |
||
58 | $this->assertFalse($body, _t('BugherdHeroToolTest.FindInTemplate').vsprintf(_t('BugherdHeroToolTest.ModeTestedMode'), array('dev', 'live'))); |
||
59 | } |
||
60 | |||
61 | public function testModusTestNoMember() |
||
62 | { |
||
63 | Config::inst()->update('BugherdHeroTool', 'environment_type', 'test'); |
||
64 | Config::inst()->update('Director', 'environment_type', 'test'); |
||
65 | Config::inst()->update('BugherdHeroTool', 'project_key', 'xxxx'); |
||
66 | |||
67 | $response = $this->get($this->objFromFixture('Page', 'home')->Link()); |
||
68 | $body = strpos($response->getBody(), $this->bugherd_string); |
||
69 | $this->assertTrue(is_numeric($body), _t('BugherdHeroToolTest.CantFindInTemplate').vsprintf(_t('BugherdHeroToolTest.ModeTestedMode'), array('test', 'test'))); |
||
70 | |||
71 | Config::inst()->update('Director', 'environment_type', 'dev'); |
||
72 | $response = $this->get($this->objFromFixture('Page', 'home')->Link()); |
||
73 | $body = strpos($response->getBody(), $this->bugherd_string); |
||
74 | $this->assertFalse($body, _t('BugherdHeroToolTest.FindInTemplate').vsprintf(_t('BugherdHeroToolTest.ModeTestedMode'), array('test', 'dev'))); |
||
75 | |||
76 | Config::inst()->update('Director', 'environment_type', 'live'); |
||
77 | $response = $this->get($this->objFromFixture('Page', 'home')->Link()); |
||
78 | $body = strpos($response->getBody(), $this->bugherd_string); |
||
79 | $this->assertFalse($body, _t('BugherdHeroToolTest.FindInTemplate').vsprintf(_t('BugherdHeroToolTest.ModeTestedMode'), array('test', 'live'))); |
||
80 | } |
||
81 | |||
82 | public function testModusLiveNoMember() |
||
83 | { |
||
84 | Config::inst()->update('BugherdHeroTool', 'environment_type', 'live'); |
||
85 | Config::inst()->update('Director', 'environment_type', 'live'); |
||
86 | Config::inst()->update('BugherdHeroTool', 'project_key', 'xxxx'); |
||
87 | |||
88 | $response = $this->get($this->objFromFixture('Page', 'home')->Link()); |
||
89 | $body = strpos($response->getBody(), $this->bugherd_string); |
||
90 | $this->assertTrue(is_numeric($body), _t('BugherdHeroToolTest.CantFindInTemplate').vsprintf(_t('BugherdHeroToolTest.ModeTestedMode'), array('live', 'live'))); |
||
91 | |||
92 | Config::inst()->update('Director', 'environment_type', 'dev'); |
||
93 | $response = $this->get($this->objFromFixture('Page', 'home')->Link()); |
||
94 | $body = strpos($response->getBody(), $this->bugherd_string); |
||
95 | $this->assertFalse($body, _t('BugherdHeroToolTest.FindInTemplate').vsprintf(_t('BugherdHeroToolTest.ModeTestedMode'), array('live', 'dev'))); |
||
96 | |||
97 | Config::inst()->update('Director', 'environment_type', 'test'); |
||
98 | $response = $this->get($this->objFromFixture('Page', 'home')->Link()); |
||
99 | $body = strpos($response->getBody(), $this->bugherd_string); |
||
100 | $this->assertFalse($body, _t('BugherdHeroToolTest.FindInTemplate').vsprintf(_t('BugherdHeroToolTest.ModeTestedMode'), array('live', 'test'))); |
||
101 | } |
||
102 | } |
||
103 |