Issues (3877)

Generator/DocumentationGeneratorTest.php (1 issue)

1
<?php
2
3
/**
4
 * Copyright © 2016-present Spryker Systems GmbH. All rights reserved.
5
 * Use of this software requires acceptance of the Evaluation License Agreement. See LICENSE file.
6
 */
7
8
namespace SprykerTest\Glue\DocumentationGeneratorApi\Generator;
9
10
use Codeception\Test\Unit;
11
use Spryker\Glue\DocumentationGeneratorApi\Dependency\Client\DocumentationGeneratorApiToStorageClientInterface;
12
use Spryker\Glue\DocumentationGeneratorApi\Dependency\Service\DocumentationGenerationApiToUtilEncodingServiceInterface;
13
use Spryker\Glue\DocumentationGeneratorApi\DocumentationGeneratorApiDependencyProvider;
14
use Spryker\Glue\DocumentationGeneratorApiExtension\Dependency\Plugin\ApiApplicationProviderPluginInterface;
15
use Spryker\Glue\DocumentationGeneratorApiExtension\Dependency\Plugin\ContentGeneratorStrategyPluginInterface;
16
17
/**
18
 * Auto-generated group annotations
19
 *
20
 * @group SprykerTest
21
 * @group Glue
22
 * @group DocumentationGeneratorApi
23
 * @group Generator
24
 * @group DocumentationGeneratorTest
25
 * Add your own group annotations below this line
26
 */
27
class DocumentationGeneratorTest extends Unit
28
{
29
    /**
30
     * @var string
31
     */
32
    protected const TEST_FILE_NAME = 'spryker_test_api.schema.yml';
33
34
    /**
35
     * @var string
36
     */
37
    protected $testOutputFilePath;
38
39
    /**
40
     * @var \SprykerTest\Glue\DocumentationGeneratorApi\DocumentationGeneratorApiTester
41
     */
42
    protected $tester;
43
44
    /**
45
     * @return void
46
     */
47
    public function setUp(): void
48
    {
49
        parent::setUp();
50
51
        $this->testOutputFilePath = codecept_output_dir() . static::TEST_FILE_NAME;
0 ignored issues
show
The function codecept_output_dir was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

51
        $this->testOutputFilePath = /** @scrutinizer ignore-call */ codecept_output_dir() . static::TEST_FILE_NAME;
Loading history...
52
    }
53
54
    /**
55
     * @return void
56
     */
57
    public function tearDown(): void
58
    {
59
        parent::tearDown();
60
61
        if (file_exists($this->testOutputFilePath)) {
62
            unlink($this->testOutputFilePath);
63
        }
64
    }
65
66
    /**
67
     * @return void
68
     */
69
    public function testGenerateDocumentationCreatesFileSuccessfully(): void
70
    {
71
        //Arrange
72
        $apiApplicationProviderPluginInterfaceMock = $this->createMock(ApiApplicationProviderPluginInterface::class);
73
        $apiApplicationProviderPluginInterfaceMock->expects($this->exactly(3))
74
            ->method('getName')
75
            ->willReturn('fakeApp');
76
        $this->tester->setDependency(
77
            DocumentationGeneratorApiDependencyProvider::PLUGINS_API_APPLICATION_PROVIDER,
78
            [
79
                $apiApplicationProviderPluginInterfaceMock,
80
            ],
81
        );
82
83
        $this->tester->mockConfigMethod('getGeneratedFullFileName', $this->testOutputFilePath);
84
85
        $contentGeneratorStrategyPluginMock = $this->createMock(ContentGeneratorStrategyPluginInterface::class);
86
        $contentGeneratorStrategyPluginMock->expects($this->once())
87
            ->method('generateContent')
88
            ->willReturn('fakeContent');
89
        $storageClientMock = $this->createMock(DocumentationGeneratorApiToStorageClientInterface::class);
90
        $utilEncodingService = $this->createMock(DocumentationGenerationApiToUtilEncodingServiceInterface::class);
91
        $utilEncodingService->method('encodeJson')->willReturn('{}');
92
93
        $this->tester->setDependency(
94
            DocumentationGeneratorApiDependencyProvider::PLUGIN_CONTENT_GENERATOR_STRATEGY,
95
            $contentGeneratorStrategyPluginMock,
96
        );
97
        $this->tester->setDependency(
98
            DocumentationGeneratorApiDependencyProvider::CLIENT_STORAGE,
99
            $storageClientMock,
100
        );
101
        $this->tester->setDependency(
102
            DocumentationGeneratorApiDependencyProvider::SERVICE_UTIL_ENCODING,
103
            $utilEncodingService,
104
        );
105
106
        //Act
107
        $this->tester->getFactory()->createDocumentationGenerator()->generateDocumentation();
108
109
        //Assert
110
        $this->assertFileExists($this->testOutputFilePath);
111
    }
112
}
113