예제 #1
0
        /// <inheritdoc/>
        public override async Task <IEnumerable <MeUser> > Handle(UsersRetrievalQuery param)
        {
            if (param == null)
            {
                throw new ArgumentNullException(nameof(param));
            }

            IEnumerable <MeUser> result;

            if (param.ForLookup)
            {
                // Need to include permissions to ensure lookups can be filtered.
                result = await GetItemsAsync <MeUser>(x => true, user => new
                {
                    id          = user.UserId,
                    first_name  = user.FirstName,
                    last_name   = user.LastName,
                    gmc_number  = user.GmcNumber,
                    permissions = user.Permissions,
                });
            }
            else
            {
                result = await GetItemsAsync <MeUser>(x => true);
            }

            return(result);
        }
        public async Task Handle_ReturnsUsers(bool forLookup)
        {
            // Arrange
            var query = new UsersRetrievalQuery(forLookup, null);

            // Act
            var results = (await Service.Handle(query)).ToList();

            // Assert
            results.Should().NotBeNull();
            results.Count.Should().Be(2);
            var user1 = results.Single(user => user.UserId == "userId1");

            user1.FirstName.Should().Be("barry");
            user1.LastName.Should().Be("stow");
            user1.GmcNumber.Should().Be("GmcNumber1");
            var user2 = results.Single(user => user.UserId == "userId2");

            user2.FirstName.Should().Be("john");
            user2.LastName.Should().Be("battye");
            user2.GmcNumber.Should().Be("GmcNumber2");

            if (!forLookup)
            {
                results.First(u => u.UserId == "userId1").Email.Should().Be("email1");
                results.First(u => u.UserId == "userId1").GmcNumber.Should().Be("GmcNumber1");
            }
        }