mirror of
https://github.com/Intervention/image.git
synced 2025-09-01 18:02:45 +02:00
PHPUnit 10 Migration (#1302)
* Bump PHPUnit dependencies * Set return type of base TestCase methods From the [PHPUnit 8 release notes][1], the `TestCase` methods below now declare a `void` return type: - `setUpBeforeClass()` - `setUp()` - `assertPreConditions()` - `assertPostConditions()` - `tearDown()` - `tearDownAfterClass()` - `onNotSuccessfulTest()` [1]: https://phpunit.de/announcements/phpunit-8.html * Ignore PHPUnit cache folder * Adopt PHP attributes in test classes * Declare data providers as `static` * Add return types to test methods * Define test classes as `final` * Migrate phpunit.xml to phpunit 10 * Correct phpunit attribute class name * Rename base test class * Restructure test folders * Fix test image paths * Only set rules for php files in .editorconfig * Remove php unit flag in local test env --------- Co-authored-by: Shift <shift@laravelshift.com>
This commit is contained in:
180
tests/Unit/CollectionTest.php
Normal file
180
tests/Unit/CollectionTest.php
Normal file
@@ -0,0 +1,180 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Intervention\Image\Tests\Unit;
|
||||
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use Intervention\Image\Collection;
|
||||
use Intervention\Image\Exceptions\RuntimeException;
|
||||
use Intervention\Image\Tests\BaseTestCase;
|
||||
|
||||
#[CoversClass(\Intervention\Image\Collection::class)]
|
||||
final class CollectionTest extends BaseTestCase
|
||||
{
|
||||
public function testConstructor(): void
|
||||
{
|
||||
$collection = new Collection(['foo', 'bar', 'baz']);
|
||||
$this->assertInstanceOf(Collection::class, $collection);
|
||||
|
||||
$collection = Collection::create(['foo', 'bar', 'baz']);
|
||||
$this->assertInstanceOf(Collection::class, $collection);
|
||||
}
|
||||
|
||||
public function testIterator(): void
|
||||
{
|
||||
$collection = new Collection(['foo', 'bar', 'baz']);
|
||||
foreach ($collection as $key => $item) {
|
||||
switch ($key) {
|
||||
case 0:
|
||||
$this->assertEquals('foo', $item);
|
||||
break;
|
||||
|
||||
case 1:
|
||||
$this->assertEquals('bar', $item);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
$this->assertEquals('baz', $item);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function testCount(): void
|
||||
{
|
||||
$collection = new Collection(['foo', 'bar', 'baz']);
|
||||
$this->assertEquals(3, $collection->count());
|
||||
$this->assertEquals(3, count($collection));
|
||||
}
|
||||
|
||||
public function testFilter(): void
|
||||
{
|
||||
$collection = new Collection(['foo', 'bar', 'baz']);
|
||||
$this->assertEquals(3, $collection->count());
|
||||
$collection = $collection->filter(function ($text) {
|
||||
return substr($text, 0, 1) == 'b';
|
||||
});
|
||||
$this->assertEquals(2, $collection->count());
|
||||
}
|
||||
|
||||
public function testFirstLast(): void
|
||||
{
|
||||
$collection = new Collection(['foo', 'bar', 'baz']);
|
||||
$this->assertEquals('foo', $collection->first());
|
||||
$this->assertEquals('baz', $collection->last());
|
||||
|
||||
$collection = new Collection();
|
||||
$this->assertNull($collection->first());
|
||||
$this->assertNull($collection->last());
|
||||
}
|
||||
|
||||
public function testPush(): void
|
||||
{
|
||||
$collection = new Collection(['foo', 'bar', 'baz']);
|
||||
$this->assertEquals(3, $collection->count());
|
||||
$result = $collection->push('test');
|
||||
$this->assertEquals(4, $collection->count());
|
||||
$this->assertInstanceOf(Collection::class, $result);
|
||||
}
|
||||
|
||||
public function testToArray(): void
|
||||
{
|
||||
$collection = new Collection(['foo', 'bar', 'baz']);
|
||||
$this->assertEquals(['foo', 'bar', 'baz'], $collection->toArray());
|
||||
}
|
||||
|
||||
public function testMap(): void
|
||||
{
|
||||
$collection = new Collection(['FOO', 'BAR', 'BAZ']);
|
||||
$mapped = $collection->map(function ($item) {
|
||||
return strtolower($item);
|
||||
});
|
||||
$this->assertInstanceOf(Collection::class, $collection);
|
||||
$this->assertInstanceOf(Collection::class, $mapped);
|
||||
$this->assertEquals(['FOO', 'BAR', 'BAZ'], $collection->toArray());
|
||||
$this->assertEquals(['foo', 'bar', 'baz'], $mapped->toArray());
|
||||
}
|
||||
|
||||
public function testGet(): void
|
||||
{
|
||||
$collection = new Collection([
|
||||
'first',
|
||||
'second',
|
||||
['testx' => 'x'],
|
||||
'foo' => 'foo_value',
|
||||
'bar' => 'bar_value',
|
||||
'baz' => [
|
||||
'test1' => '1',
|
||||
'test2' => '2',
|
||||
'test3' => [
|
||||
'example' => 'value'
|
||||
]
|
||||
]
|
||||
]);
|
||||
|
||||
$this->assertEquals('first', $collection->get(0));
|
||||
$this->assertEquals('second', $collection->get(1));
|
||||
$this->assertEquals('first', $collection->get('0'));
|
||||
$this->assertEquals('second', $collection->get('1'));
|
||||
$this->assertEquals('x', $collection->get('2.testx'));
|
||||
$this->assertEquals('foo_value', $collection->get('foo'));
|
||||
$this->assertEquals('bar_value', $collection->get('bar'));
|
||||
$this->assertEquals('1', $collection->get('baz.test1'));
|
||||
$this->assertEquals('2', $collection->get('baz.test2'));
|
||||
$this->assertEquals('value', $collection->get('baz.test3.example'));
|
||||
$this->assertEquals('value', $collection->get('baz.test3.example', 'default'));
|
||||
$this->assertEquals('default', $collection->get('baz.test3.no', 'default'));
|
||||
$this->assertEquals(['example' => 'value'], $collection->get('baz.test3'));
|
||||
}
|
||||
|
||||
public function testGetAtPosition(): void
|
||||
{
|
||||
$collection = new Collection([1, 2, 'foo' => 'bar']);
|
||||
$this->assertEquals(1, $collection->getAtPosition(0));
|
||||
$this->assertEquals(2, $collection->getAtPosition(1));
|
||||
$this->assertEquals('bar', $collection->getAtPosition(2));
|
||||
$this->assertNull($collection->getAtPosition(3));
|
||||
$this->assertEquals('default', $collection->getAtPosition(3, 'default'));
|
||||
}
|
||||
|
||||
public function testGetAtPositionEmpty(): void
|
||||
{
|
||||
$collection = new Collection();
|
||||
$this->assertNull($collection->getAtPosition());
|
||||
$this->assertEquals('default', $collection->getAtPosition(3, 'default'));
|
||||
}
|
||||
|
||||
public function testEmpty(): void
|
||||
{
|
||||
$collection = new Collection([1, 2, 3]);
|
||||
$this->assertEquals(3, $collection->count());
|
||||
$result = $collection->empty();
|
||||
$this->assertEquals(0, $collection->count());
|
||||
$this->assertEquals(0, $result->count());
|
||||
}
|
||||
|
||||
public function testSlice(): void
|
||||
{
|
||||
$collection = new Collection(['a', 'b', 'c', 'd', 'e', 'f']);
|
||||
$this->assertEquals(6, $collection->count());
|
||||
$result = $collection->slice(0, 3);
|
||||
$this->assertEquals(['a', 'b', 'c'], $collection->toArray());
|
||||
$this->assertEquals(['a', 'b', 'c'], $result->toArray());
|
||||
$this->assertEquals('a', $result->get(0));
|
||||
$this->assertEquals('b', $result->get(1));
|
||||
$this->assertEquals('c', $result->get(2));
|
||||
|
||||
$result = $collection->slice(2, 1);
|
||||
$this->assertEquals(['c'], $collection->toArray());
|
||||
$this->assertEquals(['c'], $result->toArray());
|
||||
$this->assertEquals('c', $result->get(0));
|
||||
}
|
||||
|
||||
public function testSliceOutOfBounds(): void
|
||||
{
|
||||
$this->expectException(RuntimeException::class);
|
||||
$collection = new Collection(['a', 'b', 'c']);
|
||||
$collection->slice(6);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user