Skip to content

Commit d630462

Browse files
Navneet RaiNavneet Rai
Navneet Rai
authored and
Navneet Rai
committed
Added Tests
1 parent dc719b4 commit d630462

File tree

3 files changed

+173
-0
lines changed

3 files changed

+173
-0
lines changed

src/Mocks/MockService.php

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
<?php namespace Userdesk\Subscription\Mocks;
2+
3+
use Userdesk\Subscription\Classes\TransactionResult;
4+
use Userdesk\Subscription\Exceptions\TransactionException;
5+
6+
use Userdesk\Subscription\Contracts\Product as SubscriptionProductContract;
7+
use Userdesk\Subscription\Contracts\Consumer as SubscriptionConsumerContract;
8+
use Userdesk\Subscription\Contracts\Service as ProcessorContract;
9+
10+
class MockService implements ProcessorContract{
11+
private $config = [];
12+
13+
public function __construct(array $config){
14+
$this->config = $config;
15+
}
16+
17+
/**
18+
* Create Redirect response to complete cart.
19+
*
20+
* @param int $id
21+
* @param \Userdesk\Subscription\Contracts\Product $product
22+
* @param \Userdesk\Subscription\Contracts\Consumer $consumer
23+
* @return \Illuminate\Http\Response|null
24+
*/
25+
public function complete(int $id, SubscriptionProductContract $product, SubscriptionConsumerContract $consumer = null){
26+
$redir_url = 'https://www.google.com';
27+
return redirect()->away($redir_url);
28+
}
29+
30+
/**
31+
* Handle IPN data.
32+
*
33+
* @param array $input
34+
* @return \Userdesk\Subscription\Class\TransactionResult|null
35+
*/
36+
public function ipn(array $input){
37+
$item_number = str_random(12)
38+
$txn_id = str_random(12);
39+
40+
$action = 'test';
41+
$status = 'mock';
42+
$amount = array_get($input, 'mc_gross', 0);
43+
44+
return new TransactionResult($item_number, $txn_id, $amount, $status, $action, $input);
45+
}
46+
47+
/**
48+
* Handle PDT data.
49+
*
50+
* @param array $input
51+
* @return \Userdesk\Subscription\Class\TransactionResult|null
52+
*/
53+
public function pdt(array $input){
54+
$item_number = str_random(12);
55+
$subscr_id = str_random(12);
56+
57+
$action = 'test';
58+
$status = 'mock';
59+
$amount = array_get($input, 'mc_gross', 0);
60+
61+
62+
return new TransactionResult($item_number, $subscr_id, 0, $payment_status, $action, $keys->get());
63+
64+
}
65+
}

tests/SubscriptionFactoryTest.php

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
<?php
2+
3+
use Illuminate\Foundation\Testing\WithoutMiddleware;
4+
use Illuminate\Foundation\Testing\DatabaseMigrations;
5+
use Illuminate\Foundation\Testing\DatabaseTransactions;
6+
7+
use Userdesk\Subscription\SubscriptionFactory;
8+
9+
class SubscriptionFactoryTest extends Orchestra\Testbench\TestCase
10+
{
11+
12+
public function testCreateServiceThrowsExceptionIfNoConfig(){
13+
$this->setExpectedException('\\Userdesk\Subscription\Exceptions\SubscriptionException');
14+
$factory = new SubscriptionFactory();
15+
$service = $factory->createService('paypal');
16+
}
17+
18+
public function testCreateServiceNonExistentService() {
19+
Config::set('subscription.services.foo.email', '[email protected]');
20+
21+
$factory = new SubscriptionFactory();
22+
$service = $factory->createService('foo');
23+
24+
$this->assertNull($service);
25+
}
26+
27+
public function testCreateServicePreLoaded(){
28+
Config::set('subscription.services.paypal.email', '[email protected]');
29+
30+
$factory = new SubscriptionFactory();
31+
$service = $factory->createService('paypal');
32+
33+
$this->assertInstanceOf('Userdesk\\Subscription\\Services\\Paypal', $service);
34+
}
35+
36+
public function testRegisterServiceAlias(){
37+
Config::set('subscription.services.paypal.email', '[email protected]');
38+
Config::set('subscription.services.alias.email', '[email protected]');
39+
40+
$factory = new SubscriptionFactory();
41+
$service = $factory->createService('alias');
42+
43+
$this->assertNull($service);
44+
45+
$factory->registerServiceAlias('paypal', 'alias');
46+
47+
$newService = $factory->createService('alias');
48+
49+
$this->assertInstanceOf('Userdesk\\Subscription\\Services\\Paypal', $newService);
50+
}
51+
52+
public function testCreateServiceUserRegistered(){
53+
Config::set('subscription.services.foo.email', '[email protected]');
54+
55+
$factory = new SubscriptionFactory();
56+
$service = $factory->createService('foo');
57+
58+
$this->assertNull($service);
59+
60+
$factory->registerService('foo', 'Userdesk\Subscription\Mocks\MockService');
61+
62+
$newService = $factory->createService('foo');
63+
64+
$this->assertInstanceOf('Userdesk\\Subscription\\Contracts\\Processor', $newService);
65+
}
66+
}

tests/SubscriptionTest.php

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
<?php
2+
3+
use Illuminate\Foundation\Testing\WithoutMiddleware;
4+
use Illuminate\Foundation\Testing\DatabaseMigrations;
5+
use Illuminate\Foundation\Testing\DatabaseTransactions;
6+
7+
use Userdesk\Subscription\Subscription;
8+
use Userdesk\Subscription\SubscriptionFactory;
9+
10+
class SubscriptionTest extends Orchestra\Testbench\TestCase
11+
{
12+
13+
public function tearDown()
14+
{
15+
Mockery::close();
16+
parent::tearDown();
17+
}
18+
19+
protected function getPackageProviders($app)
20+
{
21+
return array('Userdesk\Subscription\SubscriptionServiceProvider');
22+
}
23+
24+
protected function getPackageAliases($app)
25+
{
26+
return array(
27+
'Subscription' => 'Userdesk\Subscription\Facades\Subscription'
28+
);
29+
}
30+
31+
public function testCreateProcessor()
32+
{
33+
Config::set('subscription.services.paypal.email', '[email protected]');
34+
35+
$subscriptionFactory = Mockery::mock('Userdesk\Subscription\SubscriptionFactory[createService]');
36+
$subscriptionFactory->shouldReceive('createService')->passthru();
37+
38+
$subscription = new Subscription($subscriptionFactory);
39+
$processor = $subscription->processor('paypal');
40+
$this->assertInstanceOf('Userdesk\Subscription\Services\Paypal', $processor);
41+
}
42+
}

0 commit comments

Comments
 (0)