public async Task UpdateNewExplorersTeam_Ok()
        {
            //Arrange
            var id            = Guid.NewGuid();
            var explorersTeam = new ExplorersTeam
            {
                Id   = id,
                Name = "Test",
            };

            //Act
            await m_repository.CreateAsync(explorersTeam);

            var(_, explorersTeams) = await m_repository.SearchAsync(new Pagination(), new Ordering(), new ExplorersTeamFilter
            {
                SearchTerm = id.ToString()
            });

            explorersTeam.Name = "Modified";
            await m_repository.UpdateAsync(new List <ExplorersTeam> {
                explorersTeam
            });

            var(_, updatedResponse) = await m_repository.SearchAsync(new Pagination(), new Ordering(), new ExplorersTeamFilter
            {
                SearchTerm = id.ToString()
            });

            //Assert
            Assert.Equal(id, explorersTeams.First().Id);
            Assert.Equal("Modified", explorersTeams.First().Name);
            await m_repository.DeleteAsync(updatedResponse.First());
        }
        public async void CreateWithValidData_Ok()
        {
            //Arrange
            var explorersTeam = new ExplorersTeam
            {
                Id   = Guid.NewGuid(),
                Name = "Test"
            };

            m_explorersTeamRepositoryMock.Setup(t => t.SearchAsync(It.IsAny <Pagination>(), It.IsAny <Ordering>(), It.IsAny <ExplorersTeamFilter>()))
            .ReturnsAsync(new Tuple <int, List <ExplorersTeam> >(1, new List <ExplorersTeam> {
                explorersTeam
            }));
            //Act
            await m_robotService.CreateRobotAsync(new Robot
            {
                Id              = Guid.NewGuid(),
                Name            = "Test",
                ExplorersTeamId = explorersTeam.Id,
                ProductNumber   = "123"
            });

            //Assert
            m_repositoryMock.Verify(t => t.CreateAsync(It.IsAny <Robot>()), Times.Once);
        }
        public async Task AddAndDeleteExplorersTeam_Ok()
        {
            //Arrange
            var id            = Guid.NewGuid();
            var explorersTeam = new ExplorersTeam
            {
                Id   = id,
                Name = "Test"
            };

            //Act
            await m_repository.CreateAsync(explorersTeam);

            //Assert
            var(_, explorersTeams) = await m_repository.SearchAsync(new Pagination(), new Ordering(), new ExplorersTeamFilter
            {
                SearchTerm = id.ToString()
            });

            Assert.Equal(id, explorersTeams.First().Id);
            Assert.Equal("Test", explorersTeams.First().Name);
            await m_repository.DeleteAsync(explorersTeam);

            var(_, emptyResponse) = await m_repository.SearchAsync(new Pagination(), new Ordering(), new ExplorersTeamFilter
            {
                SearchTerm = id.ToString()
            });

            Assert.Empty(emptyResponse);
        }
        public async void UpdateInvalidRobot_Throws()
        {
            //Arrange
            m_repositoryMock.Setup(t => t.SearchAsync(It.IsAny <Pagination>(), It.IsAny <Ordering>(), It.IsAny <IFilter <Robot> >()))
            .ReturnsAsync(new Tuple <int, List <Robot> >(0, new List <Robot>()));
            var explorersTeam = new ExplorersTeam
            {
                Id   = Guid.NewGuid(),
                Name = "Test"
            };

            m_explorersTeamRepositoryMock.Setup(t => t.SearchAsync(It.IsAny <Pagination>(), It.IsAny <Ordering>(), It.IsAny <ExplorersTeamFilter>()))
            .ReturnsAsync(new Tuple <int, List <ExplorersTeam> >(1, new List <ExplorersTeam> {
                explorersTeam
            }));

            //Act
            var robotDoesNotExist = m_robotService.UpdateRobotAsync(new Robot
            {
                Id   = Guid.NewGuid(),
                Name = "Test"
            });

            //Assert
            await Assert.ThrowsAsync <ValidationException>(async() => await robotDoesNotExist);
        }
        public async void CreateWithRepositoryFail_Throws()
        {
            //Arrange
            m_repositoryMock.Setup(t => t.CreateAsync(It.IsAny <Robot>())).ThrowsAsync(new Exception("Mocked"));
            var explorersTeam = new ExplorersTeam
            {
                Id   = Guid.NewGuid(),
                Name = "Test"
            };

            m_explorersTeamRepositoryMock.Setup(t => t.SearchAsync(It.IsAny <Pagination>(), It.IsAny <Ordering>(), It.IsAny <ExplorersTeamFilter>()))
            .ReturnsAsync(new Tuple <int, List <ExplorersTeam> >(1, new List <ExplorersTeam> {
                explorersTeam
            }));

            //Act
            var repoFailed = m_robotService.CreateRobotAsync(new Robot
            {
                Id              = Guid.NewGuid(),
                Name            = "Test",
                ExplorersTeamId = explorersTeam.Id,
                ProductNumber   = "123"
            });

            //Assert
            await Assert.ThrowsAsync <Exception>(async() => await repoFailed);
        }
Пример #6
0
        public async void SearchExplorersTeam_Ok()
        {
            //Arrange
            var explorersTeam = new ExplorersTeam
            {
                Id   = Guid.NewGuid(),
                Name = "A"
            };

            m_repositoryMock.Setup(t => t.SearchAsync(It.IsAny <Pagination>(), It.IsAny <Ordering>(), It.IsAny <IFilter <ExplorersTeam> >()))
            .ReturnsAsync(new Tuple <int, List <ExplorersTeam> >(1, new List <ExplorersTeam> {
                explorersTeam
            }));

            //Act
            var(count, explorersTeams) = await m_explorersTeamService.SearchExplorersTeamAsync(new Pagination(), new Ordering(), new ExplorersTeamFilter
            {
                SearchTerm = explorersTeam.Id.ToString()
            });

            //Assert
            m_repositoryMock.Verify(t => t.SearchAsync(It.IsAny <Pagination>(), It.IsAny <Ordering>(), It.IsAny <ExplorersTeamFilter>()), Times.Once);
            Assert.Equal(1, count);
            Assert.Equal(explorersTeam, explorersTeams.First());
        }
Пример #7
0
        private ExplorersTeam UpdateExplorersTeam(List <Robot> robots, Captain captain)
        {
            ExplorersTeam explorersTeam = appDbContext.ExplorersTeams.Where(et => et.Captain.Id == captain.Id).FirstOrDefault();
            List <Robot>  robotsInDb    = appDbContext.Robots.ToList();
            List <Robot>  planetRobots  = new List <Robot>();

            foreach (Robot robot in robots)
            {
                var robotToAdd = robotsInDb.Where(r => r.Id == robot.Id).FirstOrDefault();
                robotToAdd.IsAvailable = false;

                planetRobots.Add(robotToAdd);
            }

            if (explorersTeam == null)
            {
                explorersTeam = new ExplorersTeam
                {
                    Captain = captain,
                    Robots  = planetRobots
                };
            }

            explorersTeam.Robots = planetRobots;

            return(explorersTeam);
        }
        public async void CreateWithValidData_Ok()
        {
            //Arrange
            var explorersTeam = new ExplorersTeam
            {
                Id   = Guid.NewGuid(),
                Name = "Test"
            };

            m_explorersTeamRepositoryMock.Setup(t => t.SearchAsync(It.IsAny <Pagination>(), It.IsAny <Ordering>(), It.IsAny <ExplorersTeamFilter>()))
            .ReturnsAsync(new Tuple <int, List <ExplorersTeam> >(1, new List <ExplorersTeam> {
                explorersTeam
            }));
            m_repositoryMock.Setup(t => t.SearchAsync(It.IsAny <Pagination>(), It.IsAny <Ordering>(), It.IsAny <CaptainFilter>()))
            .ReturnsAsync(new Tuple <int, List <Captain> >(0, new List <Captain>()));
            //Act
            await m_captainService.CreateCaptainAsync(new Captain
            {
                Id              = Guid.NewGuid(),
                Name            = "Test",
                ExplorersTeamId = explorersTeam.Id,
                Email           = "*****@*****.**",
                Age             = 40
            });

            //Assert
            m_repositoryMock.Verify(t => t.CreateAsync(It.IsAny <Captain>()), Times.Once);
        }
        public async void CreateWithRepositoryFail_Throws()
        {
            //Arrange
            m_repositoryMock.Setup(t => t.CreateAsync(It.IsAny <Captain>())).ThrowsAsync(new Exception("Mocked"));
            var explorersTeam = new ExplorersTeam
            {
                Id   = Guid.NewGuid(),
                Name = "Test"
            };

            m_explorersTeamRepositoryMock.Setup(t => t.SearchAsync(It.IsAny <Pagination>(), It.IsAny <Ordering>(), It.IsAny <ExplorersTeamFilter>()))
            .ReturnsAsync(new Tuple <int, List <ExplorersTeam> >(1, new List <ExplorersTeam> {
                explorersTeam
            }));
            m_repositoryMock.Setup(t => t.SearchAsync(It.IsAny <Pagination>(), It.IsAny <Ordering>(), It.IsAny <CaptainFilter>()))
            .ReturnsAsync(new Tuple <int, List <Captain> >(0, new List <Captain>()));
            //Act
            var repoFailed = m_captainService.CreateCaptainAsync(new Captain
            {
                Id              = Guid.NewGuid(),
                Name            = "Test",
                ExplorersTeamId = explorersTeam.Id,
                Age             = 40,
                Email           = "*****@*****.**"
            });

            //Assert
            await Assert.ThrowsAsync <Exception>(async() => await repoFailed);
        }
        public async void CreateWithInvalidData_Throws()
        {
            //Arrange
            var explorersTeam = new ExplorersTeam
            {
                Id   = Guid.NewGuid(),
                Name = "Test"
            };

            m_explorersTeamRepositoryMock.Setup(t => t.SearchAsync(It.IsAny <Pagination>(), It.IsAny <Ordering>(), It.IsAny <ExplorersTeamFilter>()))
            .ReturnsAsync(new Tuple <int, List <ExplorersTeam> >(1, new List <ExplorersTeam> {
                explorersTeam
            }));

            //Act
            var invalidData = m_captainService.CreateCaptainAsync(new Captain
            {
                Id              = Guid.NewGuid(),
                Name            = "Test",
                ExplorersTeamId = explorersTeam.Id,
                Email           = "@invalid"
            });

            //Assert
            await Assert.ThrowsAsync <ValidationException>(async() => await invalidData);

            m_repositoryMock.Verify(t => t.CreateAsync(It.IsAny <Captain>()), Times.Never);
        }
Пример #11
0
        public async void UpdateWithValidData_Ok()
        {
            //Arrange
            var explorersTeam = new ExplorersTeam
            {
                Id   = Guid.NewGuid(),
                Name = "Test"
            };
            var shuttle = new Shuttle
            {
                Id              = Guid.NewGuid(),
                Name            = "Test",
                ExplorersTeamId = explorersTeam.Id,
                ShipNumber      = "A1"
            };

            m_repositoryMock.Setup(t => t.SearchAsync(It.IsAny <Pagination>(), It.IsAny <Ordering>(), It.IsAny <IFilter <Shuttle> >()))
            .ReturnsAsync(new Tuple <int, List <Shuttle> >(1, new List <Shuttle> {
                shuttle
            }));
            m_explorersTeamRepositoryMock.Setup(t => t.SearchAsync(It.IsAny <Pagination>(), It.IsAny <Ordering>(), It.IsAny <ExplorersTeamFilter>()))
            .ReturnsAsync(new Tuple <int, List <ExplorersTeam> >(1, new List <ExplorersTeam> {
                explorersTeam
            }));

            //Act
            await m_shuttleService.UpdateShuttleAsync(shuttle);

            //Assert
            m_repositoryMock.Verify(t => t.UpdateAsync(It.IsAny <List <Shuttle> >()), Times.Once);
        }
Пример #12
0
        public IActionResult CreatePlanet([FromBody] AddPlanetViewModel planetViewModel)
        {
            try
            {
                Status        status            = appDbContext.Statuses.Where(s => s.Id == planetViewModel.StatusId).FirstOrDefault();
                Captain       captain           = appDbContext.Captains.Where(c => c.Id == planetViewModel.CaptainId.ToString()).FirstOrDefault();
                List <Robot>  robots            = appDbContext.Robots.ToList();
                ExplorersTeam explorersTeam     = new ExplorersTeam();
                var           robotsOfNewPlanet = new List <Robot>();

                if (captain != null)
                {
                    foreach (Robot robot in planetViewModel.Robots)
                    {
                        var robotToAdd = robots.Where(r => r.Id == robot.Id).FirstOrDefault();
                        robotToAdd.IsAvailable = false;

                        robotsOfNewPlanet.Add(robotToAdd);
                    }

                    captain.IsAvailable = false;
                    explorersTeam       = new ExplorersTeam
                    {
                        Captain = captain,
                        Robots  = robotsOfNewPlanet
                    };
                }
                else
                {
                    explorersTeam.Captain = null;
                    explorersTeam.Robots  = null;
                }

                Planet planet = new Planet
                {
                    Name          = planetViewModel.Name,
                    ImageUrl      = planetViewModel.ImageUrl,
                    Description   = planetViewModel.Description,
                    Status        = status,
                    ExplorersTeam = explorersTeam
                };

                appDbContext.Planets.Add(planet);
                appDbContext.SaveChanges();

                return(new OkObjectResult("Planet succesfully added."));
            }
            catch (Exception exc)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError));
            };
        }
Пример #13
0
        public IActionResult UpdatePlanet(int id, [FromBody] UpdatePlanetViewModel planetViewModel)
        {
            try
            {
                Planet planetToUpdate = appDbContext.Planets.Where(p => p.Id == id)
                                        .Include(p => p.ExplorersTeam)
                                        .ThenInclude(p => p.Captain)
                                        .Include(p => p.ExplorersTeam)
                                        .ThenInclude(p => p.Robots)
                                        .FirstOrDefault();

                Status        status        = appDbContext.Statuses.Where(s => s.Id == planetViewModel.StatusId).FirstOrDefault();
                ExplorersTeam explorersTeam = null;

                IfCaptainHasChangedSetLastCaptainAvaialable(planetViewModel.CaptainId, planetViewModel.LastCaptainId);
                SetRobotsAvailable(planetViewModel.RobotsToSetAvailable);

                Captain captain = appDbContext.Captains.Where(c => c.Id == planetViewModel.CaptainId.ToString()).FirstOrDefault();
                if (captain != null)
                {
                    captain.IsAvailable          = false;
                    explorersTeam                = UpdateExplorersTeam(planetViewModel.Robots, captain);
                    planetToUpdate.ExplorersTeam = explorersTeam;
                }
                else
                {
                    planetToUpdate.ExplorersTeam.Captain = null;
                    planetToUpdate.ExplorersTeam.Robots  = null;
                }

                planetToUpdate.Name        = planetViewModel.Name;
                planetToUpdate.ImageUrl    = planetViewModel.ImageUrl;
                planetToUpdate.Description = planetViewModel.Description;
                planetToUpdate.Status      = status;

                appDbContext.SaveChanges();

                return(new OkObjectResult("Planet succesfully added."));
            }
            catch (Exception exc)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError));
            };
        }
Пример #14
0
        public async void UpdateWithValidData_Ok()
        {
            //Arrange
            var explorersTeam = new ExplorersTeam
            {
                Id   = Guid.NewGuid(),
                Name = "A"
            };

            m_repositoryMock.Setup(t => t.SearchAsync(It.IsAny <Pagination>(), It.IsAny <Ordering>(), It.IsAny <IFilter <ExplorersTeam> >()))
            .ReturnsAsync(new Tuple <int, List <ExplorersTeam> >(1, new List <ExplorersTeam> {
                explorersTeam
            }));

            //Act
            await m_explorersTeamService.UpdateExplorersTeamAsync(explorersTeam);

            //Assert
            m_repositoryMock.Verify(t => t.UpdateAsync(It.IsAny <List <ExplorersTeam> >()), Times.Once);
        }
 public async Task DeleteAsync(ExplorersTeam entity)
 {
     m_dataContext.ExplorersTeams.Remove(entity);
     await m_dataContext.SaveChangesAsync();
 }
        public async Task CreateAsync(ExplorersTeam entity)
        {
            await m_dataContext.ExplorersTeams.AddAsync(entity);

            await m_dataContext.SaveChangesAsync();
        }