Files
kimai/tests/Invoice/InvoiceItemTest.php
Kevin Papst 677f8d776c [3.0] Update Symfony to 7.4 and dependencies, removed deprecated code, removed API password (#5622)
* deactivate deprecated auto-mapping
* use native month-picker with fallback on old browser
* bump dependencies to new major versions
* replace deprecated ARRAY column type with JSON
* named arguments
* nullable arguments
* native lazy ghosts
* update routes to use php config
* disable PHP < 8.4
* use static RTL configuration
* new qr code package
* clear out env file
* recipe updates
* fix deprecations
* preset new env variable if not existing
* bump maria db version examples
* remove deprecated api-token support
* fix validator deprecations
* remove timesheet category column
* fix broken validator autoconfiguration
* stabilize tests
* fix migration syntax compatibility
* fix doctrine deprecation
* fix datetime format
* remove constructor dependency
* only include visible preferences in invoice templates
* fix test container dependency
* removed ProjectConstraint multi-constraint logic
* allow to disable plugins in certain environments
* refactor TimesheetConstraint to non-service
* activate new interface methods
* prevent update issues with .env
* improved customer fixture
* removed $user->isExportDecimal()
2026-01-04 15:04:25 +01:00

77 lines
2.7 KiB
PHP

<?php
/*
* This file is part of the Kimai time-tracking app.
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace App\Tests\Invoice;
use App\Invoice\InvoiceItem;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\TestCase;
#[CoversClass(InvoiceItem::class)]
class InvoiceItemTest extends TestCase
{
public function testEmptyObject(): void
{
$sut = new InvoiceItem();
self::assertFalse($sut->isFixedRate());
self::assertNull($sut->getHourlyRate());
self::assertNull($sut->getFixedRate());
self::assertNull($sut->getEnd());
self::assertEquals(0.00, $sut->getRate());
self::assertEquals(0.00, $sut->getInternalRate());
self::assertEquals(0.00, $sut->getAppliedRate());
self::assertNull($sut->getProject());
self::assertIsArray($sut->getAdditionalFields());
self::assertEmpty($sut->getAdditionalFields());
self::assertNull($sut->getAdditionalField('foo'));
self::assertEquals('bar', $sut->getAdditionalField('foo', 'bar'));
self::assertNull($sut->getAdditionalField('foo'));
self::assertInstanceOf(InvoiceItem::class, $sut->addAdditionalField('foo', 'bar2'));
self::assertEquals('bar2', $sut->getAdditionalField('foo'));
self::assertEquals(0, $sut->getAmount());
self::assertNull($sut->getBegin());
self::assertNull($sut->getActivity());
self::assertNull($sut->getUser());
self::assertNull($sut->getDescription());
self::assertEquals(0, $sut->getDuration());
self::assertNull($sut->getCategory());
self::assertNull($sut->getType());
self::assertEquals([], $sut->getTags());
$sut->addTag('foo');
$sut->addTag('foo');
$sut->addTag('foo1');
$sut->addTag('BaR');
$sut->addTag('bar');
$sut->addTag('FOO');
$sut->addTag('bar');
$sut->addTag('foo1');
self::assertEquals(['foo', 'foo1', 'BaR'], $sut->getTags());
}
public function testRates(): void
{
$sut = new InvoiceItem();
self::assertEquals(0.00, $sut->getHourlyRate());
self::assertNull($sut->getFixedRate());
self::assertEquals(0.00, $sut->getAppliedRate());
$sut->setHourlyRate(13.50);
self::assertEquals(13.50, $sut->getHourlyRate());
self::assertNull($sut->getFixedRate());
self::assertEquals(13.50, $sut->getAppliedRate());
$sut->setFixedRate(30.24);
self::assertEquals(13.50, $sut->getHourlyRate());
self::assertEquals(30.24, $sut->getFixedRate());
self::assertEquals(30.24, $sut->getAppliedRate());
}
}