51 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
| <?php
 | |
| 
 | |
| namespace Tests\EndToEnd\Member;
 | |
| 
 | |
| use App\Member\Member;
 | |
| use Illuminate\Support\Facades\Storage;
 | |
| use Tests\EndToEndTestCase;
 | |
| 
 | |
| class ExportCsvActionTest extends EndToEndTestCase
 | |
| {
 | |
|     public function testItExportsACsvFile(): void
 | |
|     {
 | |
|         Storage::fake('temp');
 | |
| 
 | |
|         $this->withoutExceptionHandling()->login()->loginNami();
 | |
|         Member::factory()->defaults()->postBillKind()->create(['firstname' => 'Jane', 'main_phone' => '+49 176 70343221', 'email' => 'max@muster.de']);
 | |
|         Member::factory()->defaults()->emailBillKind()->create(['firstname' => 'Max']);
 | |
| 
 | |
|         sleep(1);
 | |
|         $response = $this->callFilter('member-export', ['bill_kind' => 'Post']);
 | |
| 
 | |
|         $response->assertDownload('mitglieder.csv');
 | |
|         $contents = Storage::disk('temp')->get('mitglieder.csv');
 | |
|         $this->assertTrue(str_contains($contents, 'Jane'));
 | |
|         $this->assertTrue(str_contains($contents, '+49 176 70343221'));
 | |
|         $this->assertTrue(str_contains($contents, 'max@muster.de'));
 | |
|         $this->assertFalse(str_contains($contents, 'Max'));
 | |
|     }
 | |
| 
 | |
|     public function testItOrdersByLastname(): void
 | |
|     {
 | |
|         Storage::fake('temp');
 | |
| 
 | |
|         $this->withoutExceptionHandling()->login()->loginNami();
 | |
|         Member::factory()->defaults()->create(['lastname' => 'C']);
 | |
|         Member::factory()->defaults()->create(['lastname' => 'A']);
 | |
| 
 | |
|         sleep(1);
 | |
|         $response = $this->callFilter('member-export', []);
 | |
| 
 | |
|         $response->assertDownload('mitglieder.csv');
 | |
|         $contents = Storage::disk('temp')->get('mitglieder.csv');
 | |
|         $this->assertEquals(['A', 'C'], collect(explode("\n", $contents))
 | |
|             ->filter(fn ($line) => $line !== '')
 | |
|             ->filter(fn ($line) => !str($line)->startsWith('Nachname'))
 | |
|             ->map(fn ($line) => (string) str($line)->substr(0, 1))
 | |
|             ->values()
 | |
|             ->toArray());
 | |
|     }
 | |
| }
 |