Skip to content

Commit

Permalink
Add reduceUsage function
Browse files Browse the repository at this point in the history
  • Loading branch information
gerardojbaez committed Aug 23, 2016
1 parent fe08cd8 commit 2b5e18a
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 0 deletions.
26 changes: 26 additions & 0 deletions src/LaraPlans/Models/PlanSubscription.php
Original file line number Diff line number Diff line change
Expand Up @@ -320,6 +320,32 @@ public function recordUsage($feature_code, $uses = 1, $incremental = true)
return $usage;
}

/**
* Reduce usage.
*
* @param string $feature_code
* @param int $uses
* @return mixed
*/
public function reduceUsage($feature_code, $uses = 1)
{
$feature = new Feature($feature_code);

$usage = $this->usage()->byFeatureCode($feature_code)->first();

if (!$usage)
return false;

$usage->used = max($usage->used - $uses, 0);

$usage->save();

// Refresh usage records
$this->load('usage');

return $usage;
}

/**
* Get feature's value.
*
Expand Down
22 changes: 22 additions & 0 deletions tests/integration/Models/PlanSubscriptionTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,28 @@ public function it_can_record_feature_usage()
$this->assertEquals(2, $usage->used);
}

/**
* Can record reduce usage.
*
* @test
* @return void
*/
public function it_can_reduce_feature_usage()
{
// Can't reduce unrecorded usage...
$usage = $this->subscription->reduceUsage('listings_per_month');
$this->assertFalse($usage);

// Record usage
$usage = $this->subscription->recordUsage('listings_per_month', 5);

// Reduce
$usage = $this->subscription->reduceUsage('listings_per_month', 3);

$this->assertInstanceOf(PlanSubscriptionUsage::class, $usage);
$this->assertEquals(2, $usage->used);
}

/**
* Can get feature value.
*
Expand Down

0 comments on commit 2b5e18a

Please sign in to comment.