<?php namespace Tests\Feature; use App\Models\Product; use App\Models\Service; use Carbon\Carbon; use Illuminate\Foundation\Testing\RefreshDatabase; use Illuminate\Foundation\Testing\WithFaker; use Tests\TestCase; class ServiceTest extends TestCase { /** * Test billing calculations * * @return void */ public function testBilling() { /* // Test Weekly Billing $o = factory(Service::class)->states('week')->make(); $o->setRelation('product',factory(Product::class)->states('notstrict')->make()); $this->assertEquals(1,$o->invoice_next_quantity,'Weekly Equals 1'); $o->setRelation('product',factory(Product::class)->states('strict')->make()); $this->assertEquals(1,$o->invoice_next_quantity,'Weekly Equals 1'); $o = factory(Service::class)->states('week-mid')->make(); $o->setRelation('product',factory(Product::class)->states('notstrict')->make()); $this->assertEquals(1,$o->invoice_next_quantity,'Weekly Mid Equals 0.57'); $o->setRelation('product',factory(Product::class)->states('strict')->make()); $this->assertEquals(0.57,$o->invoice_next_quantity,'Weekly Mid Equals 0.57'); // Test Monthly Billing $o = factory(Service::class)->states('month')->make(); $o->setRelation('product',factory(Product::class)->states('notstrict')->make()); $this->assertEquals(1,$o->invoice_next_quantity,'Monthly Equals 1'); $o->setRelation('product',factory(Product::class)->states('strict')->make()); $this->assertEquals(1,$o->invoice_next_quantity,'Monthly Equals 1'); $o = factory(Service::class)->states('month-mid')->make(); $o->setRelation('product',factory(Product::class)->states('notstrict')->make()); $this->assertEquals(1,$o->invoice_next_quantity,'Monthly Equals 1'); $o->setRelation('product',factory(Product::class)->states('strict')->make()); $this->assertEqualsWithDelta(round((Carbon::now()->addMonth()->daysInMonth/2)/Carbon::now()->addMonth()->daysInMonth,2),$o->invoice_next_quantity,.03,'Monthly Mid Equals 0.5'); // Test Quarterly Billing $o = factory(Service::class)->states('quarter')->make(); $o->setRelation('product',factory(Product::class)->states('notstrict')->make()); $this->assertEquals(1,$o->invoice_next_quantity,'Quarterly Equals 1'); $o->setRelation('product',factory(Product::class)->states('strict')->make()); $this->assertEquals(1,$o->invoice_next_quantity,'Quarterly Equals 1'); $o = factory(Service::class)->states('quarter-mid')->make(); $o->setRelation('product',factory(Product::class)->states('notstrict')->make()); $this->assertEquals(1,$o->invoice_next_quantity,'Quarterly Equals 1'); $o->setRelation('product',factory(Product::class)->states('strict')->make()); $this->assertEqualsWithDelta(0.5,$o->invoice_next_quantity,.02,'Quarterly Mid Equals 0.5'); // Test Half Year Billing $o = factory(Service::class)->states('half')->make(); $o->setRelation('product',factory(Product::class)->states('notstrict')->make()); $this->assertEquals(1,$o->invoice_next_quantity,'Half Yearly Equals 1'); $o->setRelation('product',factory(Product::class)->states('strict')->make()); $this->assertEquals(1,$o->invoice_next_quantity,'Half Yearly Equals 1'); $o = factory(Service::class)->states('half-mid')->make(); $o->setRelation('product',factory(Product::class)->states('notstrict')->make()); $this->assertEquals(1,$o->invoice_next_quantity,'Half Yearly Equals 1'); $o->setRelation('product',factory(Product::class)->states('strict')->make()); $this->assertEqualsWithDelta(0.5,$o->invoice_next_quantity,.02,'Half Yearly Mid Equals 0.5'); // Test Year Billing $o = factory(Service::class)->states('year')->make(); $o->setRelation('product',factory(Product::class)->states('notstrict')->make()); $this->assertEquals(1,$o->invoice_next_quantity,'Yearly Equals 1'); $o->setRelation('product',factory(Product::class)->states('strict')->make()); $this->assertEquals(1,$o->invoice_next_quantity,'Yearly Equals 1'); $o = factory(Service::class)->states('year-mid')->make(); $o->setRelation('product',factory(Product::class)->states('notstrict')->make()); $this->assertEquals(1,$o->invoice_next_quantity,'Yearly Equals 1'); $o->setRelation('product',factory(Product::class)->states('strict')->make()); $this->assertEquals(0.5,$o->invoice_next_quantity,'Yearly Mid Equals 0.5'); // Test 2 Year Billing (price_recurr_strict ignored) $o = factory(Service::class)->states('2year')->make(); $o->setRelation('product',factory(Product::class)->states('notstrict')->make()); $this->assertEquals(1,$o->invoice_next_quantity,'Two Yearly Equals 1'); //$o->setRelation('product',factory(Product::class)->states('strict')->make()); //$this->assertEquals(1,$o->invoice_next_quantity,'Two Yearly Equals 1'); // Test 3 Year Billing (price_recurr_strict ignored) $o = factory(Service::class)->states('3year')->make(); $o->setRelation('product',factory(Product::class)->states('notstrict')->make()); $this->assertEquals(1,$o->invoice_next_quantity,'Three Yearly Equals 1'); //$o->setRelation('product',factory(Product::class)->states('strict')->make()); //$this->assertEquals(1,$o->invoice_next_quantity,'Three Yearly Equals 1'); */ } }