Skip to content

Commit d08432e

Browse files
committed
WIP
1 parent 66497d3 commit d08432e

File tree

4 files changed

+128
-1
lines changed

4 files changed

+128
-1
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ then optimize the processes that power the core of your business.
103103
| FileCabinets/CheckInCheckOut | Undo Check-out | 🕣 | |
104104
| FileCabinets/SelectLists | Get Select Lists & Get Filtered Select Lists || |
105105
| FileCabinets/Upload | Create Data Record || |
106-
| FileCabinets/Upload | Append File(s) to a Data Record | | - |
106+
| FileCabinets/Upload | Append File(s) to a Data Record | | - |
107107
| FileCabinets/Upload | Upload a Single File for a Data Record || - |
108108
| FileCabinets/Upload | Create a Data Record & Upload File || - |
109109
| FileCabinets/Upload | Create Data Record & Upload File Using Store Dialog || - |
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
<?php
2+
3+
namespace CodebarAg\DocuWare\Requests\FileCabinets\Upload;
4+
5+
use CodebarAg\DocuWare\DTO\Documents\Document;
6+
use CodebarAg\DocuWare\DTO\Documents\DocumentIndex\PrepareDTO;
7+
use CodebarAg\DocuWare\Responses\FileCabinets\Upload\CreateDataRecordResponse;
8+
use Illuminate\Support\Collection;
9+
use Saloon\Contracts\Body\HasBody;
10+
use Saloon\Data\MultipartValue;
11+
use Saloon\Enums\Method;
12+
use Saloon\Http\Request;
13+
use Saloon\Http\Response;
14+
use Saloon\Traits\Body\HasFormBody;
15+
use Saloon\Traits\Body\HasMultipartBody;
16+
17+
class AppendFilesToADataRecord extends Request implements HasBody
18+
{
19+
use HasMultipartBody;
20+
21+
protected Method $method = Method::POST;
22+
23+
public function __construct(
24+
protected readonly string $fileCabinetId,
25+
protected readonly string $dataRecordId,
26+
protected readonly Collection $files,
27+
) {}
28+
29+
public function resolveEndpoint(): string
30+
{
31+
return '/FileCabinets/'.$this->fileCabinetId.'/Documents/'.$this->dataRecordId;
32+
}
33+
34+
protected function defaultBody(): array
35+
{
36+
return $this->files->toArray();
37+
}
38+
39+
public function createDtoFromResponse(Response $response): Document
40+
{
41+
return CreateDataRecordResponse::fromResponse($response);
42+
}
43+
}
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
<?php
2+
3+
use CodebarAg\DocuWare\DTO\Documents\Document;
4+
use CodebarAg\DocuWare\Events\DocuWareResponseLog;
5+
use CodebarAg\DocuWare\Requests\FileCabinets\Upload\AppendFilesToADataRecord;
6+
use CodebarAg\DocuWare\Requests\FileCabinets\Upload\CreateDataRecord;
7+
use Illuminate\Support\Facades\Event;
8+
use Saloon\Data\MultipartValue;
9+
10+
it('can attach a file to a data record', function () {
11+
Event::fake();
12+
13+
$fileCabinetId = env('DOCUWARE_TESTS_FILE_CABINET_ID');
14+
15+
$document = $this->connector->send(new CreateDataRecord(
16+
fileCabinetId: $fileCabinetId,
17+
fileContent: file_get_contents(__DIR__.'/../../../../Fixtures/files/test-1.pdf'),
18+
fileName: 'test-1.pdf',
19+
indexes: null
20+
))->dto();
21+
22+
$response = $this->connector->send(
23+
new AppendFilesToADataRecord(
24+
fileCabinetId: $fileCabinetId,
25+
dataRecordId: $document->id,
26+
files: collect([
27+
new MultipartValue(
28+
name: 'File[]',
29+
value: file_get_contents(__DIR__.'/../../../../Fixtures/files/test-2.pdf'),
30+
filename: 'test-2.pdf',
31+
),
32+
])
33+
)
34+
)->dto();
35+
36+
expect($response)->toBeInstanceOf(Document::class)
37+
->and($response->sections->count())->toBe(2)
38+
->and($response->sections->first()->originalFileName)->toBe('test-1.pdf')
39+
->and($response->sections->last()->originalFileName)->toBe('test-2.pdf');
40+
41+
Event::assertDispatched(DocuWareResponseLog::class);
42+
});
43+
44+
it('can attach files to a data record', function () {
45+
Event::fake();
46+
47+
$fileCabinetId = env('DOCUWARE_TESTS_FILE_CABINET_ID');
48+
49+
$document = $this->connector->send(new CreateDataRecord(
50+
fileCabinetId: $fileCabinetId,
51+
fileContent: file_get_contents(__DIR__.'/../../../../Fixtures/files/test-1.pdf'),
52+
fileName: 'test-1.pdf',
53+
indexes: null
54+
))->dto();
55+
56+
$response = $this->connector->send(
57+
new AppendFilesToADataRecord(
58+
fileCabinetId: $fileCabinetId,
59+
dataRecordId: $document->id,
60+
files: collect([
61+
new MultipartValue(
62+
name: 'File[]',
63+
value: file_get_contents(__DIR__.'/../../../../Fixtures/files/test-2.pdf'),
64+
filename: 'test-2.pdf',
65+
),
66+
new MultipartValue(
67+
name: 'File[]',
68+
value: file_get_contents(__DIR__.'/../../../../Fixtures/files/test-3.pdf'),
69+
filename: 'test-3.pdf',
70+
),
71+
])
72+
)
73+
)->dto();
74+
75+
ray($response->sections);
76+
77+
expect($response)->toBeInstanceOf(Document::class)
78+
->and($response->sections->count())->toBe(3)
79+
->and($response->sections->first()->originalFileName)->toBe('test-1.pdf')
80+
->and($response->sections->originalFileName)->toBe('test-2.pdf')
81+
->and($response->sections->last()->originalFileName)->toBe('test-2.pdf');
82+
83+
Event::assertDispatched(DocuWareResponseLog::class);
84+
})->only();

tests/Fixtures/files/test-3.pdf

8.48 KB
Binary file not shown.

0 commit comments

Comments
 (0)