diff --git a/packages/playground/blueprints/src/lib/steps/rmdir.spec.ts b/packages/playground/blueprints/src/lib/steps/rmdir.spec.ts new file mode 100644 index 0000000000..f707fa9c55 --- /dev/null +++ b/packages/playground/blueprints/src/lib/steps/rmdir.spec.ts @@ -0,0 +1,57 @@ +import { NodePHP } from '@php-wasm/node'; +import { RecommendedPHPVersion } from '@wp-playground/wordpress'; +import { rmdir } from './rmdir'; + +describe('Blueprint step rmdir()', () => { + let php: NodePHP; + beforeEach(async () => { + php = await NodePHP.load(RecommendedPHPVersion); + php.mkdir('/php'); + }); + + it('should remove a directory', async () => { + const directoryToRemove = '/php/dir'; + php.mkdir(directoryToRemove); + await rmdir(php, { + path: directoryToRemove, + }); + expect(php.fileExists(directoryToRemove)).toBe(false); + }); + + it('should remove a directory with a subdirectory', async () => { + const directoryToRemove = '/php/dir'; + php.mkdir('/php/dir/subDir'); + await rmdir(php, { + path: directoryToRemove, + }); + expect(php.fileExists(directoryToRemove)).toBe(false); + }); + + it('should remove a directory with a file', async () => { + const directoryToRemove = '/php/dir'; + php.mkdir(directoryToRemove); + php.writeFile(`/php/dir/file.php`, ` { + await expect( + rmdir(php, { + path: '/php/dir', + }) + ).rejects.toThrow(/There is no such file or directory/); + }); + + it('should fail when the directory is a file', async () => { + php.mkdir('/php/dir'); + php.writeFile(`/php/dir/index.php`, `