示例#1
0
        public IActionResult Post([FromBody] TeamModelIn teamIn)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    Team team = teamIn.TransformToEntity();
                    team = teamService.CreateTeam(team);
                    TeamModelOut modelOut = new TeamModelOut(team);

                    return(CreatedAtRoute("Get", new { id = team.TeamId }, modelOut));
                }
                else
                {
                    return(BadRequest(ModelState));
                }
            }
            catch (NotUniqueException ex)
            {
                return(BadRequest(ex.Message));
            }
            catch (Exception ex)
            {
                return(BadRequest("Ha ocurrido un error" + ex.Message));
            }
        }
示例#2
0
 public IActionResult Put(int id, [FromBody] TeamModelIn modelIn)
 {
     try
     {
         if (ModelState.IsValid)
         {
             Team team = modelIn.TransformToEntity();
             teamService.UpdateTeam(id, team);
             return(Ok("El equipo ha sido modificado"));
         }
         else
         {
             return(BadRequest(ModelState));
         }
     }
     catch (ArgumentException ex)
     {
         return(BadRequest(ex.Message));
     }catch (NotExistsException ex)
     {
         return(BadRequest(ex.Message));
     }catch (NotUniqueException ex)
     {
         return(BadRequest(ex.Message));
     }
 }
示例#3
0
 private TeamDto BuildTransferObject(TeamModelIn team)
 {
     return(new TeamDto()
     {
         id = team.Id, name = team.Name, photo = team.Photo, sportName = team.SportName
     });
 }
        public void CreateTeamWithoutPermissionTeamsController()
        {
            var         teamServicesMock           = new Mock <ITeamServices>();
            var         encounterServicesMock      = new Mock <IEncounterSimpleServices>();
            var         encounterQueryServicesMock = new Mock <IEncounterQueryServices>();
            TeamModelIn teamIn = new TeamModelIn()
            {
                Name = "Cavaliers", SportName = "Futbol"
            };

            teamServicesMock.Setup(t => t.CreateTeam(It.IsAny <TeamDTO>())).Throws(new InsufficientPermissionException());
            ILoginServices login = new LoginServicesMock(mariano);

            var httpContext = new DefaultHttpContext();

            httpContext.Request.Headers["Authorization"] = "";
            var controllerContext = new ControllerContext()
            {
                HttpContext = httpContext,
            };
            var controller = new TeamsController(login, teamServicesMock.Object, encounterServicesMock.Object, encounterQueryServicesMock.Object)
            {
                ControllerContext = controllerContext
            };

            var result = controller.CreateTeam(teamIn);

            teamServicesMock.Verify(t => t.CreateTeam(It.IsAny <TeamDTO>()), Times.AtMostOnce);
            var unauthorizedResult = result as UnauthorizedResult;

            Assert.IsNotNull(unauthorizedResult);
            Assert.AreEqual(401, unauthorizedResult.StatusCode);
        }
示例#5
0
        private TeamModelIn GetTeamModelIn()
        {
            TeamModelIn fake = new TeamModelIn()
            {
                Name = "Internazionale de Milano", SportName = "Soccer", Id = 3, Photo = ""
            };

            return(fake);
        }
示例#6
0
        public IActionResult Put(int teamId, [FromBody] TeamModelIn value)
        {
            IActionResult result;

            if (ModelState.IsValid)
            {
                result = PutValidFormat(teamId, value);
            }
            else
            {
                result = BadRequest(ModelState);
            }
            return(result);
        }
示例#7
0
        public IActionResult Post([FromBody] TeamModelIn team)
        {
            IActionResult result;

            if (ModelState.IsValid)
            {
                SetSession();
                result = AddValidTeam(team);
            }
            else
            {
                result = BadRequest(ModelState);
            }
            return(result);
        }
示例#8
0
        private IActionResult AddValidTeam(TeamModelIn team)
        {
            IActionResult result;

            try
            {
                SetSession();
                result = TryAddTeam(team);
            }
            catch (ServiceException e)
            {
                result = errors.GenerateError(e);
            }
            return(result);
        }
示例#9
0
 public IActionResult ModifyTeam(string id, [FromBody] TeamModelIn team)
 {
     if (!ModelState.IsValid)
     {
         return(BadRequest());
     }
     try
     {
         return(TryToUpdate(team.Map()));
     }
     catch (InsufficientPermissionException)
     {
         return(Unauthorized());
     }
 }
示例#10
0
 public IActionResult CreateTeam(TeamModelIn team)
 {
     if (!ModelState.IsValid)
     {
         return(BadRequest());
     }
     try
     {
         CreateSession();
         return(TryToCreate(team.Map()));
     }
     catch (InsufficientPermissionException)
     {
         return(Unauthorized());
     }
 }
示例#11
0
        private IActionResult TryAddTeam(TeamModelIn team)
        {
            string imgData = team.Photo;

            team.Photo = team.Name + "_" + team.SportName + IMG_EXTENSION;

            TeamDto dto   = BuildTransferObject(team);
            TeamDto added = teamService.AddTeam(dto);

            //if team could be added without exception thrown, then save its image.
            images.SaveImage(team.Photo, imgData);

            TeamModelOut modelOut = BuildTeamModelOut(added);

            return(CreatedAtRoute("GetTeamById", new { id = added.id }, modelOut));
        }
示例#12
0
        public void UnFollowTeamTest()
        {
            //Arrange.
            TeamModelIn input = GetTeamModelIn();

            //Act.
            IActionResult  result   = controller.UnFollowTeam(3);
            OkObjectResult okResult = result as OkObjectResult;
            OkModelOut     okModel  = okResult.Value as OkModelOut;

            //Assert.
            service.Verify(us => us.UnFollowTeam(It.IsAny <string>(), It.IsAny <int>()), Times.Once);
            Assert.IsNotNull(result);
            Assert.IsNotNull(okResult);
            Assert.AreEqual(200, okResult.StatusCode);
            Assert.IsNotNull(okModel);
        }
        public void CreateFailedTeamRequiredFieldsTest()
        {
            //Arrange.
            TeamModelIn modelIn = new TeamModelIn()
            {
                Photo = "/MyResource/DreamTeam.png"
            };

            //We need to force the error in de ModelState.
            controller.ModelState.AddModelError("", "Error");

            //Act.
            IActionResult          result     = controller.Post(modelIn);
            BadRequestObjectResult badRequest = result as BadRequestObjectResult;

            //Assert.
            Assert.IsNotNull(badRequest);
            Assert.AreEqual(400, badRequest.StatusCode);
        }
        public void CreateValidTeamTest()
        {
            //Arrange.
            TeamModelIn input = CreateTeamModelIn();

            teamsService.Setup(r => r.AddTeam(It.IsAny <TeamDto>())).Returns(team);

            //Act.
            IActionResult        result        = controller.Post(input);
            CreatedAtRouteResult createdResult = result as CreatedAtRouteResult;
            TeamModelOut         modelOut      = createdResult.Value as TeamModelOut;

            //Assert
            teamsService.Verify(r => r.AddTeam(It.IsAny <TeamDto>()), Times.Once);
            Assert.IsNotNull(createdResult);
            Assert.AreEqual("GetTeamById", createdResult.RouteName);
            Assert.AreEqual(201, createdResult.StatusCode);
            Assert.AreEqual(input.Name, modelOut.Name);
        }
示例#15
0
        private IActionResult TryPut(int teamId, TeamModelIn team)
        {
            string imgData = team.Photo;

            team.Id = teamId;

            TeamDto dto = BuildTransferObject(team);

            dto.photo = team.Name + "_" + team.SportName + IMG_EXTENSION;

            TeamDto modified = teamService.Modify(dto);

            //if team could be added without exception thrown, then save its image.
            images.SaveImage(team.Photo, imgData);

            TeamModelOut output = BuildTeamModelOut(modified);

            return(Ok(output));
        }
        public void PutTest()
        {
            //Arrange.
            TeamModelIn input = CreateTeamModelIn();

            teamsService.Setup(r => r.Modify(It.IsAny <TeamDto>())).Returns(team);


            //Act.
            IActionResult  result   = controller.Put(2, input);
            OkObjectResult okResult = result as OkObjectResult;
            TeamModelOut   modified = okResult.Value as TeamModelOut;

            //Assert.
            teamsService.Verify(r => r.Modify(It.IsAny <TeamDto>()), Times.Once);
            teamsService.Verify(r => r.AddTeam(It.IsAny <TeamDto>()), Times.Never);
            Assert.IsNotNull(result);
            Assert.IsNotNull(okResult);
            Assert.AreEqual(200, okResult.StatusCode);
        }
        public void CreateNoDataAccessTest()
        {
            //Arrange.
            Exception toThrow = new DataInaccessibleException();

            teamsService.Setup(tr => tr.AddTeam(It.IsAny <TeamDto>())).Throws(new ServiceException(toThrow.Message, ErrorType.DATA_INACCESSIBLE));
            TeamModelIn input = CreateTeamModelIn();

            //Act.
            IActionResult result = controller.Post(input);
            ObjectResult  noData = result as ObjectResult;
            ErrorModelOut error  = noData.Value as ErrorModelOut;

            //Assert.
            Assert.IsNotNull(result);
            Assert.IsNotNull(noData);
            Assert.AreEqual(500, noData.StatusCode);
            Assert.IsNotNull(error);
            Assert.AreEqual(toThrow.Message, error.ErrorMessage);
        }
        public void PutWrongFormatTest()
        {
            //Arrange.
            TeamModelIn modelIn = new TeamModelIn()
            {
                Photo = "/MyResource/DreamTeam.png"
            };

            //We need to force the error in de ModelState.
            controller.ModelState.AddModelError("", "Error");

            //Act.
            IActionResult          result        = controller.Put(2, modelIn);
            BadRequestObjectResult createdResult = result as BadRequestObjectResult;

            //Assert.
            Assert.IsNotNull(result);
            Assert.IsNotNull(createdResult);
            Assert.AreEqual(400, createdResult.StatusCode);
        }
        public void CreateAlreadyExistingTeam()
        {
            //Arrange.
            Exception toThrow = new TeamAlreadyExistsException();

            teamsService.Setup(tr => tr.AddTeam(It.IsAny <TeamDto>())).Throws(new ServiceException(toThrow.Message, ErrorType.ENTITY_ALREADY_EXISTS));
            TeamModelIn input = CreateTeamModelIn();

            //Act.
            IActionResult          result     = controller.Post(input);
            BadRequestObjectResult badRequest = result as BadRequestObjectResult;
            ErrorModelOut          error      = badRequest.Value as ErrorModelOut;

            //Assert.
            Assert.IsNotNull(result);
            Assert.IsNotNull(badRequest);
            Assert.AreEqual(400, badRequest.StatusCode);
            Assert.IsNotNull(error);
            Assert.AreEqual(toThrow.Message, error.ErrorMessage);
        }
        public void PutAddTest()
        {
            //Arrange.
            Exception internalEx = new TeamNotFoundException();

            teamsService.Setup(r => r.Modify(It.IsAny <TeamDto>())).Throws(new ServiceException(internalEx.Message, ErrorType.ENTITY_NOT_FOUND));
            teamsService.Setup(r => r.AddTeam(It.IsAny <TeamDto>())).Returns(team);
            TeamModelIn input = CreateTeamModelIn();

            //Act.
            IActionResult        result        = controller.Put(2, input);
            CreatedAtRouteResult createdResult = result as CreatedAtRouteResult;
            TeamModelOut         modelOut      = createdResult.Value as TeamModelOut;

            //Assert.
            teamsService.Verify(r => r.Modify(It.IsAny <TeamDto>()), Times.Once);
            teamsService.Verify(r => r.AddTeam(It.IsAny <TeamDto>()), Times.Once);
            Assert.AreEqual("GetTeamById", createdResult.RouteName);
            Assert.AreEqual(201, createdResult.StatusCode);
            Assert.AreEqual(2, modelOut.Id);
        }
示例#21
0
        public void UnfollowNotFollowedTest()
        {
            //Arrange.
            TeamModelIn input   = GetTeamModelIn();
            Exception   toThrow = new TeamNotFollowedException();

            service.Setup(us => us.UnFollowTeam(It.IsAny <string>(), It.IsAny <int>())).Throws(toThrow);

            //Act.
            IActionResult        result   = controller.UnFollowTeam(3);
            NotFoundObjectResult notFound = result as NotFoundObjectResult;
            ErrorModelOut        error    = notFound.Value as ErrorModelOut;

            //Assert.
            service.Verify(us => us.UnFollowTeam(It.IsAny <string>(), It.IsAny <int>()), Times.Once);
            Assert.IsNotNull(result);
            Assert.IsNotNull(notFound);
            Assert.AreEqual(404, notFound.StatusCode);
            Assert.IsNotNull(error);
            Assert.AreEqual(error.ErrorMessage, toThrow.Message);
        }
示例#22
0
        public void UnfollowTeamNoDataAccessTest()
        {
            //Arrange.
            Exception internalEx = new DataInaccessibleException();
            Exception toThrow    = new ServiceException(internalEx.Message, ErrorType.DATA_INACCESSIBLE);

            service.Setup(us => us.UnFollowTeam(It.IsAny <string>(), It.IsAny <int>())).Throws(toThrow);
            TeamModelIn input = GetTeamModelIn();

            //Act.
            IActionResult result  = controller.UnFollowTeam(3);
            ObjectResult  notData = result as ObjectResult;
            ErrorModelOut error   = notData.Value as ErrorModelOut;

            //Assert.
            Assert.IsNotNull(result);
            Assert.IsNotNull(notData);
            Assert.AreEqual(500, notData.StatusCode);
            Assert.IsNotNull(error);
            Assert.AreEqual(toThrow.Message, error.ErrorMessage);
        }
        public void CreateTeamOkTeamsController()
        {
            var teamServicesMock           = new Mock <ITeamServices>();
            var encounterServicesMock      = new Mock <IEncounterSimpleServices>();
            var encounterQueryServicesMock = new Mock <IEncounterQueryServices>();

            TeamModelIn teamIn = new TeamModelIn()
            {
                Name = "Cavaliers", SportName = "Futbol"
            };

            teamServicesMock.Setup(t => t.CreateTeam(teamIn.Map())).Returns(new TeamDTO()
            {
                Name = "Cavaliers", SportName = "Futbol"
            });
            ILoginServices login = new LoginServicesMock(mariano);

            var httpContext = new DefaultHttpContext();

            httpContext.Request.Headers["Authorization"] = "";
            var controllerContext = new ControllerContext()
            {
                HttpContext = httpContext,
            };
            var controller = new TeamsController(login, teamServicesMock.Object, encounterServicesMock.Object, encounterQueryServicesMock.Object)
            {
                ControllerContext = controllerContext,
            };

            var result = controller.CreateTeam(teamIn);

            teamServicesMock.Verify(t => t.CreateTeam(teamIn.Map()), Times.AtMostOnce);
            var createdResult = result as CreatedAtRouteResult;
            var teamOut       = createdResult.Value as TeamDTO;

            Assert.IsNotNull(createdResult);
            Assert.AreEqual("GetTeam", createdResult.RouteName);
            Assert.AreEqual(201, createdResult.StatusCode);
            Assert.AreEqual(teamIn.Name, teamOut.Name);
        }
示例#24
0
        private IActionResult PutValidFormat(int teamId, TeamModelIn team)
        {
            IActionResult result;

            try
            {
                SetSession();
                result = TryPut(teamId, team);
            }
            catch (ServiceException e)
            {
                if (e.Error.Equals(ErrorType.ENTITY_NOT_FOUND))
                {
                    result = Post(team);
                }
                else
                {
                    result = errors.GenerateError(e);
                }
            }

            return(result);
        }
        public void UpdateTeamDoesNotExistsTeamsController()
        {
            var teamServicesMock           = new Mock <ITeamServices>();
            var encounterServicesMock      = new Mock <IEncounterSimpleServices>();
            var encounterQueryServicesMock = new Mock <IEncounterQueryServices>();

            TeamModelIn team1 = new TeamModelIn()
            {
                Name = "Team1", SportName = "Futbol"
            };

            string teamId = "Team1_Futbol";

            teamServicesMock.Setup(t => t.UpdateTeam(It.IsAny <TeamDTO>())).Throws(new ServicesException());
            ILoginServices login = new LoginServicesMock(mariano);

            var httpContext = new DefaultHttpContext();

            httpContext.Request.Headers["Authorization"] = "";
            var controllerContext = new ControllerContext()
            {
                HttpContext = httpContext,
            };
            var controller = new TeamsController(login, teamServicesMock.Object, encounterServicesMock.Object, encounterQueryServicesMock.Object)
            {
                ControllerContext = controllerContext
            };

            var result = controller.ModifyTeam(teamId, team1);

            teamServicesMock.Verify(t => t.UpdateTeam(It.IsAny <TeamDTO>()), Times.AtMostOnce);
            var resultRequest = result as BadRequestObjectResult;

            Assert.IsNotNull(resultRequest);
            Assert.AreEqual(400, resultRequest.StatusCode);
        }