setup['account'] = [ 'a'=>Account::factory()->create(['site_id'=>Arr::get($this->setup,'site.a')->site_id]), 'b'=>Account::factory()->create(['site_id'=>Arr::get($this->setup,'site.b')->site_id]) ]; } private function site_setup(): void { $this->setup['site'] = [ 'a'=>Site::factory()->create(['url'=>'Test A']), 'b'=>Site::factory()->create(['url'=>'Test B']) ]; Group::factory()->create(['site_id'=>Arr::get($this->setup,'site.a')->site_id]); Group::factory()->create(['site_id'=>Arr::get($this->setup,'site.b')->site_id]); } /** * A basic feature test example. * * @return void */ public function testInvoiceAmount() { $this->site_setup(); $this->account_setup(); // Create two services for the same account // First service was billed a month ago, so this invoice will have 1 service charge $o = Service::factory()->create([ 'site_id'=>Arr::get($this->setup,'site.a')->site_id, 'account_id'=>Arr::get($this->setup,'account.a')->id, ]); $po = Product::factory()->notStrict()->make(); $o->product_id = $po->id; $o->setRelation('product',$po); $this->assertEquals(110,$o->next_invoice_items(FALSE)->sum('total'),'Invoice Equals 110'); /* // Second service wasnt billed, connected 1.5 months ago, so invoice will have 2 service charges - 1 x 0.5 month and 1 x full month. and a connection charge $o = factory(Service::class)->states('new-connect')->make(); $o->setRelation('product',factory(Product::class)->states('strict')->make()); $this->assertEqualsWithDelta(110+110+55+55,$o->next_invoice_items(FALSE)->sum('total'),2.5,'Invoice Equals 220'); */ } }