Exemplo n.º 1
0
        public async Task GetUsersAsync_Test()
        {
            //Arrange
            var feedIterator = CreateFeedIteratorWithResponse(Fixture.CreateMany <string>());

            Container.GetItemQueryIterator <string>(Arg.Any <QueryDefinition>(), requestOptions: Arg.Any <QueryRequestOptions>())
            .ReturnsForAnyArgs(feedIterator);

            var users            = Fixture.CreateMany <User>().ToArray();
            var userFeedIterator = CreateFeedIteratorWithResponse(users);

            Container.GetItemQueryIterator <User>(Arg.Any <QueryDefinition>(), requestOptions: Arg.Any <QueryRequestOptions>())
            .ReturnsForAnyArgs(userFeedIterator);

            var mappedUser = Fixture.Create <Models.UserInfo>();

            Mapper.Map <Models.UserInfo>(Arg.Any <User>()).ReturnsForAnyArgs(mappedUser);

            //Act
            var result = await _sut.GetUsersAsync(ApplicationId, _id).ConfigureAwait(false);

            //Assert
            result.Should().NotBeNull();
            result.Should().BeOfType <OkObjectResult>();

            var results = ((OkObjectResult)result).Value as Models.UserInfo[];

            results.Should().NotBeNullOrEmpty();
            results.Length.Should().Be(users.Length);
            results.All(u => ReferenceEquals(u, mappedUser)).Should().BeTrue();

            Container.Received(1)
            .GetItemQueryIterator <string>(Arg.Any <QueryDefinition>(), requestOptions: Arg.Any <QueryRequestOptions>());

            Container.Received(1)
            .GetItemQueryIterator <User>(Arg.Any <QueryDefinition>(), requestOptions: Arg.Any <QueryRequestOptions>());

            Mapper.Received(users.Length).Map <Models.UserInfo>(Arg.Any <User>());
        }