testCopyResourceNotExists()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 9
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 6
CRAP Score 1.0028

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 9
ccs 6
cts 7
cp 0.8571
rs 9.6666
cc 1
eloc 6
nc 1
nop 0
crap 1.0028
1
<?php
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
class CopyResourceCommandTest extends \PHPUnit_Framework_TestCase
9
{
10
    /**
11
     * @var ResourceDO
12
     */
13
    protected $resourceDO;
14
    /**
15
     * @var Filesystem
16
     */
17
    protected $filesystem;
18
19 8
    protected function setUp()
20
    {
21 8
        parent::setUp();
22 8
        $this->resourceDO = new ResourceDO();
23 8
        $this->filesystem = new Filesystem(new MemoryAdapter());
24 8
    }
25
26
    /**
27
     * @return CopyResourceCommand
28
     */
29 8
    public function getCommand(ResourceDO $resourceDOSource, ResourceDO $resourceDODest)
30
    {
31 8
        return new CopyResourceCommand($resourceDOSource, $resourceDODest, $this->filesystem);
32
    }
33
34
    /**
35
     * @return ResourceDO
36
     */
37 2
    public function getResourceDO()
38
    {
39 2
        return clone $this->resourceDO;
40
    }
41
42
    /**
43
     * @return ResourceDO
44
     */
45 7
    public function getResourceDOMock()
46
    {
47 7
        $resourceDO = clone $this->resourceDO;
48
49
        return $resourceDO
50 7
            ->setBaseDirectory('testBase')
51 7
            ->setName('testResource')
52 7
            ->setType('testType')
53 7
            ;
54
    }
55
56
    /**
57
     * @expectedException \Staticus\Resources\Exceptions\CommandErrorException
58
     * @expectedExceptionMessage Source resource cannot be empty
59
     */
60 1
    public function testCopyEmptySourceResource()
61
    {
62 1
        $resourceDOSource = $this->getResourceDO();
63 1
        $resourceDODest = $this->getResourceDO();
64 1
        $command = $this->getCommand($resourceDOSource, $resourceDODest);
65 1
        $command();
66
    }
67
68
    /**
69
     * @expectedException \Staticus\Resources\Exceptions\CommandErrorException
70
     * @expectedExceptionMessage Destination resource cannot be empty
71
     */
72 1
    public function testCopyEmptyDestinationResource()
73
    {
74 1
        $resourceDOSource = $this->getResourceDOMock();
75 1
        $resourceDODest = $this->getResourceDO();
76 1
        $command = $this->getCommand($resourceDOSource, $resourceDODest);
77 1
        $command();
78
    }
79
80
    /**
81
     * @expectedException \Staticus\Resources\Exceptions\CommandErrorException
82
     * @expectedExceptionMessage Origin file is not exists: testBase/testType/def/def/0/c9f/c9f7e81bafc626421e04b573022e6203.testType
83
     */
84 1
    public function testCopyResourceNotExists()
85
    {
86 1
        $resourceDOSource = $this->getResourceDOMock();
87 1
        $resourceDODest = $this->getResourceDOMock();
88 1
        $resourceDODest->setNameAlternative('testAlternative');
89
90 1
        $command = $this->getCommand($resourceDOSource, $resourceDODest);
91 1
        $command();
92
    }
93
94
    /**
95
     * @expectedException \Staticus\Resources\Exceptions\CommandErrorException
96
     * @expectedExceptionMessage Source and destination paths is equal
97
     */
98 1
    public function testCopyResourceToItself()
99
    {
100 1
        $resourceDOSource = $this->getResourceDOMock();
101 1
        $resourceDODest = $resourceDOSource;
102 1
        $this->filesystem->put($resourceDOSource->getFilePath(), '');
103
104 1
        $command = $this->getCommand($resourceDOSource, $resourceDODest);
105 1
        $command();
106
    }
107
108 1
    public function testCopyResourceNormal()
109
    {
110 1
        $resourceDOSource = $this->getResourceDOMock();
111 1
        $resourceDODest = $this->getResourceDOMock();
112 1
        $resourceDODest->setVersion($resourceDOSource->getVersion() + 1);
113 1
        $this->filesystem->put($resourceDOSource->getFilePath(), '');
114
115 1
        $command = $this->getCommand($resourceDOSource, $resourceDODest);
116 1
        $result = $command();
117
118 1
        $this->assertEquals($resourceDODest, $result);
119 1
        $this->assertTrue($this->filesystem->has($resourceDODest->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...
120 1
    }
121
122 1
    public function testCopyResourceToExists()
123
    {
124 1
        $resourceDOSource = $this->getResourceDOMock();
125 1
        $resourceDODest = $this->getResourceDOMock();
126 1
        $resourceDODest->setVersion($resourceDOSource->getVersion() + 1);
127 1
        $this->filesystem->put($resourceDOSource->getFilePath(), '');
128 1
        $this->filesystem->put($resourceDODest->getFilePath(), '');
129
130 1
        $command = $this->getCommand($resourceDOSource, $resourceDODest);
131 1
        $result = $command();
132
133 1
        $this->assertEquals($resourceDOSource, $result);
134 1
    }
135
136 1
    public function testReplaceNotExistsCopy()
137
    {
138 1
        $resourceDOSource = $this->getResourceDOMock();
139 1
        $resourceDODest = $this->getResourceDOMock();
140 1
        $resourceDODest->setVersion($resourceDOSource->getVersion() + 1);
141 1
        $contentExpected = 'New content';
142 1
        $this->filesystem->put($resourceDOSource->getFilePath(), $contentExpected);
143
144 1
        $command = $this->getCommand($resourceDOSource, $resourceDODest);
145 1
        $result = $command(true);
146
147 1
        $this->assertEquals($resourceDODest, $result);
148 1
        $this->assertEquals($contentExpected, $this->filesystem->read($resourceDODest->getFilePath()));
149 1
    }
150
151 1
    public function testReplaceExistsCopy()
152
    {
153 1
        $resourceDOSource = $this->getResourceDOMock();
154 1
        $resourceDODest = $this->getResourceDOMock();
155 1
        $resourceDODest->setVersion($resourceDOSource->getVersion() + 1);
156 1
        $contentExpected = 'New content';
157 1
        $this->filesystem->put($resourceDOSource->getFilePath(), $contentExpected);
158 1
        $this->filesystem->put($resourceDODest->getFilePath(), 'Exist content');
159
160 1
        $command = $this->getCommand($resourceDOSource, $resourceDODest);
161 1
        $result = $command(true);
162
163 1
        $this->assertEquals($resourceDODest, $result);
164 1
        $this->assertEquals($contentExpected, $this->filesystem->read($resourceDODest->getFilePath()));
165 1
    }
166
}
167