Completed
Push — 3.1 ( 269ff1 )
by Gordon
06:46
created

PageControllerTemplateOverrideExtensionTest   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 51
Duplicated Lines 54.9 %

Coupling/Cohesion

Components 1
Dependencies 2

Test Coverage

Coverage 100%
Metric Value
wmc 3
lcom 1
cbo 2
dl 28
loc 51
ccs 34
cts 34
cp 1
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A testLayoutTemplateOveride() 14 14 1
A testOuterTemplateOveride() 14 14 1
A testNoTemplateOverride() 0 12 1

How to fix   Duplicated Code   

Duplicated Code

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
3
class PageControllerTemplateOverrideExtensionTest extends FunctionalTest {
4
5
	protected static $fixture_file = 'template-override/tests/pages.yml';
6
7 1 View Code Duplication
	public function testLayoutTemplateOveride() {
8 1
		$this->logInWithPermission('ADMIN');
9 1
		$page = $this->objFromFixture('Page', 'page1');
10 1
		$page->AlternativeTemplate = 'PageInnerTest';
11 1
		$page->write();
12 1
		$page->doPublish();
13 1
		$response = $this->get('/' . $page->URLSegment);
14 1
		$this->assertEquals(200, $response->getStatusCode());
15
16
		// assert the the inner layout template has been used
17 1
		$this->assertExactMatchBySelector("div.marker", array(
18
			"INNER LAYOUT"
19 1
		));
20 1
	}
21
22
23 1 View Code Duplication
	public function testOuterTemplateOveride() {
24 1
		$this->logInWithPermission('ADMIN');
25 1
		$page = $this->objFromFixture('Page', 'page1');
26 1
		$page->AlternativeTemplate = 'PageOuterTest';
27 1
		$page->write();
28 1
		$page->doPublish();
29 1
		$response = $this->get('/' . $page->URLSegment);
30 1
		$this->assertEquals(200, $response->getStatusCode());
31
32
		// show the the outer layout template has been used
33 1
		$this->assertExactMatchBySelector("div.marker", array(
34
			"OUTER OF LAYOUT"
35 1
		));
36 1
	}
37
38
39 1
	public function testNoTemplateOverride() {
40 1
		$this->logInWithPermission('ADMIN');
41 1
		$page = $this->objFromFixture('Page', 'page1');
42 1
		$page->AlternativeTemplate = null;
43 1
		$page->write();
44 1
		$page->doPublish();
45 1
		$response = $this->get('/' . $page->URLSegment);
46 1
		$this->assertEquals(200, $response->getStatusCode());
47 1
		$body = $response->getBody();
48 1
		$this->assertNotContains('OUTER OF LAYOUT', $body);
49 1
		$this->assertNotContains('INNER LAYOUT', $body);
50 1
	}
51
52
53
}
54