Skip to content

Commit

Permalink
Merge pull request silverstripe#41 from satrun77/pull/fix-file-creation
Browse files Browse the repository at this point in the history
Fix creating file instance using fixture file extension
  • Loading branch information
dhensby committed Apr 29, 2022
2 parents 718b2a5 + c2297f9 commit fca8c87
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 2 deletions.
6 changes: 4 additions & 2 deletions code/PopulateFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
use InvalidArgumentException;
use SilverStripe\Assets\File;
use SilverStripe\Assets\Folder;
use SilverStripe\Assets\Image;
use SilverStripe\Assets\Storage\AssetStore;
use SilverStripe\Core\Injector\Injector;
use SilverStripe\Dev\FixtureBlueprint;
use SilverStripe\Dev\FixtureFactory;
use SilverStripe\ORM\DataList;
Expand Down Expand Up @@ -251,7 +251,9 @@ private function populateFile($data)
return true;
}
} else {
$file = Image::create();
// Create instance of file data object based on the extension of the fixture file
$fileClass = File::get_class_for_file_extension(File::get_file_extension($fixtureFilePath));
$file = Injector::inst()->create($fileClass);
}

$folder = Folder::find_or_make(dirname($filenameWithoutAssets));
Expand Down
1 change: 1 addition & 0 deletions tests/assets/file.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Hello
Binary file added tests/assets/image.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
27 changes: 27 additions & 0 deletions tests/php/PopulateFactoryTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@
use DNADesign\Populate\PopulateFactory;
use DNADesign\Populate\Tests\PopulateFactoryTest\PopulateFactoryTestObject;
use DNADesign\Populate\Tests\PopulateFactoryTest\PopulateFactoryTestVersionedObject;
use SilverStripe\Assets\File;
use SilverStripe\Assets\Image;
use SilverStripe\Core\Injector\Injector;
use SilverStripe\Dev\SapphireTest;
use SilverStripe\Dev\TestOnly;
use SilverStripe\Versioned\Versioned;
Expand Down Expand Up @@ -136,4 +139,28 @@ public function testMultipleMatchesRemoved()
$this->assertEquals(1, $list->count());
$this->assertEquals('Updated', $list->first()->Title);
}

/**
* Test to ensure creating standard file such as PDF and image with correct DataObject file.
*/
public function testCreatingFileOrImage()
{
// Collection of data to create file and image
$files = [
'file.txt' => File::class,
'image.png' => Image::class,
];

// Create a file/image, check if data stored in database with expected DataObject class and file exists
foreach ($files as $name => $class) {
$this->factory->createObject(File::class, $name, [
'Filename' => $name,
'PopulateFileFrom' => sprintf('tests/assets/%s', $name),
]);

$file = Injector::inst()->get($class)->get()->filter('Name', $name)->first();
$this->assertEquals($class, get_class($file));
$this->assertTrue($file->exists());
}
}
}

0 comments on commit fca8c87

Please sign in to comment.