/** * @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); }