setRate(999.99); $record->setHourlyRate(100); $record->setFixedRate(123.45); $record->setInternalRate(98.76); $record->setBillableMode(Timesheet::BILLABLE_NO); $user = new User(); $user->setPreferences([ new UserPreference(UserPreference::HOURLY_RATE, 75), new UserPreference(UserPreference::INTERNAL_RATE, 25) ]); $record->setUser($user); self::assertEquals(999.99, $record->getRate()); self::assertEquals(100, $record->getHourlyRate()); self::assertEquals(123.45, $record->getFixedRate()); self::assertEquals(98.76, $record->getInternalRate()); self::assertEquals(Timesheet::BILLABLE_NO, $record->getBillableMode()); $sut = new RateResetCalculator(); // 0 = before, 1 = after $sut->calculate($record, ['project' => [0 => new Project(), 1 => new Project()]]); self::assertEquals(0.00, $record->getRate()); self::assertNull($record->getHourlyRate()); self::assertNull($record->getFixedRate()); self::assertNull($record->getInternalRate()); self::assertEquals(Timesheet::BILLABLE_AUTOMATIC, $record->getBillableMode()); } }