Skip to content

Commit a4c3b27

Browse files
committed
test: add business logic tests for envelope folder management
Add unit tests focused on validating business rules: - Envelope folder name must include user-defined name and UUID - getFolderForFile() must use existing envelope folder when envelopeFolderId is provided - getFolderForFile() must create new folder when no envelope context exists Tests focus on behavior validation rather than implementation details, using minimal mocking. Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
1 parent a44991f commit a4c3b27

2 files changed

Lines changed: 83 additions & 0 deletions

File tree

tests/php/Unit/Service/EnvelopeServiceTest.php

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,4 +163,27 @@ public function testReturnsEnvelopeWhenFileHasParent(): void {
163163
$this->assertNotNull($result);
164164
$this->assertSame(5, $result->getId());
165165
}
166+
167+
public function testEnvelopeUuidMatchesFolderName(): void {
168+
$this->fileMapper->method('insert')->willReturnArgument(0);
169+
170+
$mockFolder = $this->createMock(Folder::class);
171+
$mockEnvelopeFolder = $this->createMock(Folder::class);
172+
$mockEnvelopeFolder->method('getId')->willReturn(999);
173+
174+
$capturedFolderName = '';
175+
$mockFolder->method('newFolder')->willReturnCallback(
176+
function ($folderName) use ($mockEnvelopeFolder, &$capturedFolderName) {
177+
$capturedFolderName = $folderName;
178+
return $mockEnvelopeFolder;
179+
}
180+
);
181+
182+
$this->folderService->method('getFolder')->willReturn($mockFolder);
183+
184+
$envelope = $this->service->createEnvelope('Contract', 'user1');
185+
186+
$this->assertStringStartsWith('Contract_', $capturedFolderName);
187+
$this->assertStringContainsString($envelope->getUuid(), $capturedFolderName);
188+
}
166189
}

tests/php/Unit/Service/FolderServiceTest.php

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -274,4 +274,64 @@ public static function providerGetFolderName(): array {
274274
],
275275
];
276276
}
277+
278+
public function testGetFolderForFileUsesEnvelopeFolderWhenProvided(): void {
279+
$envelopeFolderId = 456;
280+
$data = [
281+
'settings' => [
282+
'envelopeFolderId' => $envelopeFolderId,
283+
],
284+
];
285+
286+
$mockUserFolder = $this->createMock(Folder::class);
287+
$mockEnvelopeFolder = $this->createMock(Folder::class);
288+
289+
$mockUserFolder->expects($this->once())
290+
->method('getFirstNodeById')
291+
->with($envelopeFolderId)
292+
->willReturn($mockEnvelopeFolder);
293+
294+
$this->appConfig->method('getUserValue')->willReturn('/LibreSign');
295+
$this->groupManager->method('isInGroup')->willReturn(false);
296+
297+
$userFolder = $this->createMock(Folder::class);
298+
$userFolder->method('isUpdateable')->willReturn(true);
299+
$userFolder->method('get')->willReturn($mockUserFolder);
300+
$this->root->method('getUserFolder')->willReturn($userFolder);
301+
302+
$service = $this->getInstance('testuser');
303+
$result = $service->getFolderForFile($data, 'testuser');
304+
305+
$this->assertInstanceOf(Folder::class, $result);
306+
}
307+
308+
public function testGetFolderForFileCreatesNewFolderWhenNoEnvelopeId(): void {
309+
$data = [
310+
'name' => 'Document',
311+
'settings' => [],
312+
];
313+
314+
$user = $this->createMock(IUser::class);
315+
$user->method('getUID')->willReturn('user1');
316+
317+
$mockUserFolder = $this->createMock(Folder::class);
318+
$mockNewFolder = $this->createMock(Folder::class);
319+
320+
$mockUserFolder->expects($this->once())
321+
->method('newFolder')
322+
->willReturn($mockNewFolder);
323+
324+
$this->appConfig->method('getUserValue')->willReturn('/LibreSign');
325+
$this->groupManager->method('isInGroup')->willReturn(false);
326+
327+
$userFolder = $this->createMock(Folder::class);
328+
$userFolder->method('isUpdateable')->willReturn(true);
329+
$userFolder->method('get')->willReturn($mockUserFolder);
330+
$this->root->method('getUserFolder')->willReturn($userFolder);
331+
332+
$service = $this->getInstance('user1');
333+
$result = $service->getFolderForFile($data, $user);
334+
335+
$this->assertInstanceOf(Folder::class, $result);
336+
}
277337
}

0 commit comments

Comments
 (0)