/**
  * @covers Housekeeper\Eloquent\BaseRepository::after
  */
 public function testAfter()
 {
     $mockRepository = $this->makeMockRepository();
     /**
      * These should be "true" after tests completed.
      */
     $InjectionCalled = false;
     /**
      * Mock a after injection.
      */
     $afterInjection = m::mock(InjectionInterface::class, AfterInjectionInterface::class);
     $afterInjection->shouldReceive('priority')->andReturn(1);
     $afterInjection->shouldReceive('handle')->andReturnUsing(function () use(&$InjectionCalled) {
         $InjectionCalled = true;
     });
     /**
      * Bind after injection directly.
      */
     setUnaccessibleObjectPropertyValue($mockRepository, 'injections', ['reset' => [], 'before' => [], 'after' => [$afterInjection]]);
     /**
      * Mock an Action.
      */
     $mockAction = $this->makeMockAction();
     //Call "after"
     $methodAfter = getUnaccessibleObjectMethod($mockRepository, 'after');
     $methodAfter->invoke($mockRepository, $mockAction, '');
     $this->assertTrue($InjectionCalled);
 }
 /**
  * @runInSeparateProcess
  * @covers Housekeeper\Repository::newPlan
  */
 public function testNewPlanWhenDoNotHaveDefault()
 {
     $mockRepository = $this->makeMockRepository(MockSetupRepository::class, false);
     setUnaccessibleObjectPropertyValue($mockRepository, 'defaultPlan', null);
     setUnaccessibleObjectPropertyValue($mockRepository, 'plans', [1]);
     setUnaccessibleObjectPropertyValue($mockRepository, 'planStep', 0);
     $methodNewPlan = getUnaccessibleObjectMethod($mockRepository, 'newPlan');
     $offset = $methodNewPlan->invoke($mockRepository);
     $propertyPlanStep = getUnaccessibleObjectPropertyValue($mockRepository, 'planStep');
     $propertyPlans = getUnaccessibleObjectPropertyValue($mockRepository, 'plans');
     $this->assertEquals(1, $offset);
     $this->assertEquals(1, $propertyPlanStep);
     $this->assertCount(2, $propertyPlans);
     $plan = $propertyPlans[1];
     $this->assertInstanceOf(\Housekeeper\Plan::class, $plan);
 }