create(); $timezone = 'Europe/Vienna'; $importer = new ClockifyTimeEntriesImporter; $importer->init($organization); $data = Storage::disk('testfiles')->get('clockify_time_entries_import_test_1.csv'); // Act $importer->importData($data, $timezone); $report = $importer->getReport(); // Assert $testScenario = $this->checkTestScenarioAfterImportExcludingTimeEntries(); $this->checkTimeEntries($testScenario); $this->assertSame(2, $report->timeEntriesCreated); $this->assertSame(2, $report->tagsCreated); $this->assertSame(1, $report->tasksCreated); $this->assertSame(1, $report->usersCreated); $this->assertSame(2, $report->projectsCreated); $this->assertSame(1, $report->clientsCreated); } public function test_import_of_test_with_special_characters_description_succeeds(): void { // Arrange $organization = Organization::factory()->create(); $timezone = 'Europe/Vienna'; $importer = new ClockifyTimeEntriesImporter; $importer->init($organization); // Description: \\ 🔥 Special characters """`!@#$%^&*()_+\-=\[\]{};':"\\|,.''<>\/?~ \\\ $data = Storage::disk('testfiles')->get('clockify_time_entries_import_test_2.csv'); // Act $importer->importData($data, $timezone); $report = $importer->getReport(); // Assert $timeEntry = TimeEntry::first(); $this->assertSame('\\\\ 🔥 Special characters \'\'\'\'\'\'`!@#$%^&*()_+\-=\[\]{};\':\'\'\\\\|,.\'\'<>\/?~ \\\\\\', $timeEntry->description); $this->assertSame(1, $report->timeEntriesCreated); $this->assertSame(0, $report->tagsCreated); $this->assertSame(1, $report->tasksCreated); $this->assertSame(1, $report->usersCreated); $this->assertSame(1, $report->projectsCreated); $this->assertSame(1, $report->clientsCreated); } public function test_import_of_test_file_twice_succeeds(): void { // Arrange $organization = Organization::factory()->create(); $timezone = 'Europe/Vienna'; $importer = new ClockifyTimeEntriesImporter; $importer->init($organization); $data = Storage::disk('testfiles')->get('clockify_time_entries_import_test_1.csv'); $importer->importData($data, $timezone); $importer = new ClockifyTimeEntriesImporter; $importer->init($organization); // Act $importer->importData($data, $timezone); $report = $importer->getReport(); // Assert $testScenario = $this->checkTestScenarioAfterImportExcludingTimeEntries(); $this->checkTimeEntries($testScenario, true); $this->assertSame(2, $report->timeEntriesCreated); $this->assertSame(0, $report->tagsCreated); $this->assertSame(0, $report->tasksCreated); $this->assertSame(0, $report->usersCreated); $this->assertSame(0, $report->projectsCreated); $this->assertSame(0, $report->clientsCreated); } public function test_import_fails_if_month_in_date_is_bigger_than_12(): void { // Arrange $organization = Organization::factory()->create(); $timezone = 'Europe/Vienna'; $importer = new ClockifyTimeEntriesImporter; $importer->init($organization); $data = Storage::disk('testfiles')->get('clockify_time_entries_import_test_3.csv'); // Act try { $importer->importData($data, $timezone); } catch (ImportException $e) { // Assert $this->assertSame('Start date ("13/15/2024") is invalid, please select the correct date format before exporting from Clockify', $e->getMessage()); return; } $this->fail(); } }