Skip to content

Commit

Permalink
Adjust tests to fully cover rebinding behavior
Browse files Browse the repository at this point in the history
  • Loading branch information
axlon committed Nov 14, 2024
1 parent f2bb1dd commit 14ac2b5
Showing 1 changed file with 43 additions and 8 deletions.
51 changes: 43 additions & 8 deletions tests/Container/ResolvingCallbackTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -282,7 +282,44 @@ public function testParametersPassedIntoResolvingCallbacks()
$container->make(ResolvingContractStub::class);
}

public function testResolvingCallbacksAreCallWhenRebindHappenForResolvedAbstract()
public function testResolvingCallbacksAreCallWhenRebindHappens()
{
$container = new Container;

$resolvingCallCounter = 0;
$container->resolving(ResolvingContractStub::class, function () use (&$resolvingCallCounter) {
$resolvingCallCounter++;
});

$rebindCallCounter = 0;
$container->rebinding(ResolvingContractStub::class, function () use (&$rebindCallCounter) {
$rebindCallCounter++;
});

$container->bind(ResolvingContractStub::class, ResolvingImplementationStub::class);

$container->make(ResolvingContractStub::class);
$this->assertEquals(1, $resolvingCallCounter);
$this->assertEquals(0, $rebindCallCounter);

$container->bind(ResolvingContractStub::class, ResolvingImplementationStubTwo::class);
$this->assertEquals(2, $resolvingCallCounter);
$this->assertEquals(1, $rebindCallCounter);

$container->make(ResolvingImplementationStubTwo::class);
$this->assertEquals(3, $resolvingCallCounter);
$this->assertEquals(1, $rebindCallCounter);

$container->bind(ResolvingContractStub::class, fn () => new ResolvingImplementationStubTwo);
$this->assertEquals(4, $resolvingCallCounter);
$this->assertEquals(2, $rebindCallCounter);

$container->make(ResolvingContractStub::class);
$this->assertEquals(5, $resolvingCallCounter);
$this->assertEquals(2, $rebindCallCounter);
}

public function testResolvingCallbacksArentCalledWhenNoRebindingsAreRegistered()
{
$container = new Container;

Expand All @@ -297,18 +334,16 @@ public function testResolvingCallbacksAreCallWhenRebindHappenForResolvedAbstract
$this->assertEquals(1, $callCounter);

$container->bind(ResolvingContractStub::class, ResolvingImplementationStubTwo::class);
$this->assertEquals(2, $callCounter);
$this->assertEquals(1, $callCounter);

$container->make(ResolvingImplementationStubTwo::class);
$this->assertEquals(3, $callCounter);
$this->assertEquals(2, $callCounter);

$container->bind(ResolvingContractStub::class, function () {
return new ResolvingImplementationStubTwo;
});
$this->assertEquals(4, $callCounter);
$container->bind(ResolvingContractStub::class, fn () => new ResolvingImplementationStubTwo);
$this->assertEquals(2, $callCounter);

$container->make(ResolvingContractStub::class);
$this->assertEquals(5, $callCounter);
$this->assertEquals(3, $callCounter);
}

public function testRebindingDoesNotAffectMultipleResolvingCallbacks()
Expand Down

0 comments on commit 14ac2b5

Please sign in to comment.