DestroyResourceCommandTest   A
last analyzed

Complexity

Total Complexity 14

Size/Duplication

Total Lines 229
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 6

Test Coverage

Coverage 99.28%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 14
c 1
b 0
f 0
lcom 1
cbo 6
dl 0
loc 229
ccs 138
cts 139
cp 0.9928
rs 10

14 Methods

Rating   Name   Duplication   Size   Complexity  
A getCommand() 0 4 1
A getResourceDO() 0 4 1
A getResourceDOMock() 0 10 1
A testDestroyEmptyResource() 0 6 1
A testDestroyResourceThatNotExist() 0 7 1
A setUp() 0 8 1
A testDestroyResourceByPath() 0 11 1
A testDestroyResourceByPathButLeaveOthers() 0 7 1
B testDestroyResourceVersion() 0 32 1
A testDestroyResourceVersionButLeaveOthers() 0 7 1
B testDestroyResourceVariant() 0 39 1
A testDestroyResourceVariantButLeaveOthers() 0 7 1
B testDestroyResourceAllVariantsAndVersions() 0 38 1
A testDestroyResourceAllVariantsAndVersionsButLeaveOthers() 0 7 1
1
<?php
0 ignored issues
show
Coding Style Compatibility introduced by
For compatibility and reusability of your code, PSR1 recommends that a file should introduce either new symbols (like classes, functions, etc.) or have side-effects (like outputting something, or including other files), but not both at the same time. The first symbol is defined on line 9 and the first side effect is on line 8.

The PSR-1: Basic Coding Standard recommends that a file should either introduce new symbols, that is classes, functions, constants or similar, or have side effects. Side effects are anything that executes logic, like for example printing output, changing ini settings or writing to a file.

The idea behind this recommendation is that merely auto-loading a class should not change the state of an application. It also promotes a cleaner style of programming and makes your code less prone to errors, because the logic is not spread out all over the place.

To learn more about the PSR-1, please see the PHP-FIG site on the PSR-1.

Loading history...
2
namespace Staticus\Resources\Commands;
3
4
use League\Flysystem\Filesystem;
5
use League\Flysystem\Memory\MemoryAdapter;
6
use Staticus\Resources\File\ResourceDO;
7
8
require_once 'AddWrongFilesToDiskHelper.php';
9
class DestroyResourceCommandTest extends \PHPUnit_Framework_TestCase
10
{
11
    /**
12
     * @var ResourceDO
13
     */
14
    protected $resourceDO;
15
    /**
16
     * @var Filesystem
17
     */
18
    protected $filesystem;
19
    /**
20
     * @var AddWrongFilesToDiskHelper
21
     */
22
    protected $wrongFiles;
23
24 10
    protected function setUp()
25
    {
26 10
        parent::setUp();
27 10
        $this->resourceDO = new ResourceDO();
28 10
        $this->filesystem = new Filesystem(new MemoryAdapter());
29 10
        $this->wrongFiles = new AddWrongFilesToDiskHelper($this->filesystem, $this);
30
31 10
    }
32
33
    /**
34
     * @return DestroyResourceCommand
35
     */
36 10
    public function getCommand(ResourceDO $resourceDO)
37
    {
38 10
        return new DestroyResourceCommand($resourceDO, $this->filesystem);
39
    }
40
41
    /**
42
     * @return ResourceDO
43
     */
44 1
    public function getResourceDO()
45
    {
46 1
        return clone $this->resourceDO;
47
    }
48
49
    /**
50
     * @return ResourceDO
51
     */
52 9
    public function getResourceDOMock()
53
    {
54 9
        $resourceDO = clone $this->resourceDO;
55
56
        return $resourceDO
57 9
            ->setBaseDirectory('testBase')
58 9
            ->setName('testResource')
59 9
            ->setType('testType')
60 9
            ;
61
    }
62
63
    /**
64
     * @expectedException \Staticus\Resources\Exceptions\CommandErrorException
65
     * @expectedExceptionMessage Cannot destroy the empty resource
66
     */
67 1
    public function testDestroyEmptyResource()
68
    {
69 1
        $resourceDO = $this->getResourceDO();
70 1
        $command = $this->getCommand($resourceDO);
71 1
        $command();
72
    }
73
74 1
    public function testDestroyResourceThatNotExist()
75
    {
76 1
        $resourceDO = $this->getResourceDOMock();
77 1
        $command = $this->getCommand($resourceDO);
78 1
        $result = $command(true);
79 1
        $this->assertEquals($resourceDO, $result);
80 1
    }
81
82 2
    public function testDestroyResourceByPath()
83
    {
84 2
        $resourceDO = $this->getResourceDOMock();
85 2
        $this->filesystem->put($resourceDO->getFilePath(), '');
86
87 2
        $command = $this->getCommand($resourceDO);
88 2
        $result = $command(true);
89
90 2
        $this->assertEquals($resourceDO, $result);
91 2
        $this->assertFalse($this->filesystem->has($resourceDO->getFilePath(), ''));
0 ignored issues
show
Unused Code introduced by
The call to Filesystem::has() has too many arguments starting with ''.

This check compares calls to functions or methods with their respective definitions. If the call has more arguments than are defined, it raises an issue.

If a function is defined several times with a different number of parameters, the check may pick up the wrong definition and report false positives. One codebase where this has been known to happen is Wordpress.

In this case you can add the @ignore PhpDoc annotation to the duplicate definition and it will be ignored.

Loading history...
92 2
    }
93
94 1
    public function testDestroyResourceByPathButLeaveOthers()
95
    {
96 1
        $resourceDO = $this->getResourceDOMock();
97 1
        $this->wrongFiles->create($resourceDO);
98 1
        $this->testDestroyResourceByPath();
99 1
        $this->wrongFiles->assertExist($resourceDO);
100 1
    }
101
102 2
    public function testDestroyResourceVersion()
103
    {
104 2
        $resourceDO = $this->getResourceDOMock();
105 2
        $this->filesystem->put($resourceDO->getFilePath(), '');
106
107 2
        $resourceDO_v1 = clone $resourceDO;
108 2
        $resourceDO_v1->setVersion(1);
109 2
        $this->filesystem->put($resourceDO_v1->getFilePath(), '');
110
111 2
        $resourceDO_v2 = clone $resourceDO;
112 2
        $resourceDO_v2->setVersion(2);
113 2
        $this->filesystem->put($resourceDO_v2->getFilePath(), '');
114
115 2
        $resourceDO_var = clone $resourceDO;
116 2
        $resourceDO_var->setVariant('variant');
117 2
        $this->filesystem->put($resourceDO_var->getFilePath(), '');
118
119 2
        $resourceDO_var_v2 = clone $resourceDO_var;
120 2
        $resourceDO_var_v2->setVersion(2);
121 2
        $this->filesystem->put($resourceDO_var_v2->getFilePath(), '');
122
123 2
        $command = $this->getCommand($resourceDO_v1);
124 2
        $result = $command();
125
126 2
        $this->assertEquals($resourceDO_v1, $result);
127 2
        $this->assertFalse($this->filesystem->has($resourceDO_v1->getFilePath()));
128
129 2
        $this->assertTrue($this->filesystem->has($resourceDO_v2->getFilePath()));
130 2
        $this->assertTrue($this->filesystem->has($resourceDO->getFilePath()));
131 2
        $this->assertTrue($this->filesystem->has($resourceDO_var->getFilePath()));
132 2
        $this->assertTrue($this->filesystem->has($resourceDO_var_v2->getFilePath()));
133 2
    }
134
135 1
    public function testDestroyResourceVersionButLeaveOthers()
136
    {
137 1
        $resourceDO = $this->getResourceDOMock();
138 1
        $this->wrongFiles->create($resourceDO);
139 1
        $this->testDestroyResourceVersion();
140 1
        $this->wrongFiles->assertExist($resourceDO);
141 1
    }
142
143 2
    public function testDestroyResourceVariant()
144
    {
145 2
        $resourceDO = $this->getResourceDOMock();
146 2
        $this->filesystem->put($resourceDO->getFilePath(), '');
147
148 2
        $resourceDO_v2 = clone $resourceDO;
149 2
        $resourceDO_v2->setVersion(2);
150 2
        $this->filesystem->put($resourceDO_v2->getFilePath(), '');
151
152 2
        $resourceDO_var1 = clone $resourceDO;
153 2
        $resourceDO_var1->setVariant('1');
154 2
        $this->filesystem->put($resourceDO_var1->getFilePath(), '');
155
156
        // variant version must be deleted too
157 2
        $resourceDO_var1_v1 = clone $resourceDO_var1;
158 2
        $resourceDO_var1_v1->setVersion(1);
159 2
        $this->filesystem->put($resourceDO_var1_v1->getFilePath(), '');
160
161 2
        $resourceDO_var2 = clone $resourceDO;
162 2
        $resourceDO_var2->setVariant('2');
163 2
        $this->filesystem->put($resourceDO_var2->getFilePath(), '');
164
165 2
        $resourceDO_var2_v1 = clone $resourceDO_var2;
166 2
        $resourceDO_var2_v1->setVersion(2);
167 2
        $this->filesystem->put($resourceDO_var2_v1->getFilePath(), '');
168
169 2
        $command = $this->getCommand($resourceDO_var1);
170 2
        $result = $command();
171
172 2
        $this->assertEquals($resourceDO_var1, $result);
173
174 2
        $this->assertFalse($this->filesystem->has($resourceDO_var1->getFilePath()));
175 2
        $this->assertFalse($this->filesystem->has($resourceDO_var1_v1->getFilePath()));
176
177 2
        $this->assertTrue($this->filesystem->has($resourceDO_v2->getFilePath()));
178 2
        $this->assertTrue($this->filesystem->has($resourceDO_var2->getFilePath()));
179 2
        $this->assertTrue($this->filesystem->has($resourceDO_var2_v1->getFilePath()));
180 2
        $this->assertTrue($this->filesystem->has($resourceDO->getFilePath()));
181 2
    }
182
183 1
    public function testDestroyResourceVariantButLeaveOthers()
184
    {
185 1
        $resourceDO = $this->getResourceDOMock();
186 1
        $this->wrongFiles->create($resourceDO);
187 1
        $this->testDestroyResourceVariant();
188 1
        $this->wrongFiles->assertExist($resourceDO);
189 1
    }
190
191 2
    public function testDestroyResourceAllVariantsAndVersions()
192
    {
193 2
        $resourceDO = $this->getResourceDOMock();
194 2
        $this->filesystem->put($resourceDO->getFilePath(), '');
195
196 2
        $resourceDO_v2 = clone $resourceDO;
197 2
        $resourceDO_v2->setVersion(2);
198 2
        $this->filesystem->put($resourceDO_v2->getFilePath(), '');
199
200 2
        $resourceDO_var1 = clone $resourceDO;
201 2
        $resourceDO_var1->setVariant('1');
202 2
        $this->filesystem->put($resourceDO_var1->getFilePath(), '');
203
204
        // variant version must be deleted too
205 2
        $resourceDO_var1_v1 = clone $resourceDO_var1;
206 2
        $resourceDO_var1_v1->setVersion(1);
207 2
        $this->filesystem->put($resourceDO_var1_v1->getFilePath(), '');
208
209 2
        $resourceDO_var2 = clone $resourceDO;
210 2
        $resourceDO_var2->setVariant('2');
211 2
        $this->filesystem->put($resourceDO_var2->getFilePath(), '');
212
213 2
        $resourceDO_var2_v1 = clone $resourceDO_var2;
214 2
        $resourceDO_var2_v1->setVersion(2);
215 2
        $this->filesystem->put($resourceDO_var2_v1->getFilePath(), '');
216
217 2
        $command = $this->getCommand($resourceDO);
218 2
        $result = $command();
219
220 2
        $this->assertEquals($resourceDO, $result);
221
222 2
        $this->assertFalse($this->filesystem->has($resourceDO_var1->getFilePath()));
223 2
        $this->assertFalse($this->filesystem->has($resourceDO_var1_v1->getFilePath()));
224 2
        $this->assertFalse($this->filesystem->has($resourceDO_v2->getFilePath()));
225 2
        $this->assertFalse($this->filesystem->has($resourceDO_var2->getFilePath()));
226 2
        $this->assertFalse($this->filesystem->has($resourceDO_var2_v1->getFilePath()));
227 2
        $this->assertFalse($this->filesystem->has($resourceDO->getFilePath()));
228 2
    }
229
230 1
    public function testDestroyResourceAllVariantsAndVersionsButLeaveOthers()
231
    {
232 1
        $resourceDO = $this->getResourceDOMock();
233 1
        $this->wrongFiles->create($resourceDO);
234 1
        $this->testDestroyResourceAllVariantsAndVersions();
235 1
        $this->wrongFiles->assertExist($resourceDO);
236 1
    }
237
}
238