Passed
Push — master ( a7c50c...ab63ad )
by Nic
03:11
created

DiscountTest   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 96
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 33
c 1
b 0
f 0
dl 0
loc 96
rs 10
wmc 5

1 Method

Rating   Name   Duplication   Size   Complexity  
A setUp() 0 19 3
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\Extension\TestDiscountExtension;
9
use Dynamic\Foxy\Discounts\Tests\TestOnly\Extension\VariationDataExtension;
10
use Dynamic\Foxy\Discounts\Tests\TestOnly\Page\ProductPage;
11
use Dynamic\Foxy\Extension\Purchasable;
12
use Dynamic\Foxy\Model\Variation;
13
use SilverStripe\Core\Config\Config;
14
use SilverStripe\Dev\SapphireTest;
15
use SilverStripe\Versioned\Versioned;
16
17
/**
18
 * Class DiscountTest
19
 * @package Dynamic\Foxy\Discounts\Tests\Model
20
 */
21
class DiscountTest extends SapphireTest
22
{
23
    /**
24
     * @var string[]
25
     */
26
    protected static $fixture_file = [
27
        '../products.yml',
28
        '../discounts.yml',
29
    ];
30
31
    /**
32
     * @var string[]
33
     */
34
    protected static $extra_dataobjects = [
35
        ProductPage::class,
36
    ];
37
38
    /**
39
     * @var \string[][]
40
     */
41
    protected static $required_extensions = [
42
        ProductPage::class => [
43
            Purchasable::class,
44
            ProductDataExtension::class,
45
        ],
46
        Discount::class => [
47
            TestDiscountExtension::class,
48
        ],
49
        Variation::class => [
50
            VariationDataExtension::class,
51
        ],
52
53
    ];
54
55
    /**
56
     * @var string[]
57
     */
58
    protected static $illegal_extensions = [
59
        /*Discount::class => [
60
            'Dynamic\\FoxyRecipe\\Extension\\DiscountDataExtension',
61
        ],//*/
62
    ];
63
64
    /**
65
     *
66
     */
67
    protected function setUp()
68
    {
69
        if (class_exists('Dynamic\\Foxy\\API\\Client\\APIClient')) {
70
            Config::modify()->set('Dynamic\\Foxy\\API\\Client\\APIClient', 'enable_api', false);
71
        }
72
        if (class_exists('Dynamic\\Foxy\\SingleSignOn\\Client\\CustomerClient')) {
73
            Config::modify()->set('Dynamic\\Foxy\\SingleSignOn\\Client\\CustomerClient', 'foxy_sso_enabled', false);
74
        }
75
76
        parent::setUp();
77
78
        $product = $this->objFromFixture(ProductPage::class, 'productthree');
79
        $product->copyVersionToStage(Versioned::DRAFT, Versioned::LIVE);
80
        $discountOne = $this->objFromFixture(Discount::class, 'simplediscountpercentage');
81
        $discountOne->copyVersionToStage(Versioned::DRAFT, Versioned::LIVE);
82
        $discountTwo = $this->objFromFixture(Discount::class, 'tierdiscountpercentage');
83
        $discountTwo->copyVersionToStage(Versioned::DRAFT, Versioned::LIVE);
84
85
        Versioned::set_stage(Versioned::LIVE);
86
    }
87
88
    /**
89
     *
90
     */
91
    public function testGetTierByQuantity()
92
    {
93
        /** @var Discount $discountOne */
94
        $discountOne = $this->objFromFixture(Discount::class, 'simplediscountpercentage');
95
        /** @var Discount $discountTwo */
96
        $discountTwo = $this->objFromFixture(Discount::class, 'tierdiscountpercentage');
97
98
        $this->assertEquals(
99
            $this->idFromFixture(DiscountTier::class, 'singletier'),
100
            $discountOne->getTierByQuantity(1)->ID
101
        );
102
103
        $this->assertEquals(
104
            $this->idFromFixture(DiscountTier::class, 'multitierone'),
105
            $discountTwo->getTierByQuantity(1)->ID
106
        );
107
108
        $this->assertEquals(
109
            $this->idFromFixture(DiscountTier::class, 'multitiertwo'),
110
            $discountTwo->getTierByQuantity(6)->ID
111
        );
112
113
        $this->assertEquals(
114
            $this->idFromFixture(DiscountTier::class, 'multitierthree'),
115
            $discountTwo->getTierByQuantity(23)->ID
116
        );
117
    }
118
}
119