setCustomer($customer); $model->setTemplate($template); $model->setQuery($query); $sut->setModel($model); $this->assertEquals(0, $sut->getTotal()); $this->assertEquals(0, $sut->getVat()); $this->assertEquals('EUR', $sut->getCurrency()); $this->assertEquals(0, $sut->getSubtotal()); $this->assertEquals(0, $sut->getTimeWorked()); $this->assertEquals(0, count($sut->getEntries())); $this->assertEquals(0, $sut->getTax()); } protected function assertDescription(CalculatorInterface $sut, $addProject = false, $addActivity = false) { $customer = new Customer(); $template = new InvoiceTemplate(); $template->setVat(19); $project = new Project(); $project->setName('project description'); $project->setCustomer($customer); $activity = new Activity(); $activity->setName('activity description'); $activity->setProject($project); $query = new InvoiceQuery(); if ($addProject === true) { $query->setProject($project); } elseif ($addActivity === true) { $query->setActivity($activity); } $timesheet = new Timesheet(); $timesheet ->setDescription('timesheet description') ->setBegin(new \DateTime()) ->setDuration(3600) ->setRate(293.27) ->setUser(new User()) ->setActivity((new Activity())->setName('foo')) ->setProject((new Project())->setName('bar')); $model = new InvoiceModel(); $model->setCustomer($customer); $model->setTemplate($template); $model->setEntries([$timesheet]); $model->setQuery($query); $sut->setModel($model); $this->assertEquals(1, count($sut->getEntries())); /** @var Timesheet $result */ $result = $sut->getEntries()[0]; if ($addProject === true) { $this->assertEquals('project description', $result->getDescription()); } elseif ($addActivity === true) { $this->assertEquals('activity description', $result->getDescription()); } else { $this->assertEquals('foo', $result->getDescription()); } } }