public void EnsureUserExistsAsync_UserDoesNotExist_ReturnedAfterCreation() { IDbContext dbContext = Substitute.For <IDbContext>(); UserInfo userInfo = new UserInfo(); userInfo.AuthId = Guid.NewGuid().ToString(); userInfo.Name = Guid.NewGuid().ToString(); userInfo.Email = Guid.NewGuid().ToString(); UserDbModel userDbModel = new UserDbModel(); userDbModel.Id = Guid.NewGuid().ToString(); userDbModel.AuthId = userInfo.AuthId; UserRepository userRepository = Substitute.For <UserRepository>(); userRepository.GetByAuthIdAsync(dbContext, userInfo.AuthId).Returns <UserDbModel>(x => null); IMapper mapper = CreateMapper(); CreateUserCommand createUserCommand = Substitute.For <CreateUserCommand>(); createUserCommand.ExecuteAsync(dbContext, userInfo.AuthId, userInfo.Name, userInfo.Email).Returns(userDbModel); UserViewService userViewService = new UserViewService(dbContext, mapper, userRepository, createUserCommand); UserViewModel result = userViewService.EnsureUserExistsAsync(userInfo).Result; Assert.AreEqual(userInfo.AuthId, result.AuthId); createUserCommand.Received(1).ExecuteAsync(dbContext, userInfo.AuthId, userInfo.Name, userInfo.Email).Wait(); }
public async Task <UserViewModel> EnsureUserExistsAsync(UserInfo userInfo) { var userModel = await _userRepository.GetByAuthIdAsync(_dbContext, userInfo.AuthId); if (userModel == null) { userModel = await _createUserCommand.ExecuteAsync(this._dbContext, userInfo.AuthId, userInfo.Name, userInfo.Email); } var userViewModel = _mapper.Map <UserViewModel>(userModel); return(userViewModel); }
public async Task <bool> Register(RegisterRequestApiModel user) { var result = false; try { var userData = Mapper.Map <RegisterRequestApiModel, RegisterUserDTO>(user); var dbCommand = new CreateUserCommand(dbContext, userData); result = await dbCommand.ExecuteAsync(); } catch { // TODO: Add log here } return(result); }
public void ExecuteAsync_WithArguments_Creates() { IDbContext dbContext = Substitute.For <IDbContext>(); string authId = Guid.NewGuid().ToString(); string userName = Guid.NewGuid().ToString(); string email = Guid.NewGuid().ToString(); UserDbModel userDbModel = new UserDbModel(); dbContext.When(x => x.InsertAsync(DbSchema.UserContainer, Arg.Any <UserDbModel>())).Do((callInfo) => { Assert.AreEqual(DbSchema.UserContainer, callInfo.ArgAt <string>(0)); userDbModel = callInfo.ArgAt <UserDbModel>(1); }); CreateUserCommand cmd = new CreateUserCommand(); cmd.ExecuteAsync(dbContext, authId, userName, email).Wait(); dbContext.Received(1).InsertAsync(DbSchema.UserContainer, Arg.Any <UserDbModel>()); Assert.AreEqual(authId, userDbModel.AuthId); Assert.AreEqual(userName, userDbModel.UserName); Assert.AreEqual(email, userDbModel.Email); }