/**
  * @test
  */
 public function setSubscriptionCodeShouldConfigureTheSubscriptionCode()
 {
     $charge = new Charge();
     $charge->setSubscriptionCode('SomeSubscription');
     $this->assertAttributeEquals('SomeSubscription', 'subscriptionCode', $charge);
     $this->assertEquals('SomeSubscription', $charge->getSubscriptionCode());
 }
 /**
  * @param Charge $charge
  * @return SimpleXMLElement
  */
 public function serialize(Charge $charge)
 {
     $request = simplexml_load_string('<?xml version="1.0" encoding="UTF-8"?><payment />');
     $request->addChild('preApprovalCode', $charge->getSubscriptionCode());
     $items = $request->addChild('items');
     foreach ($charge->getItems() as $item) {
         $this->appendItem($items, $item);
     }
     if ($reference = $charge->getReference()) {
         $request->addChild('reference', $reference);
     }
     return $request;
 }
 public function testSerializeShouldXMLFull()
 {
     $items = new Items();
     $items->add(new Item(99, 'Produto 03', 1.77, 8, 12.9, 360));
     $items->add(new Item(97, 'Produto 04', 43.67, 3, 134.98, 1100));
     $charge = new Charge($items);
     $charge->setSubscriptionCode(4556788);
     $charge->setReference('abcdef');
     $serializer = new ChargeSerializer();
     $xml = $serializer->serialize($charge);
     $this->assertInstanceOf(SimpleXMLElement::class, $xml);
     $expected = simplexml_load_file(__DIR__ . '/xml/chargeFull.xml');
     $this->assertEquals($expected, $xml);
 }
 /**
  * {@inheritdoc}
  */
 public function setReference($reference)
 {
     $this->charge->setReference($reference);
     return $this;
 }