Completed
Pull Request — master (#49)
by Nic
09:03
created

DiscountTest   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 72
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 2
eloc 32
dl 0
loc 72
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A testGetTierByQuantity() 0 25 1
A setUp() 0 12 1
1
<?php
2
3
namespace Dynamic\Foxy\Discounts\Tests\Model;
4
5
use Dynamic\Foxy\Discounts\Extension\ProductDataExtension;
6
use Dynamic\Foxy\Discounts\Model\Discount;
7
use Dynamic\Foxy\Discounts\Model\DiscountTier;
8
use Dynamic\Foxy\Discounts\Tests\TestOnly\Page\ProductPage;
9
use Dynamic\Foxy\Extension\Purchasable;
10
use SilverStripe\Dev\SapphireTest;
11
use SilverStripe\Versioned\Versioned;
12
13
/**
14
 * Class DiscountTest
15
 * @package Dynamic\Foxy\Discounts\Tests\Model
16
 */
17
class DiscountTest extends SapphireTest
18
{
19
    /**
20
     * @var string[]
21
     */
22
    protected static $fixture_file = [
23
        '../products.yml',
24
        '../discounts.yml',
25
    ];
26
27
    /**
28
     * @var string[]
29
     */
30
    protected static $extra_dataobjects = [
31
        ProductPage::class,
32
    ];
33
34
    /**
35
     * @var \string[][]
36
     */
37
    protected static $required_extensions = [
38
        ProductPage::class => [
39
            Purchasable::class,
40
            ProductDataExtension::class,
41
        ],
42
    ];
43
44
    /**
45
     *
46
     */
47
    protected function setUp()
48
    {
49
        parent::setUp();
50
51
        $product = $this->objFromFixture(ProductPage::class, 'productthree');
52
        $product->copyVersionToStage(Versioned::DRAFT, Versioned::LIVE);
53
        $discountOne = $this->objFromFixture(Discount::class, 'simplediscountpercentage');
54
        $discountOne->copyVersionToStage(Versioned::DRAFT, Versioned::LIVE);
55
        $discountTwo = $this->objFromFixture(Discount::class, 'tierdiscountpercentage');
56
        $discountTwo->copyVersionToStage(Versioned::DRAFT, Versioned::LIVE);
57
58
        Versioned::set_stage(Versioned::LIVE);
59
    }
60
61
    /**
62
     *
63
     */
64
    public function testGetTierByQuantity()
65
    {
66
        /** @var Discount $discountOne */
67
        $discountOne = $this->objFromFixture(Discount::class, 'simplediscountpercentage');
68
        /** @var Discount $discountTwo */
69
        $discountTwo = $this->objFromFixture(Discount::class, 'tierdiscountpercentage');
70
71
        $this->assertEquals(
72
            $this->idFromFixture(DiscountTier::class, 'singletier'),
73
            $discountOne->getTierByQuantity(1)->ID
74
        );
75
76
        $this->assertEquals(
77
            $this->idFromFixture(DiscountTier::class, 'multitierone'),
78
            $discountTwo->getTierByQuantity(1)->ID
79
        );
80
81
        $this->assertEquals(
82
            $this->idFromFixture(DiscountTier::class, 'multitiertwo'),
83
            $discountTwo->getTierByQuantity(6)->ID
84
        );
85
86
        $this->assertEquals(
87
            $this->idFromFixture(DiscountTier::class, 'multitierthree'),
88
            $discountTwo->getTierByQuantity(23)->ID
89
        );
90
    }
91
}
92