create(); $importer = new ClockifyTimeEntriesImporter(); $importer->init($organization); $data = file_get_contents(storage_path('tests/clockify_time_entries_import_test_1.csv')); // Act $importer->importData($data); // Assert $testScenario = $this->checkTestScenarioAfterImportExcludingTimeEntries(); $timeEntries = TimeEntry::all(); $this->assertCount(2, $timeEntries); $timeEntry1 = $timeEntries->firstWhere('description', ''); $this->assertNotNull($timeEntry1); $this->assertSame('', $timeEntry1->description); $this->assertSame('2024-03-04 10:23:52', $timeEntry1->start->toDateTimeString()); $this->assertSame('2024-03-04 10:23:52', $timeEntry1->end->toDateTimeString()); $this->assertFalse($timeEntry1->billable); $this->assertSame([$testScenario->tag1->getKey(), $testScenario->tag2->getKey()], $timeEntry1->tags); $timeEntry2 = $timeEntries->firstWhere('description', 'Working hard'); $this->assertNotNull($timeEntry2); $this->assertSame('Working hard', $timeEntry2->description); $this->assertSame('2024-03-04 10:23:00', $timeEntry2->start->toDateTimeString()); $this->assertSame('2024-03-04 11:23:01', $timeEntry2->end->toDateTimeString()); $this->assertTrue($timeEntry2->billable); $this->assertSame([], $timeEntry2->tags); } public function test_import_of_test_file_twice_succeeds(): void { // Arrange $organization = Organization::factory()->create(); $importer = new ClockifyTimeEntriesImporter(); $importer->init($organization); $data = file_get_contents(storage_path('tests/clockify_time_entries_import_test_1.csv')); $importer->importData($data); $importer = new ClockifyTimeEntriesImporter(); $importer->init($organization); // Act $importer->importData($data); // Assert $testScenario = $this->checkTestScenarioAfterImportExcludingTimeEntries(); $timeEntries = TimeEntry::all(); $this->assertCount(4, $timeEntries); $timeEntry1 = $timeEntries->firstWhere('description', ''); $this->assertNotNull($timeEntry1); $this->assertSame('', $timeEntry1->description); $this->assertSame('2024-03-04 10:23:52', $timeEntry1->start->toDateTimeString()); $this->assertSame('2024-03-04 10:23:52', $timeEntry1->end->toDateTimeString()); $this->assertFalse($timeEntry1->billable); $this->assertSame([$testScenario->tag1->getKey(), $testScenario->tag2->getKey()], $timeEntry1->tags); $timeEntry2 = $timeEntries->firstWhere('description', 'Working hard'); $this->assertNotNull($timeEntry2); $this->assertSame('Working hard', $timeEntry2->description); $this->assertSame('2024-03-04 10:23:00', $timeEntry2->start->toDateTimeString()); $this->assertSame('2024-03-04 11:23:01', $timeEntry2->end->toDateTimeString()); $this->assertTrue($timeEntry2->billable); $this->assertSame([], $timeEntry2->tags); } }