Completed
Push — master ( fc7027...e72ab1 )
by Philip
24:06
created

testRemoveEmptyDirectoryTest()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 27

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 27
rs 9.488
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
3
namespace App\Tests\Acceptance;
4
5
use App\DataFixtures\UserReferenceTrait;
6
use App\DataFixtures\Users;
7
use Dontdrinkandroot\GitkiBundle\Service\FileSystem\FileSystemService;
8
use Dontdrinkandroot\GitkiBundle\Service\Wiki\WikiService;
9
use Dontdrinkandroot\Path\DirectoryPath;
10
use Dontdrinkandroot\Path\FilePath;
11
12
class DirectoryRemoveTest extends BaseAcceptanceTest
13
{
14
    use UserReferenceTrait;
15
16
    public function testRemoveEmptyDirectoryTest()
17
    {
18
        $referenceRepository = $this->loadFixtures([Users::class])->getReferenceRepository();
19
        $client = $this->makeBrowser();
20
        
21
        $directoryPath = DirectoryPath::parse('/testdirectory/');
22
        /** @var FileSystemService $fileSystemService */
23
        $fileSystemService = $this->getContainer()->get(
24
            'test.Dontdrinkandroot\GitkiBundle\Service\FileSystem\FileSystemService'
25
        );
26
        /** @var WikiService $wikiService */
27
        $wikiService = $this->getContainer()->get('test.Dontdrinkandroot\GitkiBundle\Service\Wiki\WikiService');
28
        $wikiService->createFolder($directoryPath);
29
        $this->assertFileExists(
30
            $directoryPath->prepend($fileSystemService->getBasePath())->toAbsoluteFileSystemString()
31
        );
32
33
        $this->login($client, $this->getUser(Users::COMMITTER, $referenceRepository));
34
        $client->request('GET', '/browse/testdirectory/?action=remove');
35
//        $this->assertStatusCode(302, $client);
36
        $this->assertEquals(302, $client->getResponse()->getStatusCode());
37
        $this->assertEquals('/browse/', $client->getResponse()->headers->get('Location'));
38
39
        $this->assertFileNotExists(
40
            $directoryPath->prepend($fileSystemService->getBasePath())->toAbsoluteFileSystemString()
41
        );
42
    }
43
44
    public function testRemoveNonEmptyDirectoryTest()
45
    {
46
        $referenceRepository = $this->loadFixtures([Users::class])->getReferenceRepository();
47
        $client = $this->makeBrowser();
48
        
49
        /** @var FileSystemService $fileSystemService */
50
        $fileSystemService = $this->getContainer()->get(
51
            'test.Dontdrinkandroot\GitkiBundle\Service\FileSystem\FileSystemService'
52
        );
53
54
        $exampleFile = FilePath::parse('/examples/toc-example.md');
55
        $exampleDirectory = DirectoryPath::parse('/examples/');
56
57
        $this->assertFileExists(
58
            $exampleFile->prepend($fileSystemService->getBasePath())->toAbsoluteFileSystemString()
59
        );
60
        $this->assertFileExists(
61
            $exampleDirectory->prepend($fileSystemService->getBasePath())->toAbsoluteFileSystemString()
62
        );
63
64
        $this->logIn($client, $this->getUser(Users::COMMITTER, $referenceRepository));
65
        $crawler = $client->request('GET', '/browse/examples/?action=remove');
66
//        $this->assertStatusCode(200, $client);
67
        $this->assertEquals(200, $client->getResponse()->getStatusCode());
68
        $submitButton = $crawler->selectButton('Remove all files');
69
        $form = $submitButton->form();
70
        $client->submit(
71
            $form,
72
            [
73
                'form[commitMessage]' => 'A test commit message'
74
            ]
75
        );
76
//        $this->assertStatusCode(302, $client);
77
        $this->assertEquals(302, $client->getResponse()->getStatusCode());
78
        $this->assertEquals('/browse/', $client->getResponse()->headers->get('Location'));
79
80
        $this->assertFileNotExists(
81
            $exampleFile->prepend($fileSystemService->getBasePath())->toAbsoluteFileSystemString()
82
        );
83
        $this->assertFileNotExists(
84
            $exampleDirectory->prepend($fileSystemService->getBasePath())->toAbsoluteFileSystemString()
85
        );
86
    }
87
88
    public function testRemoveNonEmptyDirectoryWithLockTest()
89
    {
90
        $referenceRepository = $this->loadFixtures([Users::class])->getReferenceRepository();
91
        $client = $this->makeBrowser();
92
93
        $exampleFile = FilePath::parse('/examples/toc-example.md');
94
        $exampleDirectory = DirectoryPath::parse('/examples/');
95
96
        /** @var FileSystemService $fileSystemService */
97
        $fileSystemService = $this->getContainer()->get(
98
            'test.Dontdrinkandroot\GitkiBundle\Service\FileSystem\FileSystemService'
99
        );
100
        /** @var WikiService $wikiService */
101
        $wikiService = $this->getContainer()->get('test.Dontdrinkandroot\GitkiBundle\Service\Wiki\WikiService');
102
        $wikiService->createLock($this->getUser(Users::ADMIN, $referenceRepository), $exampleFile);
103
104
        $this->assertFileExists(
105
            $exampleFile->prepend($fileSystemService->getBasePath())->toAbsoluteFileSystemString()
106
        );
107
        $this->assertFileExists(
108
            $exampleDirectory->prepend($fileSystemService->getBasePath())->toAbsoluteFileSystemString()
109
        );
110
111
        $this->logIn($client, $this->getUser(Users::COMMITTER, $referenceRepository));
112
        $crawler = $client->request('GET', '/browse/examples/?action=remove');
113
//        $this->assertStatusCode(200, $client);
114
        $this->assertEquals(200, $client->getResponse()->getStatusCode());
115
        $submitButton = $crawler->selectButton('Remove all files');
116
        $form = $submitButton->form();
117
        $client->submit(
118
            $form,
119
            [
120
                'form[commitMessage]' => 'A test commit message'
121
            ]
122
        );
123
//        $this->assertStatusCode(500, $client);
124
        $this->assertEquals(500, $client->getResponse()->getStatusCode());
125
    }
126
}
127