public function testGetNextBillingPeriod() { $generator = $this->createDefaultGenerator($this->createBillingManager()); // Prepare some scenarios which we want to test $scenarios = array(array('cycles' => 1, 'interval' => 'month', 'initialBilling' => '2013-01-31', 'periodStart' => '2013-01-31', 'periodEnd' => '2013-02-28')); foreach ($scenarios as $scenario) { $billingAgreement = new BillingAgreement(); $billingAgreement->setBillingCycles($scenario['cycles']); $billingAgreement->getBillingInterval($scenario['interval']); $billingAgreement->setInitialBillingDate(new \DateTime($scenario['initialBilling'])); $billingPeriod = $generator->getNextBillingPeriod($billingAgreement); list($periodStart, $periodEnd) = $billingPeriod; $this->assertEquals($scenario['periodStart'], $periodStart->format('Y-m-d')); $this->assertEquals($scenario['periodEnd'], $periodEnd->format('Y-m-d')); } }