示例#1
0
        public async Task AddMembersToClubAsync_CommandResult_UsersToAddNotFoundByUsername()
        {
            //arrange
            string existingClubName = "C# Knights";
            var    clubsToPreload   = new Club[] { new Club {
                                                       Name = existingClubName
                                                   } };
            var members = new User[] { new User {
                                           Username = "******"
                                       } };
            IEntityGateway entityGateway = await InMemoryEntityGatewayFactory.CreateEntityGatewayAsync(clubsToPreload);

            IAddMembersToClubPresenter  presenter  = new FakeAddMembersToClubPresenter(_output);
            IAddMembersToClubInteractor interactor = new AddMembersToClubInteractor(presenter, entityGateway);
            AddMembersToClubInputModel  inputModel = new AddMembersToClubInputModel {
                ClubModel = new Domain.Model.ClubModel {
                    Name = existingClubName
                }, UserModelsToAdd = members.Select(member => member.GetModel()).ToList()
            };

            //act
            var result = await interactor.AddMembersToClubAsync(inputModel);

            //assert
            Assert.NotNull(result);
            Assert.True(result.Status == Application.Common.CommandResultStatusCode.UsersInListNotFound);
        }
示例#2
0
        public async Task AddMembersToClubAsync_CommandResult_ClubNotFoundById()
        {
            //arrange
            var    nonExistingClubId      = Guid.NewGuid();
            string existingMemberUsername = "******";
            var    members = new User[] { new User {
                                              Username = existingMemberUsername
                                          } };
            IEntityGateway entityGateway = await InMemoryEntityGatewayFactory.CreateEntityGatewayAsync(members);

            IAddMembersToClubPresenter  presenter  = new FakeAddMembersToClubPresenter(_output);
            IAddMembersToClubInteractor interactor = new AddMembersToClubInteractor(presenter, entityGateway);
            AddMembersToClubInputModel  inputModel = new AddMembersToClubInputModel {
                ClubModel = new Domain.Model.ClubModel {
                    Id = nonExistingClubId
                }, UserModelsToAdd = members.Select(member => member.GetModel()).ToList()
            };

            //act
            var result = await interactor.AddMembersToClubAsync(inputModel);

            //assert
            Assert.NotNull(result);
            Assert.True(result.Status == Application.Common.CommandResultStatusCode.ClubNotFound);
        }
示例#3
0
        public async Task AddMembersToClubAsync_ThrowsException_NullInput()
        {
            //arrange
            IEntityGateway              entityGateway = InMemoryEntityGatewayFactory.CreateEntityGateway();
            IAddMembersToClubPresenter  presenter     = new FakeAddMembersToClubPresenter(_output);
            IAddMembersToClubInteractor interactor    = new AddMembersToClubInteractor(presenter, entityGateway);
            AddMembersToClubInputModel  inputModel    = null;

            //act
            async Task <CommandResult <AddMembersToClubOutputModel> > function() => await interactor.AddMembersToClubAsync(inputModel);

            //assert
            await Assert.ThrowsAsync <ArgumentNullException>(function);
        }
示例#4
0
        public async Task AddMembersToClubAsync_CommandResult_MissingClubFromInput1()
        {
            //arrange
            IEntityGateway              entityGateway = InMemoryEntityGatewayFactory.CreateEntityGateway();
            IAddMembersToClubPresenter  presenter     = new FakeAddMembersToClubPresenter(_output);
            IAddMembersToClubInteractor interactor    = new AddMembersToClubInteractor(presenter, entityGateway);
            AddMembersToClubInputModel  inputModel    = new AddMembersToClubInputModel();

            //act
            var result = await interactor.AddMembersToClubAsync(inputModel);

            //assert
            Assert.NotNull(result);
            Assert.True(result.Status == Application.Common.CommandResultStatusCode.MissingClub);
        }
        // methods
        public async Task <CommandResult <AddMembersToClubOutputModel> > AddMembersToClubAsync(AddMembersToClubInputModel inputModel)
        {
            _inputModel = inputModel ?? throw new ArgumentNullException(nameof(inputModel));


            if (IsClubMissingFromInput())
            {
                return(PresentRequiredClubMissingResult());
            }


            if (AreAllUsersToAddMissingFromInput())
            {
                return(PresentRequiredUsersToAddMissingResult());
            }


            if (!await LoadClubFromStorageByInputModelAsync())
            {
                return(PresentClubNotFoundResult());
            }


            if (!await LoadUsersFromStorageByInputModelAsync())
            {
                return(PresentUsersInListNotFoundResult());
            }


            foreach (var user in _loadedUsers)
            {
                var membership = new Membership {
                    UserId = user.Id
                };
                _loadedClub.Memberships.Add(membership);
            }

            if (!_loadedClub.IsValid)
            {
                return(PresentValidationErrors());
            }


            throw new NotImplementedException();
        }
示例#6
0
        public async Task AddMembersToClubAsync_CommandResult_MissingUsersToAddFromInput2()
        {
            //arrange
            string existingClubName = "C# Knights";
            var    clubsToPreload   = new Club[] { new Club {
                                                       Name = existingClubName
                                                   } };
            IEntityGateway entityGateway = await InMemoryEntityGatewayFactory.CreateEntityGatewayAsync(clubsToPreload);

            IAddMembersToClubPresenter  presenter  = new FakeAddMembersToClubPresenter(_output);
            IAddMembersToClubInteractor interactor = new AddMembersToClubInteractor(presenter, entityGateway);
            AddMembersToClubInputModel  inputModel = new AddMembersToClubInputModel {
                ClubModel = new Domain.Model.ClubModel {
                    Name = existingClubName
                }, UserModelsToAdd = null
            };

            //act
            var result = await interactor.AddMembersToClubAsync(inputModel);

            //assert
            Assert.NotNull(result);
            Assert.True(result.Status == Application.Common.CommandResultStatusCode.MissingUsersToAdd);
        }