magento-plugin/tests/Bitpay/Core/Helper/DataTest.php

242 lines
7.2 KiB
PHP

<?php
/**
* @license Copyright 2011-2014 BitPay Inc., MIT License
* @see https://github.com/bitpay/magento-plugin/blob/master/LICENSE
*/
class Bitpay_Core_Helper_DataTest extends PHPUnit_Framework_TestCase
{
protected static $faker;
public static function setUpBeforeClass()
{
self::$faker = Faker\Factory::create();
}
public function testGetLogFile()
{
$this->assertSame(
'payment_bitpay.log',
Mage::helper('bitpay')->getLogFile()
);
}
public function testDebugData()
{
Mage::helper('bitpay')->debugData('Testing');
}
public function testIsDebugMode()
{
Mage::app()->getStore()->setConfig('payment/bitpay/debug', null);
$this->assertFalse(Mage::helper('bitpay')->isDebug());
Mage::app()->getStore()->setConfig('payment/bitpay/debug', false);
$this->assertFalse(Mage::helper('bitpay')->isDebug());
Mage::app()->getStore()->setConfig('payment/bitpay/debug', true);
$this->assertTrue(Mage::helper('bitpay')->isDebug());
}
public function testHasTransactionSpeedFalse()
{
Mage::app()->getStore()->setConfig('payment/bitpay/speed', null);
$this->assertFalse(Mage::helper('bitpay')->hasTransactionSpeed());
}
public function testHasTransactionSpeedTrue()
{
Mage::app()->getStore()->setConfig('payment/bitpay/speed', 'low');
$this->assertTrue(Mage::helper('bitpay')->hasTransactionSpeed());
}
/**
* Location where BitPay IPNs will go
*/
public function testGetNotificationUrl()
{
$this->assertSame(
'http://www.localhost.com/bitpay/ipn/',
Mage::helper('bitpay')->getNotificationUrl()
);
}
public function testGetRedirectUrl()
{
$this->assertSame(
'http://www.localhost.com/checkout/onepage/success/',
Mage::helper('bitpay')->getRedirectUrl()
);
}
public function testRegisterAutoloader()
{
Mage::helper('bitpay')->registerAutoloader();
}
public function testGenerateAndSaveKeys()
{
Mage::helper('bitpay')->generateAndSaveKeys();
}
public function testGetSinKey()
{
Mage::helper('bitpay')->getSinKey();
}
private function createInvalidIpn()
{
$ipn = new Bitpay_Core_Model_Ipn();
$ipn->setData(
array(
'quote_id' => '',
'order_id' => '',
'invoice_id' => '',
'url' => '',
'pos_data' => '',
'status' => '',
'btc_price' => '',
'price' => '',
'currency' => '',
'invoice_time' => '',
'expiration_time' => '',
'current_time' => '',
)
);
$ipn->save();
$ipn->load($ipn->getId());
return $ipn;
}
private function createExpiredIpn()
{
$order = $this->createOrder();
$ipn = new Bitpay_Core_Model_Ipn();
$ipn->setData(
array(
'quote_id' => '',
'order_id' => $order->getIncrementId(),
'invoice_id' => '',
'url' => '',
'pos_data' => '',
'status' => '',
'btc_price' => '',
'price' => '',
'currency' => '',
'invoice_time' => '',
'expiration_time' => '',
'current_time' => '',
)
);
$ipn->save();
$ipn->load($ipn->getId());
return $ipn;
}
private function createOrder()
{
$product = $this->createProduct();
$quote = $this->createQuote();
$quote->addProduct(
$product,
new Varien_Object(
array(
'qty' => 1,
)
)
);
$address = array(
'firstname' => self::$faker->firstName,
'lastname' => self::$faker->lastName,
'company' => self::$faker->company,
'email' => self::$faker->email,
'city' => self::$faker->city,
'region_id' => '',
'region' => 'State/Province',
'postcode' => self::$faker->postcode,
'telephone' => self::$faker->phoneNumber,
'country_id' => self::$faker->state,
'customer_password' => '',
'confirm_password' => '',
'save_in_address_book' => 0,
'use_for_shipping' => 1,
'street' => array(
self::$faker->streetAddress,
),
);
$quote->getBillingAddress()
->addData($address);
$quote->getShippingAddress()
->addData($address)
->setShippingMethod('flatrate_flatrate')
->setPaymentMethod('checkmo')
->setCollectShippingRates(true)
->collectTotals();
$quote
->setCheckoutMethod('guest')
->setCustomerId(null)
->setCustomerEmail($address['email'])
->setCustomerIsGuest(true)
->setCustomerGroupId(Mage_Customer_Model_Group::NOT_LOGGED_IN_ID);
$quote->getPayment()
->importData(array('method' => 'checkmo'));
$quote->save();
$service = Mage::getModel('sales/service_quote', $quote);
$service->submitAll();
$order = $service->getOrder();
$order->save();
$order->load($order->getId());
return $order;
}
private function createProduct()
{
$product = Mage::getModel('catalog/product');
$product->addData(
array(
'attribute_set_id' => 1,
'website_ids' => array(1),
'categories' => array(),
'type_id' => Mage_Catalog_Model_Product_Type::TYPE_SIMPLE,
'sku' => self::$faker->randomNumber,
'name' => self::$faker->name,
'weight' => self::$faker->randomDigit,
'status' => Mage_Catalog_Model_Product_Status::STATUS_ENABLED,
'tax_class_id' => 2,
'visibility' => Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH,
'price' => self::$faker->randomFloat(2),
'description' => self::$faker->paragraphs,
'short_description' => self::$faker->sentence,
'stock_data' => array(
'is_in_stock' => 1,
'qty' => 100,
),
)
);
$product->save();
$product->load($product->getId());
return $product;
}
private function createQuote()
{
return Mage::getModel('sales/quote')
->setStoreId(Mage::app()->getStore('default')->getId());
}
}