getInvoiceModel(); $sut = new InvoiceModelProjectHydrator(); $result = $sut->hydrate($model); $this->assertModelStructure($result); $model->getQuery()->setProject(null); $result = $sut->hydrate($model); self::assertEmpty($result); } protected function assertModelStructure(array $model) { $keys = [ 'project.id', 'project.name', 'project.comment', 'project.order_date', 'project.order_number', 'project.fixed_rate', 'project.fixed_rate_nc', 'project.fixed_rate_plain', 'project.hourly_rate', 'project.hourly_rate_nc', 'project.hourly_rate_plain', 'project.meta.foo-project', 'project.start_date', 'project.end_date', 'project.budget_money', 'project.budget_money_nc', 'project.budget_money_plain', 'project.budget_time', 'project.budget_time_decimal', 'project.budget_time_minutes', ]; $givenKeys = array_keys($model); sort($keys); sort($givenKeys); $this->assertEquals($keys, $givenKeys); } }