1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
declare(strict_types=1); |
4
|
|
|
|
5
|
|
|
namespace Smartbox\CoreBundle\Tests\Command; |
6
|
|
|
|
7
|
|
|
use Smartbox\CoreBundle\Utils\SmokeTest\Output\SmokeTestOutputInterface; |
8
|
|
|
use Smartbox\CoreBundle\Utils\SmokeTest\SmokeTestInterface; |
9
|
|
|
use Symfony\Bundle\FrameworkBundle\Console\Application; |
10
|
|
|
use Smartbox\CoreBundle\Command\SmokeTestRunCommand; |
11
|
|
|
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase; |
12
|
|
|
use Symfony\Component\Console\Input\ArrayInput; |
13
|
|
|
use Symfony\Component\Console\Output\NullOutput; |
14
|
|
|
use Symfony\Component\Console\Tester\CommandTester; |
15
|
|
|
|
16
|
|
|
/** |
17
|
|
|
* @group smoke-test |
18
|
|
|
*/ |
19
|
|
|
class SmokeTestRunCommandTest extends KernelTestCase |
20
|
|
|
{ |
21
|
|
|
public function testExecuteCommand() |
22
|
|
|
{ |
23
|
|
|
$kernel = $this->createKernel(); |
24
|
|
|
$kernel->boot(); |
25
|
|
|
|
26
|
|
|
$application = new Application($kernel); |
27
|
|
|
$application->add(new SmokeTestRunCommand()); |
28
|
|
|
|
29
|
|
|
$command = $application->find('smartbox:smoke-test'); |
30
|
|
|
|
31
|
|
|
$input = ['command' => $command->getName()]; |
32
|
|
|
|
33
|
|
|
$commandTester = new CommandTester($command); |
34
|
|
|
$commandTester->execute($input); |
35
|
|
|
|
36
|
|
|
$output = $commandTester->getDisplay(); |
37
|
|
|
|
38
|
|
|
$this->assertInternalType('string', $output); |
39
|
|
|
$this->assertContains('Smoke Tests', $output); |
40
|
|
|
$this->assertNotContains('Error', $output); |
41
|
|
|
} |
42
|
|
|
|
43
|
|
View Code Duplication |
public function testSmokeTestCommandNoLabels() |
|
|
|
|
44
|
|
|
{ |
45
|
|
|
$smokeTestOutput = $this->createMock(SmokeTestOutputInterface::class); |
46
|
|
|
$smokeTestOutput->expects($this->any())->method('isOK')->will($this->returnValue(true)); |
47
|
|
|
$smokeTestOutput->expects($this->any())->method('getMessages')->will($this->returnValue([])); |
48
|
|
|
|
49
|
|
|
$smokeTest1 = $this->createMock(SmokeTestInterface::class); |
50
|
|
|
$smokeTest1->expects($this->never())->method('run')->will($this->returnValue($smokeTestOutput)); |
51
|
|
|
$smokeTest1->expects($this->never())->method('getDescription'); |
52
|
|
|
|
53
|
|
|
$smokeTest2 = $this->createMock(SmokeTestInterface::class); |
54
|
|
|
$smokeTest2->expects($this->once())->method('run')->will($this->returnValue($smokeTestOutput)); |
55
|
|
|
$smokeTest2->expects($this->once())->method('getDescription'); |
56
|
|
|
|
57
|
|
|
$smokeTestRunCommand = new SmokeTestRunCommand(); |
58
|
|
|
$smokeTestRunCommand->addTest('id1', $smokeTest1, 'run', 'getDescription', ['wip']); |
59
|
|
|
$smokeTestRunCommand->addTest('id2', $smokeTest2, 'run', 'getDescription', ['critical']); |
60
|
|
|
|
61
|
|
|
$smokeTestRunCommand->run(new ArrayInput(['--label' => []]), new NullOutput()); |
62
|
|
|
} |
63
|
|
|
|
64
|
|
View Code Duplication |
public function testSmokeTestCommandWipLabel() |
|
|
|
|
65
|
|
|
{ |
66
|
|
|
$smokeTestOutput = $this->createMock(SmokeTestOutputInterface::class); |
67
|
|
|
$smokeTestOutput->expects($this->any())->method('isOK')->will($this->returnValue(true)); |
68
|
|
|
$smokeTestOutput->expects($this->any())->method('getMessages')->will($this->returnValue([])); |
69
|
|
|
|
70
|
|
|
$smokeTest1 = $this->createMock(SmokeTestInterface::class); |
71
|
|
|
$smokeTest1->expects($this->once())->method('run')->will($this->returnValue($smokeTestOutput)); |
72
|
|
|
$smokeTest1->expects($this->once())->method('getDescription'); |
73
|
|
|
|
74
|
|
|
$smokeTest2 = $this->createMock(SmokeTestInterface::class); |
75
|
|
|
$smokeTest2->expects($this->never())->method('run')->will($this->returnValue($smokeTestOutput)); |
76
|
|
|
$smokeTest2->expects($this->never())->method('getDescription'); |
77
|
|
|
|
78
|
|
|
$smokeTestRunCommand = new SmokeTestRunCommand(); |
79
|
|
|
$smokeTestRunCommand->addTest('id1', $smokeTest1, 'run', 'getDescription', ['wip']); |
80
|
|
|
$smokeTestRunCommand->addTest('id2', $smokeTest2, 'run', 'getDescription', ['critical']); |
81
|
|
|
|
82
|
|
|
$smokeTestRunCommand->run(new ArrayInput(['--label' => ['wip']]), new NullOutput()); |
83
|
|
|
} |
84
|
|
|
|
85
|
|
View Code Duplication |
public function testSmokeTestCommandAllTests() |
|
|
|
|
86
|
|
|
{ |
87
|
|
|
$smokeTestOutput = $this->createMock(SmokeTestOutputInterface::class); |
88
|
|
|
$smokeTestOutput->expects($this->any())->method('isOK')->will($this->returnValue(true)); |
89
|
|
|
$smokeTestOutput->expects($this->any())->method('getMessages')->will($this->returnValue([])); |
90
|
|
|
|
91
|
|
|
$smokeTest1 = $this->createMock(SmokeTestInterface::class); |
92
|
|
|
$smokeTest1->expects($this->once())->method('run')->will($this->returnValue($smokeTestOutput)); |
93
|
|
|
$smokeTest1->expects($this->once())->method('getDescription'); |
94
|
|
|
|
95
|
|
|
$smokeTest2 = $this->createMock(SmokeTestInterface::class); |
96
|
|
|
$smokeTest2->expects($this->once())->method('run')->will($this->returnValue($smokeTestOutput)); |
97
|
|
|
$smokeTest2->expects($this->once())->method('getDescription'); |
98
|
|
|
|
99
|
|
|
$smokeTestRunCommand = new SmokeTestRunCommand(); |
100
|
|
|
$smokeTestRunCommand->addTest('id1', $smokeTest1, 'run', 'getDescription', ['wip']); |
101
|
|
|
$smokeTestRunCommand->addTest('id2', $smokeTest2, 'run', 'getDescription', ['critical']); |
102
|
|
|
|
103
|
|
|
$smokeTestRunCommand->run(new ArrayInput(['--all' => true]), new NullOutput()); |
104
|
|
|
} |
105
|
|
|
} |
106
|
|
|
|
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.
You can also find more detailed suggestions in the “Code” section of your repository.