public function testPlaceOrder() { //place items in cart $this->shoppingcart->add($this->mp3player, 2); $this->shoppingcart->add($this->socks); $order = $this->shoppingcart->current(); $factory = new ShopMemberFactory(); $member = $factory->create(array('FirstName' => 'James', 'Surname' => 'Brown', 'Email' => '*****@*****.**', 'Password' => 'jbrown')); $this->assertTrue((bool) $member); $member->write(); $order->calculate(); //submit checkout page $this->assertTrue($this->placeOrder('James', 'Brown', '*****@*****.**', '23 Small Street', 'North Beach', 'Springfield', 'Waikato', '1234567', 'NZ', 'jbrown', 'jbrown', $member), "Order placed sucessfully"); $order = Order::get()->byID($order->ID); //update order variable to db-stored version $this->assertFalse($this->shoppingcart->current(), "Shopping cart is empty"); $this->assertNotNull($order); $this->assertEquals(408, $order->GrandTotal(), 'grand total'); $this->assertEquals(408, $order->TotalOutstanding(), 'total outstanding'); $this->assertEquals(0, $order->TotalPaid(), 'total outstanding'); $this->assertEquals($order->Status, 'Unpaid', 'status is "unpaid"'); $this->assertEquals(false, $order->IsSent()); $this->assertEquals(false, $order->IsProcessing()); $this->assertEquals(false, $order->IsPaid()); $this->assertEquals(false, $order->IsCart()); $this->assertEquals('James', $order->FirstName, 'order first name'); $this->assertEquals('Brown', $order->Surname, 'order surname'); $this->assertEquals('*****@*****.**', $order->Email, 'order email'); $shippingaddress = $order->ShippingAddress(); $this->assertEquals('23 Small Street', $shippingaddress->Address, 'order address'); $this->assertEquals('North Beach', $shippingaddress->AddressLine2, 'order address2'); $this->assertEquals('Springfield', $shippingaddress->City, 'order city'); $this->assertEquals('1234567', $shippingaddress->PostalCode, 'order postcode'); $this->assertEquals('NZ', $shippingaddress->Country, 'order country'); $billingaddress = $order->BillingAddress(); $this->assertEquals('23 Small Street', $billingaddress->Address, 'order address'); $this->assertEquals('North Beach', $billingaddress->AddressLine2, 'order address2'); $this->assertEquals('Springfield', $billingaddress->City, 'order city'); $this->assertEquals('1234567', $billingaddress->PostalCode, 'order postcode'); $this->assertEquals('NZ', $billingaddress->Country, 'order country'); $this->assertTrue($order->Member()->exists(), 'member exists now'); $this->assertEquals('James', $order->Member()->FirstName, 'member first name matches'); $this->assertEquals('Brown', $order->Member()->Surname, 'surname matches'); $this->assertEquals('*****@*****.**', $order->Member()->Email, 'email matches'); //not finished...need to find out how to encrypt the same //$this->assertEquals($order->Member()->Password, Security::encrypt_password('jbrown'),'password matches'); }
/** * @deprecated 1.0 use ShopMemberFactory */ public function createMembership($data) { $factory = new ShopMemberFactory(); return $factory->create($data); }
/** * @throws ValidationException */ public function setData(Order $order, array $data) { if (Member::currentUserID()) { return; } if (!Checkout::membership_required() && empty($data['Password'])) { return; } $factory = new ShopMemberFactory(); $member = $factory->create($data); $member->write(); $member->extend('onAfterMemberCreate'); $member->logIn(); if ($order->BillingAddressID) { $address = $order->getBillingAddress(); $address->MemberID = $member->ID; $address->write(); $member->DefaultBillingAddressID = $order->BillingAddressID; } if ($order->ShippingAddressID) { $address = $order->getShippingAddress(); $address->MemberID = $member->ID; $address->write(); $member->DefaultShippingAddressID = $order->ShippingAddressID; } if ($member->isChanged()) { $member->write(); } }