Completed
Push — master ( 3229d6...c9eeb2 )
by Baldur
03:55
created

OrderTest::testCacheKeySameForSameData()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 5
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 3
nc 1
nop 0
1
<?php
2
3
namespace LAShowroom\TaxJarBundle\Tests\Model;
4
5
use LAShowroom\TaxJarBundle\Model\Address;
6
use LAShowroom\TaxJarBundle\Model\LineItem;
7
use LAShowroom\TaxJarBundle\Model\Order;
8
use LAShowroom\TaxJarBundle\Model\TaxCategory;
9
10
class OrderTest extends \PHPUnit_Framework_TestCase
11
{
12
    public function testJsonSerialize()
13
    {
14
        $order = self::getTestOrder();
15
16
        $this->assertEquals([
17
            'from_country' => 'US',
18
            'from_zip' => '92093',
19
            'from_state' => 'CA',
20
            'from_city' => 'La Jolla',
21
            'from_street' => '9500 Gilman Drive',
22
            'to_country' => 'US',
23
            'to_zip' => '90002',
24
            'to_state' => 'CA',
25
            'to_city' => 'Los Angeles',
26
            'to_street' => '1335 E 103rd St',
27
            'amount' => 15,
28
            'shipping' => 1.5,
29
            'line_items' => [
30
                0 => [
31
                    'id' => '1',
32
                    'quantity' => 1,
33
                    'product_tax_code' => '20010',
34
                    'unit_price' => 15,
35
                    'discount' => 0,
36
                ]
37
            ],
38
            'nexus_addresses' => [
39
                [
40
                    'id' => 'Main Location',
41
                    'country' => 'US',
42
                    'zip' => '92093',
43
                    'state' => 'CA',
44
                    'city' => 'La Jolla',
45
                    'street' => '9500 Gilman Drive',
46
                ]
47
            ],
48
        ], $order->toArray());
49
    }
50
51
    public function testSetNexusAddresses()
52
    {
53
        $order = new Order();
54
55
        $order->setNexusAddresses([
56
            'Main Location' => new Address('9500 Gilman Drive', 'La Jolla', 'CA', '92093', 'US'),
57
            'doge' => new Address('1335 E 103rd St', 'Los Angeles', 'CA', '90002', 'US'),
58
        ]);
59
60
        $this->assertCount(2, $order->getNexusAddresses());
61
        $this->assertArrayHasKey('Main Location', $order->getNexusAddresses());
62
        $this->assertArrayHasKey('doge', $order->getNexusAddresses());
63
    }
64
65
    public function testSetAddresses()
66
    {
67
        $order = new Order();
68
        $order->setFromAddress($address1 = new Address('9500 Gilman Drive', 'La Jolla', 'CA', '92093', 'US'));
69
        $order->setToAddress($address2 = new Address('1335 E 103rd St', 'Los Angeles', 'CA', '90002', 'US'));
70
71
        $this->assertEquals($address1, $order->getFromAddress());
72
        $this->assertEquals($address2, $order->getToAddress());
73
    }
74
75
    public function testSetLineItems()
76
    {
77
        $order = new Order();
78
        $order->setLineItems([
79
            $firstLineItem = new LineItem('1', 1, TaxCategory::CLOTHING, 15.00, 0.0),
80
            $secondLineItem = new LineItem('2', 1, TaxCategory::CLOTHING, 16.00, 0.0)
81
        ]);
82
83
        $this->assertCount(2, $order->getLineItems());
84
        $this->assertEquals([$firstLineItem, $secondLineItem], $order->getLineItems());
85
    }
86
87
    public function testCacheKeySameForSameData()
88
    {
89
        $this->assertEquals('order_a59eaf5d49157e79fdd84eef9378e8a8', self::getTestOrder()->getCacheKey());
90
        $this->assertEquals('order_a59eaf5d49157e79fdd84eef9378e8a8', self::getTestOrder()->getCacheKey());
91
    }
92
93
    public function testCacheKeyChangesAsDataChanged()
94
    {
95
        $order = self::getTestOrder();
96
        $this->assertEquals('order_a59eaf5d49157e79fdd84eef9378e8a8', $order->getCacheKey());
97
98
        $order->setAmount(20.00);
99
100
        $this->assertEquals('order_3f3c50a2fce07b6e52838ea34e6a4632', $order->getCacheKey());
101
    }
102
103
    /**
104
     * @return Order
105
     */
106
    public static function getTestOrder()
107
    {
108
        $order = new Order();
109
        $order->setFromAddress(new Address('9500 Gilman Drive', 'La Jolla', 'CA', '92093', 'US'));
110
        $order->setToAddress(new Address('1335 E 103rd St', 'Los Angeles', 'CA', '90002', 'US'));
111
        $order->addLineItem(new LineItem('1', 1, TaxCategory::CLOTHING, 15.00, 0.0));
112
        $order->setAmount(15.0);
113
        $order->setShipping(1.5);
114
        $order->addNexusAddress('Main Location', new Address('9500 Gilman Drive', 'La Jolla', 'CA', '92093', 'US'));
115
116
        return $order;
117
    }
118
}
119