Files
api/services/nginx/app/tests/goalsModule/goalsTest.php
T
Jeppe Bundgaard 51b8198a67 Introduce goals module with methods for result, percentage, and remaining calculations
- Add `goals` class for managing goal metrics and calculations.
- Extend `goals_criteria` with timeframe initialization and validation.
- Implement `getListByCriteria` in `order_items_o.php` for product-based goal evaluation.
- Add unit tests for `goals` to validate
2026-01-26 16:24:23 +01:00

48 lines
1.3 KiB
PHP

<?php
namespace tests\goalsModule;
use goals\classes\goals;
use goals\classes\goals_criteria;
use goals\helpers\goals_criteria_type;
use PHPUnit\Framework\TestCase;
class goalsTest extends TestCase
{
public function testGoalsInitialization()
{
$goal = new goals();
$this->assertInstanceOf(goals::class, $goal);
$this->assertInstanceOf(goals_criteria::class, $goal->criteria);
}
public function testGetResultDefault()
{
$goal = new goals();
$this->assertEquals(0, $goal->getResult());
}
public function testGetPercentage()
{
$goal = new goals();
$goal->criteria->setTarget(100);
// Mocking getResult is hard without dependency injection or better structure,
// but since we know it returns 0 by default:
$this->assertEquals(0.0, $goal->getPercentage());
// Manually setting a result isn't possible as getResult() calculates it.
// But we can check if it handles target 0 correctly.
$goal->criteria->setTarget(0);
$this->assertEquals(0.0, $goal->getPercentage());
}
public function testGetRemaining()
{
$goal = new goals();
$goal->criteria->setTarget(50);
// Result is 0, so remaining should be 50
$this->assertEquals(50, $goal->getRemaining());
}
}