Added a file move method

This commit is contained in:
David Wakelin 2022-02-08 18:13:17 +00:00
parent bdd06aa0b7
commit 6b438e0b9a
3 changed files with 49 additions and 0 deletions

View file

@ -224,6 +224,19 @@ class File
return new self($this->space, $newFilename);
}
/**
* @param string $newFilename
*
* @return \SpacesAPI\File
*/
public function move(string $newFilename): File
{
$newFile = $this->copy($newFilename, $this->isPublic());
$this->delete();
return $newFile;
}
/**
* Get the public URL
* This URL will not work if the file is private

View file

@ -30,6 +30,7 @@ Rather obtain an instance from `\SpacesAPI\Space::list()`, `\SpacesAPI\Spaces::f
|[isPublic](#fileispublic)|Is this file publicly accessible|
|[makePrivate](#filemakeprivate)|Make file non-publicly accessible|
|[makePublic](#filemakepublic)|Make file publicly accessible|
|[move](#filemove)|Move and/or rename file|
@ -288,4 +289,28 @@ Make file publicly accessible
`void`
<hr />
### File::move
**Description**
```php
public move (string $newFilename)
```
Move or rename a file
The `File` instance on which you call `move` will become invalid and calling methods on it will result in a `FileDoesntExistException`
**Parameters**
* `(string) $newFilename`
**Return Values**
`\SpacesAPI\File` : An instance for the new file
<hr />

View file

@ -62,6 +62,17 @@ class FileTest extends TestCase
self::$space->file('lorem-ipsum-2.txt');
}
public function testCanMoveRenameFile()
{
$file = self::$file->copy('test.txt');
$file->move('renamed-file.txt');
$this->assertEquals("Lorem ipsum", self::$space->file('renamed-file.txt')->getContents());
$this->expectException(FileDoesntExistException::class);
self::$space->file('test.txt');
}
public function testCanGetURL()
{
$this->assertStringContainsString('lorem-ipsum.txt', self::$file->getURL());