1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
namespace SilverStripe\CKANRegistry\Tests\Model; |
4
|
|
|
|
5
|
|
|
use SilverStripe\CKANRegistry\Model\Resource; |
6
|
|
|
use SilverStripe\CKANRegistry\Service\ResourceFieldPopulator; |
7
|
|
|
use SilverStripe\Core\Injector\Injector; |
8
|
|
|
use SilverStripe\Dev\SapphireTest; |
9
|
|
|
|
10
|
|
|
class ResourceTest extends SapphireTest |
11
|
|
|
{ |
12
|
|
|
protected static $fixture_file = 'ResourceTest.yml'; |
13
|
|
|
|
14
|
|
|
protected function setUp() |
15
|
|
|
{ |
16
|
|
|
$populator = $this->createMock(ResourceFieldPopulator::class); |
17
|
|
|
Injector::inst()->registerService($populator, ResourceFieldPopulator::class); |
18
|
|
|
|
19
|
|
|
parent::setUp(); |
20
|
|
|
} |
21
|
|
|
|
22
|
|
|
public function testFieldsAndFiltersAreRemovedAfterChangingIdentifier() |
23
|
|
|
{ |
24
|
|
|
/** @var Resource $resource */ |
25
|
|
|
$resource = $this->objFromFixture(Resource::class, 'teachers'); |
26
|
|
|
|
27
|
|
|
$this->assertGreaterThan(0, $resource->Fields()->count(), 'Fixtures should load relationships'); |
28
|
|
|
$this->assertGreaterThan(0, $resource->Filters()->count(), 'Fixtures should load relationships'); |
29
|
|
|
|
30
|
|
|
// Change name, relationships should be retained |
31
|
|
|
$resource->Name = 'Primary Teachers'; |
32
|
|
|
$resource->write(); |
33
|
|
|
|
34
|
|
|
$this->assertGreaterThan(0, $resource->Fields()->count(), 'Changing name should not affect relations'); |
35
|
|
|
$this->assertGreaterThan(0, $resource->Filters()->count(), 'Changing name should not affect relations'); |
36
|
|
|
|
37
|
|
|
// Change identifier, relationships should be removed |
38
|
|
|
$resource->Identifier = 'something-different'; |
39
|
|
|
$resource->write(); |
40
|
|
|
|
41
|
|
|
$this->assertCount(0, $resource->Fields(), 'Changing identifier should clear fields'); |
42
|
|
|
$this->assertCount(0, $resource->Filters(), 'Changing identifier should clear filters'); |
43
|
|
|
} |
44
|
|
|
} |
45
|
|
|
|