GivenACompositeCommandResolver.cs 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. // Licensed to the .NET Foundation under one or more agreements.
  2. // The .NET Foundation licenses this file to you under the MIT license.
  3. using Microsoft.DotNet.CommandFactory;
  4. using Moq;
  5. namespace Microsoft.DotNet.Tests
  6. {
  7. public class GivenACompositeCommandResolver
  8. {
  9. [Fact]
  10. public void It_iterates_through_all_added_resolvers_in_order_when_they_return_null()
  11. {
  12. var compositeCommandResolver = new CompositeCommandResolver();
  13. var resolverCalls = new List<int>();
  14. var mockResolver1 = new Mock<ICommandResolver>();
  15. mockResolver1.Setup(r => r
  16. .Resolve(It.IsAny<CommandResolverArguments>()))
  17. .Returns(default(CommandSpec))
  18. .Callback(() => resolverCalls.Add(1));
  19. var mockResolver2 = new Mock<ICommandResolver>();
  20. mockResolver2.Setup(r => r
  21. .Resolve(It.IsAny<CommandResolverArguments>()))
  22. .Returns(default(CommandSpec))
  23. .Callback(() => resolverCalls.Add(2));
  24. compositeCommandResolver.AddCommandResolver(mockResolver1.Object);
  25. compositeCommandResolver.AddCommandResolver(mockResolver2.Object);
  26. compositeCommandResolver.Resolve(default(CommandResolverArguments));
  27. resolverCalls.Should()
  28. .HaveCount(2)
  29. .And
  30. .ContainInOrder(new[] { 1, 2 });
  31. }
  32. [Fact]
  33. public void It_stops_iterating_through_added_resolvers_when_one_returns_nonnull()
  34. {
  35. var compositeCommandResolver = new CompositeCommandResolver();
  36. var resolverCalls = new List<int>();
  37. var mockResolver1 = new Mock<ICommandResolver>();
  38. mockResolver1.Setup(r => r
  39. .Resolve(It.IsAny<CommandResolverArguments>()))
  40. .Returns(new CommandSpec(null, null))
  41. .Callback(() => resolverCalls.Add(1));
  42. var mockResolver2 = new Mock<ICommandResolver>();
  43. mockResolver2.Setup(r => r
  44. .Resolve(It.IsAny<CommandResolverArguments>()))
  45. .Returns(default(CommandSpec))
  46. .Callback(() => resolverCalls.Add(2));
  47. compositeCommandResolver.AddCommandResolver(mockResolver1.Object);
  48. compositeCommandResolver.AddCommandResolver(mockResolver2.Object);
  49. compositeCommandResolver.Resolve(default(CommandResolverArguments));
  50. resolverCalls.Should()
  51. .HaveCount(1)
  52. .And
  53. .ContainInOrder(new[] { 1 });
  54. }
  55. }
  56. }