public void SingleOrDefault_DisposeCalled_OneElementInSequence() { // Arrange var enumerator = new Mock <IEnumerator>(MockBehavior.Strict); enumerator.SetupSequence(mock => mock.MoveNext()).Returns(true).Returns(false); enumerator.SetupGet(mock => mock.Current).Returns(new Customer()); var disposable = enumerator.As <IDisposable>(); disposable.Setup(mock => mock.Dispose()).Verifiable(); var queryable = new Mock <IQueryable>(MockBehavior.Strict); queryable.Setup(mock => mock.GetEnumerator()).Returns(enumerator.Object); var actionDescriptor = new ReflectedHttpActionDescriptor { Configuration = new HttpConfiguration(), MethodInfo = GetType().GetMethod("SomeAction", BindingFlags.Instance | BindingFlags.NonPublic), ControllerDescriptor = new HttpControllerDescriptor { ControllerName = "SomeName" } }; // Act EnableQueryAttribute.SingleOrDefault(queryable.Object, actionDescriptor); // Assert disposable.Verify(); }
public void SingleOrDefault_IQueryableOfT_ZeroElementsInSequence_ReturnsNull() { IQueryable <Customer> queryable = Enumerable.Empty <Customer>().AsQueryable(); HttpActionDescriptor actionDescriptor = new Mock <HttpActionDescriptor>().Object; var result = EnableQueryAttribute.SingleOrDefault(queryable, actionDescriptor); Assert.Null(result); }
public void SingleOrDefault_IQueryableOfT_OneElementInSequence_ReturnsElement() { Customer customer = new Customer(); IQueryable <Customer> queryable = new[] { customer }.AsQueryable(); HttpActionDescriptor actionDescriptor = new Mock <HttpActionDescriptor>().Object; var result = EnableQueryAttribute.SingleOrDefault(queryable, actionDescriptor); Assert.Same(customer, result); }
public void SingleOrDefault_IQueryableOfT_MoreThaneOneElementInSequence_Throws() { IQueryable <Customer> queryable = new[] { new Customer(), new Customer() }.AsQueryable(); ReflectedHttpActionDescriptor actionDescriptor = new ReflectedHttpActionDescriptor { Configuration = new HttpConfiguration(), MethodInfo = GetType().GetMethod("SomeAction", BindingFlags.Instance | BindingFlags.NonPublic), ControllerDescriptor = new HttpControllerDescriptor { ControllerName = "SomeName" } }; Assert.Throws <InvalidOperationException>( () => EnableQueryAttribute.SingleOrDefault(queryable, actionDescriptor), "The action 'SomeAction' on controller 'SomeName' returned a SingleResult containing more than one element. " + "SingleResult must have zero or one elements."); }