OrdersTest::testAssertConstAmountCurrency()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 0
dl 0
loc 4
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Moip\Tests\Resource;
4
5
use Moip\Resource\Orders;
6
use Moip\Tests\TestCase;
7
8
class OrdersTest extends TestCase
9
{
10
    /**
11
     * Send http request.
12
     *
13
     * @param \Moip\Resource\Orders $order
14
     * @param string                $body
15
     *
16
     * @return \Moip\Resource\Orders
17
     */
18
    private function executeOrder(Orders $order = null, $body = null)
19
    {
20
        if (empty($body)) {
21
            $body = $this->body_order;
22
        }
23
        if (empty($order)) {
24
            $order = $this->createOrder();
25
        }
26
        $this->mockHttpSession($body);
27
28
        return $order->create();
0 ignored issues
show
Bug Compatibility introduced by
The expression $order->create(); of type Moip\Resource\Orders|stdClass adds the type stdClass to the return on line 28 which is incompatible with the return type documented by Moip\Tests\Resource\OrdersTest::executeOrder of type Moip\Resource\Orders.
Loading history...
29
    }
30
31
    /**
32
     * @const string
33
     */
34
    public function testAssertConstPath()
35
    {
36
        $this->assertEquals('orders', Orders::PATH);
37
    }
38
39
    /**
40
     * Tests if the primary receiver constant has the correct value.
41
     *
42
     * @const string
43
     */
44
    public function testAssertConstReceiverTypePrimary()
45
    {
46
        $this->assertEquals('PRIMARY', Orders::RECEIVER_TYPE_PRIMARY);
47
    }
48
49
    /**
50
     * Tests if the secondary receiver constant has the correct value.
51
     *
52
     * @const string
53
     */
54
    public function testAssertConstReceiverTypeSecpndary()
55
    {
56
        $this->assertEquals('SECONDARY', Orders::RECEIVER_TYPE_SECONDARY);
57
    }
58
59
    /**
60
     * Tests the currency in the order creation response.
61
     *
62
     * @const string
63
     */
64
    public function testAssertConstAmountCurrency()
65
    {
66
        $this->assertEquals('BRL', Orders::AMOUNT_CURRENCY);
67
    }
68
69
    /**
70
     * MoipTest creating an order.
71
     */
72
    public function testCreateOrder()
73
    {
74
        $order_created = $this->executeOrder();
75
76
        $this->assertEquals($this->last_ord_id, $order_created->getOwnId());
77
        $this->assertEquals('CREATED', $order_created->getStatus());
78
        $this->assertEquals(new \DateTime('2016-02-19T12:24:55.849-02'), $order_created->getCreatedAt());
79
        $this->assertEquals(new \DateTime('2016-02-19T12:24:55.849-02'), $order_created->getUpdatedAt());
80
    }
81
82
    /**
83
     * Tests if created items price are correct.
84
     */
85
    public function testItems()
86
    {
87
        $order_created = $this->executeOrder();
88
        $itens = $order_created->getItemIterator()->getArrayCopy();
89
        $this->assertEquals(100000, $itens[0]->price);
90
        $this->assertEquals(990, $itens[1]->price);
91
    }
92
93
    /**
94
     * Test if created order shipping address is correct.
95
     */
96
    public function testShippingAddress()
97
    {
98
        $order_created = $this->executeOrder();
99
100
        $this->assertEquals('01234000', $order_created->getCustomer()->getShippingAddress()->{'zipCode'});
101
        $this->assertEquals('Avenida Faria Lima', $order_created->getCustomer()->getShippingAddress()->{'street'});
102
        $this->assertEquals('2927', $order_created->getCustomer()->getShippingAddress()->{'streetNumber'});
103
        $this->assertEquals('8', $order_created->getCustomer()->getShippingAddress()->{'complement'});
104
        $this->assertEquals('Sao Paulo', $order_created->getCustomer()->getShippingAddress()->{'city'});
105
        $this->assertEquals('Itaim', $order_created->getCustomer()->getShippingAddress()->{'district'});
106
        $this->assertEquals('SP', $order_created->getCustomer()->getShippingAddress()->{'state'});
107
        $this->assertEquals('BRA', $order_created->getCustomer()->getShippingAddress()->{'country'});
108
    }
109
110
    /**
111
     *MoipTest if the total is correct.
112
     */
113
    public function testTotal()
114
    {
115
        $order = $this->executeOrder();
116
117
        $total = $order->getSubtotalItems() + $order->getSubtotalShipping() + $order->getSubtotalAddition() - $order->getSubtotalDiscount();
118
        $this->assertEquals($total, $order->getAmountTotal());
119
    }
120
121
    /**
122
     * MoipTest if the total is equal to the expected total.
123
     */
124
    public function testTotalConstant()
125
    {
126
        $order = $this->executeOrder();
127
        $expected = (100000 + 2 * 990 + 1490) - 1000;
128
        $total_calculated = $order->getSubtotalItems() + $order->getSubtotalShipping() + $order->getSubtotalAddition() - $order->getSubtotalDiscount();
129
130
        $this->assertEquals($expected, $total_calculated);
131
        $this->assertEquals($expected, $order->getAmountTotal());
132
    }
133
134
    /**
135
     * MoipTest if order is created with installment preferences.
136
     */
137
    public function testCreateOrderWithInstallmentPreferences()
138
    {
139
        $quantity = [1, 6];
140
        $discount = 0;
141
        $additional = 100;
142
        $order = $this->createOrder()->addInstallmentCheckoutPreferences($quantity, $discount, $additional);
143
        $returned_order = $this->executeOrder($order);
144
        $this->assertNotEmpty($returned_order->getId());
145
        $this->assertEquals([1, 6], $returned_order->getCheckoutPreferences()->installments[0]->quantity);
146
    }
147
148
    public function testCreateOrderAddingReceiverNoAmount()
149
    {
150
        $order = $this->createOrder()->addReceiver('MPA-7ED9D2D0BC81', 'PRIMARY');
151
        $receivers = $order->getReceiverIterator();
152
        $this->assertEquals('MPA-7ED9D2D0BC81', $receivers[0]->moipAccount->id);
153
    }
154
155
    public function testCreateOrderAddingReceiverAmountFixed()
156
    {
157
        $order = $this->createOrder()->addReceiver('MPA-7ED9D2D0BC81', 'PRIMARY', 30000);
158
        $receivers = $order->getReceiverIterator();
159
        $this->assertEquals(30000, $receivers[0]->amount->fixed);
160
    }
161
162
    public function testCreateOrderAddingReceiverAmountPercentual()
163
    {
164
        $order = $this->createOrder()->addReceiver('MPA-7ED9D2D0BC81', 'PRIMARY', null, 40);
165
        $receivers = $order->getReceiverIterator();
166
        $this->assertEquals(40, $receivers[0]->amount->percentual);
167
    }
168
169
    public function testCreateOrderAddingReceiverFeePayor()
170
    {
171
        $order = $this->createOrder()->addReceiver('MPA-7ED9D2D0BC81', 'PRIMARY', null, 40, true);
172
        $receivers = $order->getReceiverIterator();
173
        $this->assertEquals(40, $receivers[0]->amount->percentual);
174
        $this->assertTrue($receivers[0]->feePayor);
175
        $order2 = $this->createOrder()->addReceiver('MPA-7ED9D2D0BC81', 'PRIMARY', 30000, null, true);
176
        $receivers2 = $order2->getReceiverIterator();
177
        $this->assertEquals(30000, $receivers2[0]->amount->fixed);
178
        $this->assertTrue($receivers2[0]->feePayor);
179
    }
180
}
181