Sonata\Tests\Component\Basket\BasketTest::testSerialize PHP Method

testSerialize() public method

public testSerialize ( )
    public function testSerialize()
    {
        $product = $this->getMockProduct();
        $basketElement = new BasketElement();
        $basketElement->setProduct('product_code', $product);
        $provider = $this->getMock('Sonata\\Component\\Product\\ProductProviderInterface');
        $manager = $this->getMock('Sonata\\Component\\Product\\ProductManagerInterface');
        $manager->expects($this->any())->method('getClass')->will($this->returnValue('BasketTest_Product'));
        $definition = new ProductDefinition($provider, $manager);
        $pool = new Pool();
        $pool->addProduct('product_code', $definition);
        $basket = new Basket();
        $basket->setProductPool($pool);
        $basket->addBasketElement($basketElement);
        $basket->setDeliveryAddress($this->getMockAddress());
        $basket->setBillingAddress($this->getMockAddress());
        $basket->setCustomer($this->getMock('Sonata\\Component\\Customer\\CustomerInterface'));
        $data = $basket->serialize();
        $this->assertTrue(is_string($data));
        $this->assertStringStartsWith('a:11:', $data, 'the serialized array has 11 elements');
        // Ensuring all needed keys are present
        $expectedKeys = array('basketElements', 'positions', 'deliveryMethodCode', 'paymentMethodCode', 'cptElement', 'options', 'locale', 'currency', 'deliveryAddress', 'billingAddress', 'customer');
        $basketData = unserialize($data);
        foreach ($expectedKeys as $key) {
            $this->assertArrayHasKey($key, $basketData);
        }
        $basket->setDeliveryAddressId(1);
        $basket->setBillingAddressId(2);
        $basket->setCustomerId(3);
        $data = $basket->serialize();
        $this->assertTrue(is_string($data));
        $this->assertStringStartsWith('a:11:', $data, 'the serialized array has 11 elements');
        // Ensuring all needed keys are present
        $expectedKeys = array('basketElements', 'positions', 'deliveryMethodCode', 'paymentMethodCode', 'cptElement', 'options', 'locale', 'currency', 'deliveryAddressId', 'billingAddressId', 'customerId');
        $basketData = unserialize($data);
        foreach ($expectedKeys as $key) {
            $this->assertArrayHasKey($key, $basketData);
        }
        $basket->reset();
        $this->assertTrue(count($basket->getBasketElements()) == 0, '::reset() remove all elements');
        $basket->unserialize($data);
        $this->assertTrue(count($basket->getBasketElements()) == 1, '::unserialize() restore elements');
    }