Skip to content

Commit 3c62c39

Browse files
Merge pull request #13 from laravel/master
Master
2 parents 8caaee8 + 3ef4ede commit 3c62c39

File tree

2 files changed

+269
-245
lines changed

2 files changed

+269
-245
lines changed

tests/Container/ContainerTest.php

Lines changed: 2 additions & 245 deletions
Original file line numberDiff line numberDiff line change
@@ -426,181 +426,12 @@ public function testBindingResolutionExceptionMessage()
426426

427427
/**
428428
* @expectedException \Illuminate\Contracts\Container\BindingResolutionException
429-
* @expectedExceptionMessage Target [Illuminate\Tests\Container\IContainerContractStub] is not instantiable while building [Illuminate\Tests\Container\ContainerTestContextInjectOne].
429+
* @expectedExceptionMessage Target [Illuminate\Tests\Container\IContainerContractStub] is not instantiable while building [Illuminate\Tests\Container\ContainerDependentStub].
430430
*/
431431
public function testBindingResolutionExceptionMessageIncludesBuildStack()
432432
{
433433
$container = new Container;
434-
$container->make(ContainerTestContextInjectOne::class, []);
435-
}
436-
437-
public function testContainerCanInjectDifferentImplementationsDependingOnContext()
438-
{
439-
$container = new Container;
440-
441-
$container->bind(IContainerContractStub::class, ContainerImplementationStub::class);
442-
443-
$container->when(ContainerTestContextInjectOne::class)->needs(IContainerContractStub::class)->give(ContainerImplementationStub::class);
444-
$container->when(ContainerTestContextInjectTwo::class)->needs(IContainerContractStub::class)->give(ContainerImplementationStubTwo::class);
445-
446-
$one = $container->make(ContainerTestContextInjectOne::class);
447-
$two = $container->make(ContainerTestContextInjectTwo::class);
448-
449-
$this->assertInstanceOf(ContainerImplementationStub::class, $one->impl);
450-
$this->assertInstanceOf(ContainerImplementationStubTwo::class, $two->impl);
451-
452-
/*
453-
* Test With Closures
454-
*/
455-
$container = new Container;
456-
457-
$container->bind(IContainerContractStub::class, ContainerImplementationStub::class);
458-
459-
$container->when(ContainerTestContextInjectOne::class)->needs(IContainerContractStub::class)->give(ContainerImplementationStub::class);
460-
$container->when(ContainerTestContextInjectTwo::class)->needs(IContainerContractStub::class)->give(function ($container) {
461-
return $container->make(ContainerImplementationStubTwo::class);
462-
});
463-
464-
$one = $container->make(ContainerTestContextInjectOne::class);
465-
$two = $container->make(ContainerTestContextInjectTwo::class);
466-
467-
$this->assertInstanceOf(ContainerImplementationStub::class, $one->impl);
468-
$this->assertInstanceOf(ContainerImplementationStubTwo::class, $two->impl);
469-
}
470-
471-
public function testContextualBindingWorksForExistingInstancedBindings()
472-
{
473-
$container = new Container;
474-
475-
$container->instance(IContainerContractStub::class, new ContainerImplementationStub);
476-
477-
$container->when(ContainerTestContextInjectOne::class)->needs(IContainerContractStub::class)->give(ContainerImplementationStubTwo::class);
478-
479-
$this->assertInstanceOf(ContainerImplementationStubTwo::class, $container->make(ContainerTestContextInjectOne::class)->impl);
480-
}
481-
482-
public function testContextualBindingWorksForNewlyInstancedBindings()
483-
{
484-
$container = new Container;
485-
486-
$container->when(ContainerTestContextInjectOne::class)->needs(IContainerContractStub::class)->give(ContainerImplementationStubTwo::class);
487-
488-
$container->instance(IContainerContractStub::class, new ContainerImplementationStub);
489-
490-
$this->assertInstanceOf(
491-
ContainerImplementationStubTwo::class,
492-
$container->make(ContainerTestContextInjectOne::class)->impl
493-
);
494-
}
495-
496-
public function testContextualBindingWorksOnExistingAliasedInstances()
497-
{
498-
$container = new Container;
499-
500-
$container->instance('stub', new ContainerImplementationStub);
501-
$container->alias('stub', IContainerContractStub::class);
502-
503-
$container->when(ContainerTestContextInjectOne::class)->needs(IContainerContractStub::class)->give(ContainerImplementationStubTwo::class);
504-
505-
$this->assertInstanceOf(
506-
ContainerImplementationStubTwo::class,
507-
$container->make(ContainerTestContextInjectOne::class)->impl
508-
);
509-
}
510-
511-
public function testContextualBindingWorksOnNewAliasedInstances()
512-
{
513-
$container = new Container;
514-
515-
$container->when(ContainerTestContextInjectOne::class)->needs(IContainerContractStub::class)->give(ContainerImplementationStubTwo::class);
516-
517-
$container->instance('stub', new ContainerImplementationStub);
518-
$container->alias('stub', IContainerContractStub::class);
519-
520-
$this->assertInstanceOf(
521-
ContainerImplementationStubTwo::class,
522-
$container->make(ContainerTestContextInjectOne::class)->impl
523-
);
524-
}
525-
526-
public function testContextualBindingWorksOnNewAliasedBindings()
527-
{
528-
$container = new Container;
529-
530-
$container->when(ContainerTestContextInjectOne::class)->needs(IContainerContractStub::class)->give(ContainerImplementationStubTwo::class);
531-
532-
$container->bind('stub', ContainerImplementationStub::class);
533-
$container->alias('stub', IContainerContractStub::class);
534-
535-
$this->assertInstanceOf(
536-
ContainerImplementationStubTwo::class,
537-
$container->make(ContainerTestContextInjectOne::class)->impl
538-
);
539-
}
540-
541-
public function testContextualBindingWorksForMultipleClasses()
542-
{
543-
$container = new Container;
544-
545-
$container->bind(IContainerContractStub::class, ContainerImplementationStub::class);
546-
547-
$container->when([ContainerTestContextInjectTwo::class, ContainerTestContextInjectThree::class])->needs(IContainerContractStub::class)->give(ContainerImplementationStubTwo::class);
548-
549-
$this->assertInstanceOf(
550-
ContainerImplementationStub::class,
551-
$container->make(ContainerTestContextInjectOne::class)->impl
552-
);
553-
554-
$this->assertInstanceOf(
555-
ContainerImplementationStubTwo::class,
556-
$container->make(ContainerTestContextInjectTwo::class)->impl
557-
);
558-
559-
$this->assertInstanceOf(
560-
ContainerImplementationStubTwo::class,
561-
$container->make(ContainerTestContextInjectThree::class)->impl
562-
);
563-
}
564-
565-
public function testContextualBindingDoesntOverrideNonContextualResolution()
566-
{
567-
$container = new Container;
568-
569-
$container->instance('stub', new ContainerImplementationStub);
570-
$container->alias('stub', IContainerContractStub::class);
571-
572-
$container->when(ContainerTestContextInjectTwo::class)->needs(IContainerContractStub::class)->give(ContainerImplementationStubTwo::class);
573-
574-
$this->assertInstanceOf(
575-
ContainerImplementationStubTwo::class,
576-
$container->make(ContainerTestContextInjectTwo::class)->impl
577-
);
578-
579-
$this->assertInstanceOf(
580-
ContainerImplementationStub::class,
581-
$container->make(ContainerTestContextInjectOne::class)->impl
582-
);
583-
}
584-
585-
public function testContextuallyBoundInstancesAreNotUnnecessarilyRecreated()
586-
{
587-
ContainerTestContextInjectInstantiations::$instantiations = 0;
588-
589-
$container = new Container;
590-
591-
$container->instance(IContainerContractStub::class, new ContainerImplementationStub);
592-
$container->instance(ContainerTestContextInjectInstantiations::class, new ContainerTestContextInjectInstantiations);
593-
594-
$this->assertEquals(1, ContainerTestContextInjectInstantiations::$instantiations);
595-
596-
$container->when(ContainerTestContextInjectOne::class)->needs(IContainerContractStub::class)->give(ContainerTestContextInjectInstantiations::class);
597-
598-
$container->make(ContainerTestContextInjectOne::class);
599-
$container->make(ContainerTestContextInjectOne::class);
600-
$container->make(ContainerTestContextInjectOne::class);
601-
$container->make(ContainerTestContextInjectOne::class);
602-
603-
$this->assertEquals(1, ContainerTestContextInjectInstantiations::$instantiations);
434+
$container->make(ContainerDependentStub::class, []);
604435
}
605436

606437
public function testContainerTags()
@@ -766,21 +597,6 @@ public function testItThrowsExceptionWhenAbstractIsSameAsAlias()
766597
$container->getAlias('name');
767598
}
768599

769-
public function testContainerCanInjectSimpleVariable()
770-
{
771-
$container = new Container;
772-
$container->when(ContainerInjectVariableStub::class)->needs('$something')->give(100);
773-
$instance = $container->make(ContainerInjectVariableStub::class);
774-
$this->assertEquals(100, $instance->something);
775-
776-
$container = new Container;
777-
$container->when(ContainerInjectVariableStub::class)->needs('$something')->give(function ($container) {
778-
return $container->make(ContainerConcreteStub::class);
779-
});
780-
$instance = $container->make(ContainerInjectVariableStub::class);
781-
$this->assertInstanceOf(ContainerConcreteStub::class, $instance->something);
782-
}
783-
784600
public function testContainerGetFactory()
785601
{
786602
$container = new Container;
@@ -806,25 +622,6 @@ public function testExtensionWorksOnAliasedBindings()
806622
$this->assertEquals('some value extended', $container->make('something'));
807623
}
808624

809-
public function testContextualBindingWorksWithAliasedTargets()
810-
{
811-
$container = new Container;
812-
813-
$container->bind(IContainerContractStub::class, ContainerImplementationStub::class);
814-
$container->alias(IContainerContractStub::class, 'interface-stub');
815-
816-
$container->alias(ContainerImplementationStub::class, 'stub-1');
817-
818-
$container->when(ContainerTestContextInjectOne::class)->needs('interface-stub')->give('stub-1');
819-
$container->when(ContainerTestContextInjectTwo::class)->needs('interface-stub')->give(ContainerImplementationStubTwo::class);
820-
821-
$one = $container->make(ContainerTestContextInjectOne::class);
822-
$two = $container->make(ContainerTestContextInjectTwo::class);
823-
824-
$this->assertInstanceOf(ContainerImplementationStub::class, $one->impl);
825-
$this->assertInstanceOf(ContainerImplementationStubTwo::class, $two->impl);
826-
}
827-
828625
public function testMakeWithMethodIsAnAliasForMakeMethod()
829626
{
830627
$mock = $this->getMockBuilder(Container::class)
@@ -1046,36 +843,6 @@ public function init()
1046843
}
1047844
}
1048845

1049-
class ContainerTestContextInjectOne
1050-
{
1051-
public $impl;
1052-
1053-
public function __construct(IContainerContractStub $impl)
1054-
{
1055-
$this->impl = $impl;
1056-
}
1057-
}
1058-
1059-
class ContainerTestContextInjectTwo
1060-
{
1061-
public $impl;
1062-
1063-
public function __construct(IContainerContractStub $impl)
1064-
{
1065-
$this->impl = $impl;
1066-
}
1067-
}
1068-
1069-
class ContainerTestContextInjectThree
1070-
{
1071-
public $impl;
1072-
1073-
public function __construct(IContainerContractStub $impl)
1074-
{
1075-
$this->impl = $impl;
1076-
}
1077-
}
1078-
1079846
class ContainerInjectVariableStub
1080847
{
1081848
public $something;
@@ -1095,13 +862,3 @@ public function __construct(ContainerConcreteStub $concrete, $something)
1095862
$this->something = $something;
1096863
}
1097864
}
1098-
1099-
class ContainerTestContextInjectInstantiations implements IContainerContractStub
1100-
{
1101-
public static $instantiations;
1102-
1103-
public function __construct()
1104-
{
1105-
static::$instantiations++;
1106-
}
1107-
}

0 commit comments

Comments
 (0)