public void WhenBuildingProxyMultipleTimesThenUseCache() { // Assign SimpleService service = new SimpleService(); DefaultProxyBuilder builder = this.CreateTestableBuilder(); // Act builder.Build(service, this.interceptor.Object); var proxy = builder.Build(service, this.interceptor.Object); // Assert // TODO : How to validate the cache hit? Using a external object? Assert.NotNull(proxy); Assert.IsAssignableFrom(typeof(SimpleService), proxy); }
public void WhenBuildingWithoutParameterlessCtorServiceThenThrowsNotSupportedException() { // Assign BadService service = new BadService("test"); DefaultProxyBuilder builder = this.CreateTestableBuilder(); this.interceptor.Setup(i => i.OnExecuting()); this.interceptor.Setup(i => i.OnExecuted()); this.interceptor.Setup(i => i.OnException(It.IsAny <Exception>())); bool exceptionRaised = false; // Act try { builder.Build(service, this.interceptor.Object); } catch (NotSupportedException) { exceptionRaised = true; } // Assert this.interceptor.Verify(i => i.OnExecuting(), Times.Never()); this.interceptor.Verify(i => i.OnExecuted(), Times.Never()); this.interceptor.Verify(i => i.OnException(It.IsAny <Exception>()), Times.Never()); Assert.True(exceptionRaised); }
public void WhenBuildingWithoutServiceThenThrowsArgumentNullException() { // Assign DefaultProxyBuilder builder = this.CreateTestableBuilder(); this.interceptor.Setup(i => i.OnExecuting()); this.interceptor.Setup(i => i.OnExecuted()); this.interceptor.Setup(i => i.OnException(It.IsAny <Exception>())); bool exceptionRaised = false; // Act try { builder.Build <SimpleService>(null, this.interceptor.Object); } catch (ArgumentNullException) { exceptionRaised = true; } // Assert this.interceptor.Verify(i => i.OnExecuting(), Times.Never()); this.interceptor.Verify(i => i.OnExecuted(), Times.Never()); this.interceptor.Verify(i => i.OnException(It.IsAny <Exception>()), Times.Never()); Assert.True(exceptionRaised); }
public void WhenCallingServiceThrowingExceptionThenInterceptorIsCalled() { // Assign SimpleService service = new SimpleService(); DefaultProxyBuilder builder = this.CreateTestableBuilder(); this.interceptor.Setup(i => i.OnExecuting()); this.interceptor.Setup(i => i.OnExecuted()); this.interceptor.Setup(i => i.OnException(It.IsAny <Exception>())); var proxy = builder.Build(service, this.interceptor.Object); bool exceptionRaised = false; // Act try { proxy.ThrowsException(); } catch (Exception) { exceptionRaised = true; } // Assert this.interceptor.Verify(i => i.OnExecuting(), Times.Once()); this.interceptor.Verify(i => i.OnExecuted(), Times.Never()); this.interceptor.Verify(i => i.OnException(It.IsAny <Exception>()), Times.Once()); Assert.True(exceptionRaised); }
public void WhenBuildingProxyThenReturnsProxyOfSameType() { // Assign SimpleService service = new SimpleService(); DefaultProxyBuilder builder = this.CreateTestableBuilder(); // Act var proxy = builder.Build(service, this.interceptor.Object); // Assert Assert.NotNull(proxy); Assert.IsAssignableFrom(typeof(SimpleService), proxy); }
public void WhenCallingNonVirtualServiceThenInterceptorIsNotCalled() { // Assign SimpleService service = new SimpleService(); DefaultProxyBuilder builder = this.CreateTestableBuilder(); this.interceptor.Setup(i => i.OnExecuting()); this.interceptor.Setup(i => i.OnExecuted()); this.interceptor.Setup(i => i.OnException(It.IsAny <Exception>())); var proxy = builder.Build(service, this.interceptor.Object); // Act proxy.NonVirtual(); // Assert this.interceptor.Verify(i => i.OnExecuting(), Times.Never()); this.interceptor.Verify(i => i.OnExecuted(), Times.Never()); this.interceptor.Verify(i => i.OnException(It.IsAny <Exception>()), Times.Never()); }
public void WhenCallingWithEnumParameterThenInterceptorIsCalled() { // Assign SimpleService service = new SimpleService(); DefaultProxyBuilder builder = this.CreateTestableBuilder(); this.interceptor.Setup(i => i.OnExecuting()); this.interceptor.Setup(i => i.OnExecuted()); this.interceptor.Setup(i => i.OnException(It.IsAny <Exception>())); var proxy = builder.Build(service, this.interceptor.Object); var value = StringSplitOptions.None; // Act proxy.EnumTypeParameter(value); // Assert this.interceptor.Verify(i => i.OnExecuting(), Times.Once()); this.interceptor.Verify(i => i.OnExecuted(), Times.Once()); this.interceptor.Verify(i => i.OnException(It.IsAny <Exception>()), Times.Never()); }
public void WhenCallingServiceReturningEnumTypeThenInterceptorIsCalled() { // Assign SimpleService service = new SimpleService(); DefaultProxyBuilder builder = this.CreateTestableBuilder(); this.interceptor.Setup(i => i.OnExecuting()); this.interceptor.Setup(i => i.OnExecuted()); this.interceptor.Setup(i => i.OnException(It.IsAny <Exception>())); var proxy = builder.Build(service, this.interceptor.Object); // Act var value4 = proxy.ReturnsEnum(); // Assert this.interceptor.Verify(i => i.OnExecuting(), Times.Once()); this.interceptor.Verify(i => i.OnExecuted(), Times.Once()); this.interceptor.Verify(i => i.OnException(It.IsAny <Exception>()), Times.Never()); Assert.Equal(service.EnumValue, value4); }