public async Task <IHttpActionResult> Get([FromUri] AccountQueryViewModel model)
        {
            model = model ?? new AccountQueryViewModel(); // super/system admins can pass null to get all accounts

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (model.UserId.HasValue)
            {
                var user = await _userService.GetUser(model.UserId.Value).ConfigureAwait(false);

                if (user == null)
                {
                    return(BadRequest("The specified user was not found."));
                }
            }

            var accountQueryOptions = _mapping.Map <AccountQueryOptions>(model);
            var accounts            = await _accountService.GetAccounts(accountQueryOptions).ToPagedListAsync(model).ConfigureAwait(false);

            var retVal = _mapping.Map <PagedListViewModel <AccountListViewModel> >(accounts);

            return(Ok(retVal));
        }
Example #2
0
        public async Task Get_ShouldReturnListOfAccounts()
        {
            // Arrange
            var userId   = Guid.NewGuid();
            var account1 = new BuyerAccount {
                CompanyName = "Brandscreen"
            };
            var account2 = new BuyerAccount {
                CompanyName = "WJsHome"
            };
            var accounts = new List <BuyerAccount> {
                account1, account2
            };

            var model = new AccountQueryViewModel {
                UserId = userId
            };

            Mock.Mock <IAccountService>().Setup(x => x.GetAccounts(It.IsAny <AccountQueryOptions>()))
            .Returns(accounts.ToAsyncEnumerable());
            Mock.Mock <IUserService>().Setup(x => x.GetUser(userId)).Returns(Task.FromResult(new User()));

            // Act
            var retVal = await Controller.Get(model);

            // Assert
            Assert.That(retVal, Is.Not.Null);
            Assert.That(retVal, Is.TypeOf <OkNegotiatedContentResult <PagedListViewModel <AccountListViewModel> > >());
            var content = ((OkNegotiatedContentResult <PagedListViewModel <AccountListViewModel> >)retVal).Content;

            Assert.That(content.TotalItemCount, Is.EqualTo(2));
            var data = content.Data.ToList();

            Assert.That(data[0].CompanyName, Is.EqualTo(account1.CompanyName));
            Assert.That(data[1].CompanyName, Is.EqualTo(account2.CompanyName));
        }