create()->refresh(); expect(array_keys($node->toArray())) ->toBe([ 'id', 'vault_id', 'parent_id', 'is_file', 'name', 'extension', 'content', 'created_at', 'updated_at', ]); }); it('belongs to a vault', function (): void { $node = VaultNode::factory()->create(); expect($node->vault)->toBeInstanceOf(Vault::class); }); it('may have childs', function (): void { $node = VaultNode::factory()->hasChilds(3)->create(); expect($node->childs)->toHaveCount(3) ->each->toBeInstanceOf(VaultNode::class); }); it('may have links', function (): void { $user = User::factory()->create()->first(); $vault = new CreateVault()->handle($user, [ 'name' => fake()->words(3, true), ]); $folderName = fake()->words(3, true); $firstNodeName = fake()->words(3, true); $secondNodeName = fake()->words(3, true); $folderNode = new CreateVaultNode()->handle($vault, [ 'name' => $folderName, 'is_file' => false, ]); $firstNode = new CreateVaultNode()->handle($vault, [ 'is_file' => true, 'name' => $firstNodeName, 'extension' => 'md', 'content' => '[link](/' . $folderName . '/' . $secondNodeName . '.md)' . ' [link](' . $folderName . '/' . $secondNodeName . '.md)', ]); $secondNode = new CreateVaultNode()->handle($vault, [ 'is_file' => true, 'parent_id' => $folderNode->id, 'name' => $secondNodeName, 'extension' => 'md', 'content' => fake()->paragraph(), ]); // Parse links in content new ProcessVaultNodeLinks()->handle($firstNode); expect($firstNode->links()->get())->toHaveCount(2) ->each->toBeInstanceOf(VaultNode::class); expect($firstNode->backlinks()->get())->toHaveCount(0) ->each->toBeInstanceOf(VaultNode::class); expect($secondNode->backlinks()->get())->toHaveCount(2) ->each->toBeInstanceOf(VaultNode::class); expect($secondNode->links()->get())->toHaveCount(0) ->each->toBeInstanceOf(VaultNode::class); });