示例#1
0
        private Mock <IResourceGraph> CreateMockResourceGraph(string resourceName, bool includeRelationship = false)
        {
            var mockGraph = new Mock <IResourceGraph>();

            var resourceContext = new ResourceContext
            {
                PublicName   = resourceName,
                IdentityType = typeof(string)
            };

            ISetupSequentialResult <ResourceContext> seq = mockGraph.SetupSequence(resourceGraph => resourceGraph.GetResourceContext(It.IsAny <Type>()))
                                                           .Returns(resourceContext);

            if (includeRelationship)
            {
                var relResourceContext = new ResourceContext
                {
                    PublicName   = "todoItems",
                    IdentityType = typeof(string)
                };

                seq.Returns(relResourceContext);
            }

            return(mockGraph);
        }
示例#2
0
 /// <summary>
 /// Return a sequence of tasks, once per call.
 /// </summary>
 public static ISetupSequentialResult <ValueTask <TResult> > ReturnsAsync <TResult>(
     this ISetupSequentialResult <ValueTask <TResult> > setup,
     Func <TResult> valueFunction
     )
 {
     return(setup.Returns(() => new ValueTask <TResult>(valueFunction())));
 }
        private Mock <IClient> CreateClient(List <Helper.Maybe <ForecastResponse> > responses = null)
        {
            var client = new Mock <IClient>();

            if (responses is null)
            {
                client.Setup(cli => cli.GetForecastAsync(It.IsAny <string>()))
                .Returns(() => Task.FromResult(new Helper.Maybe <ForecastResponse>()));
                return(client);
            }

            var setup = client.SetupSequence(cli => cli.GetForecastAsync(It.IsAny <string>()));
            ISetupSequentialResult <Task <Helper.Maybe <ForecastResponse> > > flow = null;

            foreach (var response in responses)
            {
                if (flow is null)
                {
                    flow = setup.Returns(() => Task.FromResult(response));
                }
                else
                {
                    flow = flow.Returns(() => Task.FromResult(response));
                }
            }

            return(client);
        }
示例#4
0
 public void ReturnOrThrow(ISetupSequentialResult<byte[]> setup)
 {
     if (_exception != null)
         setup.Throws(_exception);
     else
         setup.Returns(_response);
 }
示例#5
0
 /// <summary>
 /// Return a sequence of tasks, once per call.
 /// </summary>
 public static ISetupSequentialResult <Task <TResult> > ReturnsAsync <TResult>(
     this ISetupSequentialResult <Task <TResult> > setup,
     TResult value
     )
 {
     return(setup.Returns(() => Task.FromResult(value)));
 }
示例#6
0
        /// <summary>
        /// Throws a sequence of exceptions, once per call.
        /// </summary>
        public static ISetupSequentialResult <Task <TResult> > ThrowsAsync <TResult>(this ISetupSequentialResult <Task <TResult> > setup, Exception exception)
        {
            var tcs = new TaskCompletionSource <TResult>();

            tcs.SetException(exception);

            return(setup.Returns(tcs.Task));
        }
示例#7
0
        public static ISetupSequentialResult <Task <T> > ReturnsAsync <T>(this ISetupSequentialResult <Task <T> > setup, T value)
        {
            var tcs = new TaskCompletionSource <T>();

            tcs.SetResult(value);

            return(setup.Returns(tcs.Task));
        }
示例#8
0
 /// <summary>
 /// Throws a sequence of exceptions, once per call.
 /// </summary>
 public static ISetupSequentialResult <Task> ThrowsAsync(this ISetupSequentialResult <Task> setup, Exception exception)
 {
     return(setup.Returns(() =>
     {
         var tcs = new TaskCompletionSource <object>();
         tcs.SetException(exception);
         return tcs.Task;
     }));
 }
示例#9
0
        public static ISetupSequentialResult <T> ReturnsSequence <T>(this ISetupSequentialResult <T> setup, IEnumerable <T> results)
        {
            foreach (var item in results)
            {
                setup.Returns(item);
            }

            return(setup);
        }
示例#10
0
        public static ISetupSequentialResult <Task <T> > ReturnsIndefinitely <T>(this ISetupSequentialResult <Task <T> > setup, Func <Task <T> > valueFunction)
        {
            for (var i = 0; i < 100; i++)
            {
                setup.Returns(valueFunction);
            }

            return(setup);
        }
        private void SetupAppGeneratorWithApps(App[] apps)
        {
            ISetupSequentialResult <App> sequenceSetup = _repositoryToAppGeneratorServiceMock.SetupSequence(appGenerator => appGenerator.GenerateApp(It.IsAny <IGitHubRepositoryDataProvider>()));

            foreach (App app in apps)
            {
                sequenceSetup.Returns(app);
            }
        }
        public ZMachineFeatureTester Execute(string command, string outputContains = "")
        {
            _commandStrings.Add(command);
            _outputStrings.Add(outputContains);

            _inputSequence.Returns(HandleNextInputOutputPass);

            return(this);
        }
 public static ISetupSequentialResult <IResult <TResult> > ReturnsGivenSequentialResult <TResult>(this ISetupSequentialResult <IResult <TResult> > setup,
                                                                                                  TResult resultObject = default(TResult)
                                                                                                  )
 {
     return(setup
            .Returns(new Result <TResult> {
         Errors = new List <IError>(),
         ResultObject = resultObject
     }));
 }
示例#14
0
        protected ICosmosDbFeedIterator <TDocument> NewFeedIterator <TDocument>(params IEnumerable <TDocument>[] pages)
            where TDocument : IIdentifiable
        {
            Mock <ICosmosDbFeedIterator <TDocument> > feedIterator = new Mock <ICosmosDbFeedIterator <TDocument> >();

            ISetupSequentialResult <bool> hasResultsSequence = feedIterator.SetupSequence(_ => _.HasMoreResults);
            ISetupSequentialResult <Task <IEnumerable <TDocument> > > pagesSequence = feedIterator.SetupSequence(_ =>
                                                                                                                 _.ReadNext(It.IsAny <CancellationToken>()));

            foreach (IEnumerable <TDocument> page in pages)
            {
                hasResultsSequence.Returns(true);
                pagesSequence.ReturnsAsync(page);
            }

            hasResultsSequence.Returns(false);

            return(feedIterator.Object);
        }
示例#15
0
 public void ReturnOrThrow(ISetupSequentialResult <byte[]> setup)
 {
     if (_exception != null)
     {
         setup.Throws(_exception);
     }
     else
     {
         setup.Returns(_response);
     }
 }
        /// <summary>
        /// Allows to specify a sequence of exceptions thrown by an asynchronous method, once per call.
        /// </summary>
        public static ISetupSequentialResult <Task <TResult> > ThrowsAsync <TResult>(this ISetupSequentialResult <Task <TResult> > sequence, Exception exception)
        {
            if (sequence == null)
            {
                throw new ArgumentNullException(nameof(sequence));
            }

            var taskCompletionSource = new TaskCompletionSource <TResult>();

            taskCompletionSource.SetException(exception);
            return(sequence.Returns(taskCompletionSource.Task));
        }
示例#17
0
        private void AndThePagesOfPublishedProviders(params IEnumerable <PublishedProvider>[] pages)
        {
            ISetupSequentialResult <Task <IEnumerable <PublishedProvider> > > reads = _cosmosFeed.SetupSequence(_ =>
                                                                                                                _.ReadNext(It.IsAny <CancellationToken>()));
            ISetupSequentialResult <bool> hasRecords = _cosmosFeed.SetupSequence(_ => _.HasMoreResults);

            foreach (IEnumerable <PublishedProvider> page in pages)
            {
                reads.ReturnsAsync(page);
                hasRecords.Returns(true);
            }
        }
示例#18
0
 public static ISetupSequentialResult <IResult <TResult> > ReturnsBasicErrorSequentialResult <TResult>(this ISetupSequentialResult <IResult <TResult> > setup,
                                                                                                       TResult resultObject = default(TResult)
                                                                                                       )
 {
     return(setup
            .Returns(new Result <TResult> {
         Errors = new List <IError> {
             ErrorConstants.BasicError
         },
         ResultObject = resultObject
     }));
 }
        private void GivenThePagesOfRequests(params BatchProfilingRequestModel[] requests)
        {
            ISetupSequentialResult <bool> hasPages = _context
                                                     .SetupSequence(_ => _.HasPages);
            ISetupSequentialResult <BatchProfilingRequestModel[]> nextPage = _context
                                                                             .SetupSequence(_ => _.NextPage());

            foreach (BatchProfilingRequestModel request in requests)
            {
                hasPages = hasPages.Returns(true);
                nextPage = nextPage.Returns(new[]
                {
                    request
                });
            }
        }
        private void GivenThePagesOfUkprns(string blobName,
                                           params string[][] pages)
        {
            _batchUploadReader.Setup(_ => _.LoadBatchUpload(blobName))
            .Returns(Task.CompletedTask)
            .Verifiable();

            ISetupSequentialResult <IEnumerable <string> > pageSequence = _batchUploadReader.SetupSequence(_ => _.NextPage());
            ISetupSequentialResult <bool> hasPagesSequence = _batchUploadReader.SetupSequence(_ => _.HasPages);

            foreach (string[] page in pages)
            {
                pageSequence     = pageSequence.Returns(page);
                hasPagesSequence = hasPagesSequence.Returns(true);
            }
        }
 public static ISetupSequentialResult <IResult <IQueryable <T> > > ReturnsGivenSequentialResult <T>(
     this ISetupSequentialResult <IResult <IQueryable <T> > > setupSequence,
     bool success,
     IEnumerable <T> entityCollection
     ) where T : Entity
 {
     return(setupSequence.Returns(new Result <IQueryable <T> >
     {
         Errors = success ? null : new List <IError> {
             new Error {
                 Key = "ERROR_KEY"
             }
         },
         ResultObject = success ? entityCollection.AsQueryable() : null
     }));
 }
示例#22
0
 /// <summary>
 /// Return a sequence of tasks, once per call.
 /// </summary>
 public static ISetupSequentialResult <ValueTask> PassAsync(
     this ISetupSequentialResult <ValueTask> setup
     )
 {
     return(setup.Returns(() => new ValueTask()));
 }
示例#23
0
 /// <summary>
 /// Return a sequence of tasks, once per call.
 /// </summary>
 public static ISetupSequentialResult <Task> PassAsync(
     this ISetupSequentialResult <Task> setup
     )
 {
     return(setup.Returns(() => Task.FromResult(0)));
 }