Izveidot aplikāciju, kura ik pēc noteikta intervāla (60 sekundes) veic ierakstu datubāzē izmantojot Laravel freimworka iebūvēto funkcionalitāti.
<?php
/*
* This file is part of PHPUnit.
*
* (c) Sebastian Bergmann <sebastian@phpunit.de>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace PHPUnit\Framework;
class TestSuiteTest extends TestCase
{
/**
* @var TestResult
*/
private $result;
protected function setUp(): void
{
$this->result = new TestResult;
}
protected function tearDown(): void
{
$this->result = null;
}
/**
* @testdox TestSuite can be created with name of existing non-TestCase class
*/
public function testSuiteNameCanBeSameAsExistingNonTestClassName(): void
{
$suite = new TestSuite('stdClass');
$suite->addTestSuite(\OneTestCase::class);
$suite->run($this->result);
$this->assertCount(1, $this->result);
}
public function testAddTestSuite(): void
{
$suite = new TestSuite(\OneTestCase::class);
$suite->run($this->result);
$this->assertCount(1, $this->result);
}
public function testInheritedTests(): void
{
$suite = new TestSuite(\InheritedTestCase::class);
$suite->run($this->result);
$this->assertTrue($this->result->wasSuccessful());
$this->assertCount(2, $this->result);
}
public function testNoTestCases(): void
{
$suite = new TestSuite(\NoTestCases::class);
$suite->run($this->result);
$this->assertNotTrue($this->result->wasSuccessful());
$this->assertEquals(0, $this->result->failureCount());
$this->assertEquals(1, $this->result->warningCount());
$this->assertCount(1, $this->result);
}
public function testNotPublicTestCase(): void
{
$suite = new TestSuite(\NotPublicTestCase::class);
$this->assertCount(2, $suite);
}
public function testNotVoidTestCase(): void
{
$suite = new TestSuite(\NotVoidTestCase::class);
$this->assertCount(1, $suite);
}
public function testOneTestCase(): void
{
$suite = new TestSuite(\OneTestCase::class);
$suite->run($this->result);
$this->assertEquals(0, $this->result->errorCount());
$this->assertEquals(0, $this->result->failureCount());
$this->assertCount(1, $this->result);
$this->assertTrue($this->result->wasSuccessful());
}
public function testShadowedTests(): void
{
$suite = new TestSuite(\OverrideTestCase::class);
$suite->run($this->result);
$this->assertCount(1, $this->result);
}
public function testBeforeClassAndAfterClassAnnotations(): void
{
$suite = new TestSuite(\BeforeClassAndAfterClassTest::class);
\BeforeClassAndAfterClassTest::resetProperties();
$suite->run($this->result);
$this->assertEquals(1, \BeforeClassAndAfterClassTest::$beforeClassWasRun, '@beforeClass method was not run once for the whole suite.');
$this->assertEquals(1, \BeforeClassAndAfterClassTest::$afterClassWasRun, '@afterClass method was not run once for the whole suite.');
}
public function testBeforeClassWithDataProviders(): void
{
$suite = new TestSuite(\BeforeClassWithOnlyDataProviderTest::class);
\BeforeClassWithOnlyDataProviderTest::resetProperties();
$suite->run($this->result);
$this->assertTrue(\BeforeClassWithOnlyDataProviderTest::$setUpBeforeClassWasCalled, 'setUpBeforeClass method was not run.');
$this->assertTrue(\BeforeClassWithOnlyDataProviderTest::$beforeClassWasCalled, '@beforeClass method was not run.');
}
public function testBeforeAnnotation(): void
{
$test = new TestSuite(\BeforeAndAfterTest::class);
\BeforeAndAfterTest::resetProperties();
$test->run();
$this->assertEquals(2, \BeforeAndAfterTest::$beforeWasRun);
$this->assertEquals(2, \BeforeAndAfterTest::$afterWasRun);
}
public function testTestWithAnnotation(): void
{
$test = new TestSuite(\TestWithTest::class);
\BeforeAndAfterTest::resetProperties();
$result = $test->run();
$this->assertCount(4, $result->passed());
}
public function testSkippedTestDataProvider(): void
{
$suite = new TestSuite(\DataProviderSkippedTest::class);
$suite->run($this->result);
$this->assertEquals(3, $this->result->count());
$this->assertEquals(1, $this->result->skippedCount());
}
public function testTestDataProviderDependency(): void
{
$suite = new TestSuite(\DataProviderDependencyTest::class);
$suite->run($this->result);
$skipped = $this->result->skipped();
$lastSkippedResult = \array_pop($skipped);
$message = $lastSkippedResult->thrownException()->getMessage();
$this->assertContains('Test for DataProviderDependencyTest::testDependency skipped by data provider', $message);
}
public function testIncompleteTestDataProvider(): void
{
$suite = new TestSuite(\DataProviderIncompleteTest::class);
$suite->run($this->result);
$this->assertEquals(3, $this->result->count());
$this->assertEquals(1, $this->result->notImplementedCount());
}
public function testRequirementsBeforeClassHook(): void
{
$suite = new TestSuite(\RequirementsClassBeforeClassHookTest::class);
$suite->run($this->result);
$this->assertEquals(0, $this->result->errorCount());
$this->assertEquals(1, $this->result->skippedCount());
}
public function testDoNotSkipInheritedClass(): void
{
$suite = new TestSuite(
'DontSkipInheritedClass'
);
$dir = TEST_FILES_PATH . \DIRECTORY_SEPARATOR . 'Inheritance' . \DIRECTORY_SEPARATOR;
$suite->addTestFile($dir . 'InheritanceA.php');
$suite->addTestFile($dir . 'InheritanceB.php');
$result = $suite->run();
$this->assertCount(2, $result);
}
public function testCreateTestForConstructorlessTestClass(): void
{
$reflection = $this->getMockBuilder(\ReflectionClass::class)
->setConstructorArgs([$this])
->getMock();
$reflection->expects($this->once())
->method('getConstructor')
->willReturn(null);
$reflection->expects($this->once())
->method('isInstantiable')
->willReturn(true);
$reflection->expects($this->once())
->method('getName')
->willReturn(__CLASS__);
$this->expectException(Exception::class);
$this->expectExceptionMessage('No valid test provided.');
TestSuite::createTest($reflection, 'TestForConstructorlessTestClass');
}
/**
* @testdox Handles exceptions in tearDownAfterClass()
*/
public function testTearDownAfterClassInTestSuite(): void
{
$suite = new TestSuite(\ExceptionInTearDownAfterClassTest::class);
$suite->run($this->result);
$this->assertSame(3, $this->result->count());
$this->assertCount(1, $this->result->failures());
$failure = $this->result->failures()[0];
$this->assertSame(
'Exception in ExceptionInTearDownAfterClassTest::tearDownAfterClass' . \PHP_EOL .
'throw Exception in tearDownAfterClass()',
$failure->thrownException()->getMessage()
);
}
}