Source of file VariationTest.php
Size: 4,716 Bytes - Last Modified: 2021-12-24T06:46:07+00:00
/var/www/docs.ssmods.com/process/src/tests/Model/VariationTest.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 | <?php namespace Dynamic\Foxy\Test\Model; use Dynamic\Foxy\Extension\Purchasable; use Dynamic\Foxy\Model\OptionType; use Dynamic\Foxy\Model\Variation; use Dynamic\Foxy\Test\TestOnly\TestProduct; use Dynamic\Foxy\Test\TestOnly\TestVariationDataExtension; use SilverStripe\Core\Injector\Injector; use SilverStripe\Dev\SapphireTest; use SilverStripe\Forms\FieldList; use SilverStripe\Security\Member; use SilverStripe\Versioned\Versioned; /** * Class ProductOptionTest * @package Dynamic\Foxy\Test\Model */ class VariationTest extends SapphireTest { /** * @var string */ protected static $fixture_file = '../fixtures.yml'; /** * @var array */ public static $extra_dataobjects = [ TestProduct::class, ]; /** * @var \string[][] */ protected static $required_extensions = [ TestProduct::class => [ Purchasable::class, ], Variation::class => [ TestVariationDataExtension::class, ], ]; /** * */ public function testGetCMSFields() { $object = singleton(Variation::class); $fields = $object->getCMSFields(); $this->assertInstanceOf(FieldList::class, $fields); } /** * */ public function testCanCreate() { /** @var ProductOption $object */ $object = singleton(Variation::class); /** @var \SilverStripe\Security\Member $admin */ $admin = $this->objFromFixture(Member::class, 'admin'); /** @var \SilverStripe\Security\Member $siteOwner */ $siteOwner = $this->objFromFixture(Member::class, 'site-owner'); /** @var \SilverStripe\Security\Member $default */ $default = $this->objFromFixture(Member::class, 'default'); $this->assertFalse($object->canCreate($default)); $this->assertTrue($object->canCreate($admin)); $this->assertTrue($object->canCreate($siteOwner)); } /** * */ public function testCanEdit() { /** @var ProductOption $object */ $object = singleton(Variation::class); /** @var \SilverStripe\Security\Member $admin */ $admin = $this->objFromFixture(Member::class, 'admin'); /** @var \SilverStripe\Security\Member $siteOwner */ $siteOwner = $this->objFromFixture(Member::class, 'site-owner'); /** @var \SilverStripe\Security\Member $default */ $default = $this->objFromFixture(Member::class, 'default'); $this->assertFalse($object->canEdit($default)); $this->assertTrue($object->canEdit($admin)); $this->assertTrue($object->canEdit($siteOwner)); } /** * */ public function testCanDelete() { /** @var ProductOption $object */ $object = singleton(Variation::class); /** @var \SilverStripe\Security\Member $admin */ $admin = $this->objFromFixture(Member::class, 'admin'); /** @var \SilverStripe\Security\Member $siteOwner */ $siteOwner = $this->objFromFixture(Member::class, 'site-owner'); /** @var \SilverStripe\Security\Member $default */ $default = $this->objFromFixture(Member::class, 'default'); $this->assertFalse($object->canDelete($default)); $this->assertTrue($object->canDelete($admin)); $this->assertTrue($object->canDelete($siteOwner)); } /** * @throws \SilverStripe\ORM\ValidationException */ public function testGenerateKey() { $this->markTestSkipped(); /*$product = $this->findOrMakeProduct(); $option = ProductOption::create(); //$option->write(); $option->Title = $title = 'My Title'; $price = 150; $action = 'Set'; $product->Options()->add( $option, [ 'Available' => true, 'PriceModifier' => $price, 'PriceModifierAction' => $action, ] ); $actionSymbol = ProductOption::getOptionModifierActionSymbol($action); $expected = "{$title}{p{$actionSymbol}{$price}|w+0|c+0}"; $option = $product->Options()->filter('ProductOptionID', $option->ID)->first(); $this->assertEquals( $expected, $option->OptionModifierKey );//*/ } /** * @return TestProduct|\SilverStripe\ORM\DataObject */ protected function findOrMakeProduct() { if (!$product = TestProduct::get()->first()) { $product = TestProduct::create(); $product->Title = 'My Product'; $product->writeToStage(Versioned::DRAFT); $product->publishSingle(); } return $product; } } |