Completed
Push — master ( 9e3f76...51d53f )
by Hamish
10:45
created

updateVersionableFields()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 3
c 1
b 0
f 0
nc 1
nop 3
dl 0
loc 4
rs 10
1
<?php
2
/**
3
 * @package framework
4
 * @subpackage tests
5
 */
6
7
class VersionableExtensionsTest extends SapphireTest
8
{
9
	protected static $fixture_file = 'VersionableExtensionsFixtures.yml';
10
11
	protected $requiredExtensions = array(
12
		'VersionableExtensionsTest_DataObject'  => array('Versioned'),
13
	);
14
15
	protected $extraDataObjects = array(
16
		'VersionableExtensionsTest_DataObject',
17
	);
18
19
20
	public function setUpOnce()
21
	{
22
		Config::nest();
23
24
		VersionableExtensionsTest_DataObject::add_extension('Versioned');
25
		VersionableExtensionsTest_DataObject::add_extension('VersionableExtensionsTest_Extension');
26
27
		$cfg = Config::inst();
28
29
		$cfg->update('VersionableExtensionsTest_DataObject', 'versionableExtensions', array(
30
			'VersionableExtensionsTest_Extension' => array(
31
				'test1',
32
				'test2',
33
				'test3'
34
			)
35
		));
36
37
		parent::setUpOnce();
38
	}
39
40
	////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
41
42
43
	public function testTablesAreCreated()
44
	{
45
		$tables = DB::table_list();
46
47
		$check = array(
48
			'versionableextensionstest_dataobject_test1_live', 'versionableextensionstest_dataobject_test2_live', 'versionableextensionstest_dataobject_test3_live',
49
			'versionableextensionstest_dataobject_test1_versions', 'versionableextensionstest_dataobject_test2_versions', 'versionableextensionstest_dataobject_test3_versions'
50
		);
51
52
		// Check that the right tables exist
53
		foreach ($check as $tableName) {
54
55
			$this->assertContains($tableName, array_keys($tables), 'Contains table: '.$tableName);
56
		}
57
58
	}
59
60
}
61
62
class VersionableExtensionsTest_DataObject extends DataObject implements TestOnly {
63
64
	private static $db = array(
65
		'Title' => 'Varchar'
66
	);
67
68
}
69
70
71
class VersionableExtensionsTest_Extension extends DataExtension implements VersionableExtension, TestOnly {
72
73
74
	public function isVersionedTable($table) {
75
		return true;
76
	}
77
78
79
	/**
80
	 * Update fields and indexes for the versonable suffix table
81
	 *
82
	 * @param string $suffix Table suffix being built
83
	 * @param array $fields List of fields in this model
84
	 * @param array $indexes List of indexes in this model
85
	 * @return array
86
	 */
87
	public function updateVersionableFields($suffix, &$fields, &$indexes){
88
		$indexes['ExtraField'] = true;
89
		$fields['ExtraField'] = 'Varchar()';
90
	}
91
}
92