getId()); self::assertEquals('title', $template->getTitle()); self::assertNull($template->getLocale()); self::assertEquals([], $template->getColumns(new TimesheetQuery())); self::assertEquals([], $template->getOptions()); } public function testSetsAndGetsColumnsCorrectly(): void { $template = new Template('id', 'title'); $columns = ['Column1', 'Column2']; $template->setColumns($columns); self::assertEquals($columns, $template->getColumns(new TimesheetQuery())); $template->setColumns([]); self::assertEquals([], $template->getColumns(new TimesheetQuery())); } public function testSetsAndGetsOptionsCorrectly(): void { $template = new Template('id', 'title'); $options = ['key1' => 'value1', 'key2' => 'value2']; $template->setOptions($options); self::assertEquals($options, $template->getOptions()); $template->setOptions([]); self::assertEquals([], $template->getOptions()); } public function testSetsAndGetsLocaleCorrectly(): void { $template = new Template('id', 'title'); $template->setLocale('en_US'); self::assertEquals('en_US', $template->getLocale()); } public function testHandlesNullLocaleGracefully(): void { $template = new Template('id', 'title'); $template->setLocale(null); self::assertNull($template->getLocale()); } }