public void CreatesAMethod_WithOneParameters_Enumerable() { var method = InjectableMethodBuilder .Create <MethodFuncTest>(nameof(MethodFuncTest.ExecuteEnumerable1)) .WithParameter <IConfigured1>() .Compile <IEnumerable <IReturn> >(); method.Should().NotBeNull(); var serviceProvider = A.Fake <IServiceProvider>(); var configured1 = A.Fake <IConfigured1>(); var injected1 = A.Fake <IInjected1>(); var injected2 = A.Fake <IInjected2>(); var injected3 = A.Fake <IInjected3>(); A.CallTo(() => serviceProvider.GetService(A <Type> ._)).Returns(null !); A.CallTo(() => serviceProvider.GetService(typeof(IInjected1))).Returns(injected1); A.CallTo(() => serviceProvider.GetService(typeof(IInjected2))).Returns(injected2); A.CallTo(() => serviceProvider.GetService(typeof(IInjected3))).Returns(injected3); method(new MethodFuncTest(), serviceProvider, configured1); A.CallTo(() => serviceProvider.GetService(typeof(IInjected1))).MustHaveHappenedOnceExactly(); A.CallTo(() => serviceProvider.GetService(typeof(IInjected2))).MustHaveHappenedOnceExactly(); A.CallTo(() => serviceProvider.GetService(typeof(IInjected3))).MustHaveHappenedOnceExactly(); }
public void CreatesAMethod_With12Parameters() { var method = InjectableMethodBuilder .Create <MethodFuncTest>(nameof(MethodFuncTest.Execute12)) .WithParameter <IConfigured1>() .WithParameter <IConfigured2>() .WithParameter <IConfigured3>() .WithParameter <IConfigured4>() .WithParameter <IConfigured5>() .WithParameter <IConfigured6>() .WithParameter <IConfigured7>() .WithParameter <IConfigured8>() .WithParameter <IConfigured9>() .WithParameter <IConfigured10>() .WithParameter <IConfigured11>() .WithParameter <IConfigured12>() .Compile(); method.Should().NotBeNull(); var serviceProvider = A.Fake <IServiceProvider>(); var configured1 = A.Fake <IConfigured1>(); var configured2 = A.Fake <IConfigured2>(); var configured3 = A.Fake <IConfigured3>(); var configured4 = A.Fake <IConfigured4>(); var configured5 = A.Fake <IConfigured5>(); var configured6 = A.Fake <IConfigured6>(); var configured7 = A.Fake <IConfigured7>(); var configured8 = A.Fake <IConfigured8>(); var configured9 = A.Fake <IConfigured9>(); var configured10 = A.Fake <IConfigured10>(); var configured11 = A.Fake <IConfigured11>(); var configured12 = A.Fake <IConfigured12>(); var injected1 = A.Fake <IInjected1>(); var injected2 = A.Fake <IInjected2>(); A.CallTo(() => serviceProvider.GetService(A <Type> ._)).Returns(null !); A.CallTo(() => serviceProvider.GetService(typeof(IInjected1))).Returns(injected1); A.CallTo(() => serviceProvider.GetService(typeof(IInjected2))).Returns(injected2); method( new MethodFuncTest(), serviceProvider, configured1, configured2, configured3, configured4, configured5, configured6, configured7, configured8, configured9, configured10, configured11, configured12 ); A.CallTo(() => serviceProvider.GetService(typeof(IInjected1))).MustHaveHappenedOnceExactly(); A.CallTo(() => serviceProvider.GetService(typeof(IInjected2))).MustHaveHappenedOnceExactly(); }
public void MapsActionAndExecutes() { var methodFuncTestMock = A.Fake <MethodFuncTest>(); var action = InjectableMethodBuilder .Create <MethodFuncTest>(nameof(MethodFuncTest.Execute)) .Compile(); action(methodFuncTestMock, A.Fake <IServiceProvider>()); A.CallTo(() => methodFuncTestMock.Execute()).MustHaveHappenedOnceExactly(); }
public void HandlesStaticFunctions() { var serviceProviderMock = A.Fake <IServiceProvider>(); A.CallTo(() => serviceProviderMock.GetService(A <Type> ._)).Returns(A.Fake <IConfigured1>()); var action = InjectableMethodBuilder .Create(typeof(MethodFuncTestStatic), nameof(MethodFuncTestStatic.Execute)) .CompileStatic(); action(serviceProviderMock); A.CallTo(() => serviceProviderMock.GetService(typeof(IConfigured1))).MustHaveHappened(); }
public void HandlesOutheritedTypes() { var serviceProviderMock = A.Fake <IServiceProvider>(); A.CallTo(() => serviceProviderMock.GetService(A <Type> ._)).Returns(null !); var methodFuncTest = A.Fake <MethodFuncTest3>(); var action = InjectableMethodBuilder .Create <MethodFuncTest3>(nameof(MethodFuncTest3.Execute)) .WithParameter <IConfigured1Sub>() .Compile(); action(methodFuncTest, serviceProviderMock, new Configured1Sub()); A.CallTo(() => serviceProviderMock.GetService(A <Type> .Ignored)).MustNotHaveHappened(); }
public void HandlesInheritedTypes() { var serviceProviderMock = A.Fake <IServiceProvider>(); A.CallTo(() => serviceProviderMock.GetService(A <Type> ._)).Returns(null !); var methodFuncTest = A.Fake <MethodFuncTest2>(); Action a = () => { InjectableMethodBuilder .Create <MethodFuncTest2>(nameof(MethodFuncTest2.Execute)) .WithParameter <IConfigured1>() .Compile(); }; a.Should().Throw <ArgumentException>(); }
public void HandlesInheritedValues() { var serviceProviderMock = A.Fake <IServiceProvider>(); A.CallTo(() => serviceProviderMock.GetService(A <Type> ._)).Returns(null !); var methodFuncTest = A.Fake <MethodFuncTest>(); var action = InjectableMethodBuilder .Create <MethodFuncTest>(nameof(MethodFuncTest.Execute)) .WithParameter <IConfigured1>() .Compile(); action(methodFuncTest, serviceProviderMock, new Configured1()); A.CallTo(() => methodFuncTest.Execute( A <IConfigured1> .That.Matches(x => x.GetType() == typeof(Configured1))) ).MustHaveHappened(); A.CallTo(() => serviceProviderMock.GetService(A <Type> .Ignored)).MustNotHaveHappened(); }
public void CreatesAMethod_WithZeroParameters_UsingTypeForMethod() { var method = InjectableMethodBuilder .Create(typeof(MethodFuncTest), nameof(MethodFuncTest.ExecuteReturn0)) .Compile <bool>(); method.Should().NotBeNull(); var serviceProvider = A.Fake <IServiceProvider>(); var injected1 = A.Fake <IInjected1>(); var injected2 = A.Fake <IInjected2>(); A.CallTo(() => serviceProvider.GetService(A <Type> ._)).Returns(null !); A.CallTo(() => serviceProvider.GetService(typeof(IInjected1))).Returns(injected1); A.CallTo(() => serviceProvider.GetService(typeof(IInjected2))).Returns(injected2); method(new MethodFuncTest(), serviceProvider); A.CallTo(() => serviceProvider.GetService(typeof(IInjected1))).MustHaveHappenedOnceExactly(); A.CallTo(() => serviceProvider.GetService(typeof(IInjected2))).MustHaveHappenedOnceExactly(); }
public void MapsConfiguredParameterToAction() { var serviceProviderMock = A.Fake <IServiceProvider>(); A.CallTo(() => serviceProviderMock.GetService(A <Type> ._)).Returns(null !); A.CallTo(() => serviceProviderMock.GetService(typeof(IInjected1))).Returns(A.Fake <IInjected1>()); A.CallTo(() => serviceProviderMock.GetService(typeof(IInjected2))).Returns(A.Fake <IInjected2>()); A.CallTo(() => serviceProviderMock.GetService(typeof(IInjected3))).Returns(null !); var serviceProvider = serviceProviderMock; var methodFuncTestMock = A.Fake <MethodFuncTest>(); var action = InjectableMethodBuilder .Create <MethodFuncTest>(nameof(MethodFuncTest.Execute1)) .WithParameter <IConfigured1>() .Compile(); action(methodFuncTestMock, serviceProvider, A.Fake <IConfigured1>()); A.CallTo(() => methodFuncTestMock.Execute1(A <IConfigured1> .Ignored, A <IInjected1> .Ignored, A <IInjected2> .Ignored, A <IInjected3> .Ignored)).MustHaveHappenedOnceExactly(); }