MemberExtensionTest::testPastOrders()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 3
nc 1
nop 0
dl 0
loc 5
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace SilverShop\Tests\Extension;
4
5
use SilverShop\Cart\ShoppingCart;
6
use SilverShop\Extension\MemberExtension;
7
use SilverShop\Model\Order;
8
use SilverStripe\Core\Config\Config;
9
use SilverStripe\Dev\SapphireTest;
10
use SilverStripe\Security\Member;
11
use SilverStripe\Security\Security;
12
13
/**
14
 * Test member functionality added via ShopMember extension
15
 */
16
class MemberExtensionTest extends SapphireTest
17
{
18
    public static $fixture_file = [
19
        __DIR__ . '/../Fixtures/ShopMembers.yml',
20
        __DIR__ . '/../Fixtures/shop.yml',
21
    ];
22
23
    public function testGetByIdentifier()
24
    {
25
        Config::modify()->set(Member::class, 'unique_identifier_field', 'Email');
26
        $member = MemberExtension::get_by_identifier('[email protected]');
27
        $this->assertNotNull($member);
28
        $this->assertEquals('[email protected]', $member->Email);
29
        $this->assertEquals('Jeremy', $member->FirstName);
30
    }
31
32
    /**
33
     * @doesNotPerformAssertions
34
     */
35
    public function testCMSFields()
36
    {
37
        singleton(Member::class)->getCMSFields();
38
        singleton(Member::class)->getMemberFormFields();
39
    }
40
41
    public function testPastOrders()
42
    {
43
        $member = $this->objFromFixture(Member::class, "joebloggs");
44
        $pastorders = $member->getPastOrders();
45
        $this->assertEquals(1, $pastorders->count());
46
    }
47
48
    public function testLoginJoinsCart()
49
    {
50
        Config::modify()->set(Member::class, 'login_joins_cart', true);
51
        $order = $this->objFromFixture(Order::class, "cart");
52
        ShoppingCart::singleton()->setCurrent($order);
53
        $member = $this->objFromFixture(Member::class, "jeremyperemy");
54
        $this->logInAs($member);
55
        $this->assertEquals($member->ID, $order->MemberID);
56
        $this->logOut();
57
58
        $this->assertNull(ShoppingCart::curr());
59
    }
60
61
    public function testLoginDoesntJoinCart()
62
    {
63
        Config::modify()->set(Member::class, 'login_joins_cart', false);
64
        $order = $this->objFromFixture(Order::class, "cart");
65
        ShoppingCart::singleton()->setCurrent($order);
66
        $member = $this->objFromFixture(Member::class, "jeremyperemy");
67
        $this->logInAs($member);
68
        $this->assertEquals(0, $order->MemberID);
69
70
        $member->logOut();
71
72
        $this->assertTrue((bool)ShoppingCart::curr());
73
    }
74
}
75