public async void Patch_No_Errors()
        {
            VotesControllerMockFacade mock = new VotesControllerMockFacade();
            var mockResult = new Mock <UpdateResponse <ApiVotesResponseModel> >();

            mockResult.SetupGet(x => x.Success).Returns(true);
            mock.ServiceMock.Setup(x => x.Update(It.IsAny <int>(), It.IsAny <ApiVotesRequestModel>()))
            .Callback <int, ApiVotesRequestModel>(
                (id, model) => model.BountyAmount.Should().Be(1)
                )
            .Returns(Task.FromResult <UpdateResponse <ApiVotesResponseModel> >(mockResult.Object));
            mock.ServiceMock.Setup(x => x.Get(It.IsAny <int>())).Returns(Task.FromResult <ApiVotesResponseModel>(new ApiVotesResponseModel()));
            VotesController controller = new VotesController(mock.ApiSettingsMoc.Object, mock.LoggerMock.Object, mock.TransactionCoordinatorMock.Object, mock.ServiceMock.Object, new ApiVotesModelMapper());

            controller.ControllerContext             = new ControllerContext();
            controller.ControllerContext.HttpContext = new DefaultHttpContext();

            var patch = new JsonPatchDocument <ApiVotesRequestModel>();

            patch.Replace(x => x.BountyAmount, 1);

            IActionResult response = await controller.Patch(default(int), patch);

            response.Should().BeOfType <OkObjectResult>();
            (response as OkObjectResult).StatusCode.Should().Be((int)HttpStatusCode.OK);
            mock.ServiceMock.Verify(x => x.Update(It.IsAny <int>(), It.IsAny <ApiVotesRequestModel>()));
        }
        public void TestPostVote()
        {
            Vote a = new Vote()
            {
                VoteId        = 1,
                EndDate       = DateTime.Now.AddDays(2),
                YesNoQuestion = "1",
                Deleted       = false,
                Yes           = 2,
                No            = 1
            };

            var mockVoteValidator = new Mock <IVoteValidator>();

            mockVoteValidator.Setup(x => x.PostVote(a)).Verifiable();
            mockVoteValidator.Setup(x => x.secure(null)).Verifiable();
            mockVoteValidator.Setup(x => x.AtmSecure(null)).Verifiable();

            var controller        = new VotesController(mockVoteValidator.Object);
            var controllerContext = new HttpControllerContext();
            var request           = new HttpRequestMessage();

            request.Headers.Add("TODO_PAGOS_TOKEN", "1");
            controllerContext.Request    = request;
            controller.ControllerContext = controllerContext;

            IHttpActionResult actionResult = controller.PostVote(a);
            var contentResult = actionResult as OkNegotiatedContentResult <IEnumerable <Vote> >;

            Assert.IsNotNull(actionResult);
        }
        public async void BulkInsert_No_Errors()
        {
            VotesControllerMockFacade mock = new VotesControllerMockFacade();

            var mockResponse = new CreateResponse <ApiVotesResponseModel>(new FluentValidation.Results.ValidationResult());

            mockResponse.SetRecord(new ApiVotesResponseModel());
            mock.ServiceMock.Setup(x => x.Create(It.IsAny <ApiVotesRequestModel>())).Returns(Task.FromResult <CreateResponse <ApiVotesResponseModel> >(mockResponse));
            VotesController controller = new VotesController(mock.ApiSettingsMoc.Object, mock.LoggerMock.Object, mock.TransactionCoordinatorMock.Object, mock.ServiceMock.Object, mock.ModelMapperMock.Object);

            controller.ControllerContext             = new ControllerContext();
            controller.ControllerContext.HttpContext = new DefaultHttpContext();

            var records = new List <ApiVotesRequestModel>();

            records.Add(new ApiVotesRequestModel());
            IActionResult response = await controller.BulkInsert(records);

            response.Should().BeOfType <OkObjectResult>();
            (response as OkObjectResult).StatusCode.Should().Be((int)HttpStatusCode.OK);
            var result = (response as OkObjectResult).Value as List <ApiVotesResponseModel>;

            result.Should().NotBeEmpty();
            mock.ServiceMock.Verify(x => x.Create(It.IsAny <ApiVotesRequestModel>()));
        }
        public void AddVote_UnitOfWorkNull_ShouldThrowException()
        {
            VotesController votesController = new VotesController();
            Guest           guest           = new Guest {
                EmailAddress = "*****@*****.**"
            };
            Party party = new Party
            {
                Guests = new List <Guest> {
                    guest
                },
                EndTime   = DateTime.Now,
                StartTime = DateTime.Now
            };
            PlayList playList = new PlayList {
                Party = party
            };
            Track track = new Track {
                Title = "Song1", Interpret = "Interpret", PlayLists = new List <PlayList> {
                    playList
                }
            };

            votesController.AddVote(null, guest, playList, track);
        }
Beispiel #5
0
        public void TestsSetup()
        {
            AutoMapperConfig.RegisterMappings();

            this.votes            = ServicesObjectFactory.GetVoteService();
            this.controller       = new VotesController(this.votes);
            this.controller.Cache = new HttpCacheService();
        }
        public async Task Delete_given_repository_returns_false_returns_NotFound()
        {
            var repository = new Mock <IVoteRepository>();

            var controller = new VotesController(repository.Object);

            var delete = await controller.Delete(42);

            Assert.IsType <NotFoundResult>(delete);
        }
        public async Task Delete_given_id_deletes_vote()
        {
            var repository = new Mock <IVoteRepository>();

            var controller = new VotesController(repository.Object);

            await controller.Delete(42);

            repository.Verify(s => s.DeleteAsync(42));
        }
        public async Task Get_given_non_existing_returns_NotFound()
        {
            var repo       = new Mock <IVoteRepository>();
            var controller = new VotesController(repo.Object);

            var get = await controller.Get(42);

            var res = get.Result;

            Assert.IsType <NotFoundResult>(res);
        }
        public async Task Delete_given_valid_returns_NoContent()
        {
            var repository = new Mock <IVoteRepository>();

            repository.Setup(s => s.DeleteAsync(42)).ReturnsAsync(true);
            var controller = new VotesController(repository.Object);

            var delete = await controller.Delete(42);

            Assert.IsType <NoContentResult>(delete);
        }
        public async Task Put_returns_NoContent()
        {
            var dto        = new VoteDTO();
            var repository = new Mock <IVoteRepository>();

            repository.Setup(s => s.UpdateAsync(dto)).ReturnsAsync(true);
            var controller = new VotesController(repository.Object);

            var put = await controller.Put(42, dto);

            Assert.IsType <NoContentResult>(put);
        }
        public async Task Put_given_dto_updates_vote()
        {
            var repository = new Mock <IVoteRepository>();

            var controller = new VotesController(repository.Object);

            var dto = new VoteDTO();

            await controller.Put(42, dto);

            repository.Verify(s => s.UpdateAsync(dto));
        }
        public async Task Get_existing_id_returns_dto()
        {
            var dto  = new VoteDTO();
            var repo = new Mock <IVoteRepository>();

            repo.Setup(s => s.FindAsync(42)).ReturnsAsync(dto);
            var controller = new VotesController(repo.Object);

            var get = await controller.Get(42);

            Assert.Equal(dto, get.Value);
        }
        public async Task Post_given_valid_dto_returns_CreatedAtAction()
        {
            var dto  = new VoteDTO();
            var repo = new Mock <IVoteRepository>();

            repo.Setup(s => s.CreateAsync(It.IsAny <VoteDTO>())).ReturnsAsync(1);
            var controller = new VotesController(repo.Object);

            var post = await controller.Post(dto);

            Assert.IsType <CreatedAtActionResult>(post.Result);
        }
        public async Task Put_given_repository_returns_false_returns_NotFound()
        {
            var repository = new Mock <IVoteRepository>();

            var controller = new VotesController(repository.Object);

            var dto = new VoteDTO();

            var put = await controller.Put(42, dto);

            Assert.IsType <NotFoundResult>(put);
        }
        public async Task GetVotes_returns_all()
        {
            IList <VoteDTO> dtos = new List <VoteDTO>()
            {
                new VoteDTO()
            };
            var repo = new Mock <IVoteRepository>();

            repo.Setup(s => s.ReadAsync()).ReturnsAsync(dtos);
            var controller = new VotesController(repo.Object);

            var get = await controller.Get();
        }
        public VotesControllerTests()
        {
            this.dbContext = MockDbContext.GetContext();

            this.restaurantRepository = new EfDeletableEntityRepository <Restaurant>(this.dbContext);
            this.votesRepository      = new EfRepository <Vote>(this.dbContext);
            this.commentsRepository   = new EfDeletableEntityRepository <Comment>(this.dbContext);

            this.votesService    = new VoteService(this.votesRepository);
            this.commentsService = new CommentService(this.commentsRepository, this.votesService);

            this.controller = new VotesController(this.votesService);
        }
        public async void Get_Not_Exists()
        {
            VotesControllerMockFacade mock = new VotesControllerMockFacade();

            mock.ServiceMock.Setup(x => x.Get(It.IsAny <int>())).Returns(Task.FromResult <ApiVotesResponseModel>(null));
            VotesController controller = new VotesController(mock.ApiSettingsMoc.Object, mock.LoggerMock.Object, mock.TransactionCoordinatorMock.Object, mock.ServiceMock.Object, mock.ModelMapperMock.Object);

            controller.ControllerContext             = new ControllerContext();
            controller.ControllerContext.HttpContext = new DefaultHttpContext();

            IActionResult response = await controller.Get(default(int));

            response.Should().BeOfType <StatusCodeResult>();
            (response as StatusCodeResult).StatusCode.Should().Be((int)HttpStatusCode.NotFound);
            mock.ServiceMock.Verify(x => x.Get(It.IsAny <int>()));
        }
Beispiel #18
0
        //[ExpectedException(typeof(Exception))]
        public void TestGetVotes()
        {
            var allVotes = new[]
            {
                new Vote()
                {
                    VoteId        = 1,
                    EndDate       = DateTime.Now.AddDays(2),
                    YesNoQuestion = "1",
                    Deleted       = false,
                    Yes           = 2,
                    No            = 1
                },
                new Vote()
                {
                    VoteId        = 2,
                    EndDate       = DateTime.Now.AddDays(2),
                    YesNoQuestion = "2",
                    Deleted       = false,
                    Yes           = 4,
                    No            = 2
                },
            };

            var mockVoteValidator = new Mock <IVoteValidator>();

            mockVoteValidator.Setup(x => x.GetVotes()).Returns(allVotes);

            var controller = new VotesController(mockVoteValidator.Object);

            // Arrange
            var controllerContext = new HttpControllerContext();
            var request           = new HttpRequestMessage();

            request.Headers.Add("TODO_PAGOS_TOKEN", "1");

            // Don't forget these lines, if you do then the request will be null.
            controllerContext.Request    = request;
            controller.ControllerContext = controllerContext;

            IHttpActionResult actionResult = controller.GetVotes();
            //throw new Exception(actionResult.GetType().ToString());
            var contentResult = actionResult as OkNegotiatedContentResult <IEnumerable <Vote> >;

            Assert.IsNotNull(contentResult);
        }
        public async void Delete_Errors()
        {
            VotesControllerMockFacade mock = new VotesControllerMockFacade();
            var mockResult = new Mock <ActionResponse>();

            mockResult.SetupGet(x => x.Success).Returns(false);
            mock.ServiceMock.Setup(x => x.Delete(It.IsAny <int>())).Returns(Task.FromResult <ActionResponse>(mockResult.Object));
            VotesController controller = new VotesController(mock.ApiSettingsMoc.Object, mock.LoggerMock.Object, mock.TransactionCoordinatorMock.Object, mock.ServiceMock.Object, mock.ModelMapperMock.Object);

            controller.ControllerContext             = new ControllerContext();
            controller.ControllerContext.HttpContext = new DefaultHttpContext();

            IActionResult response = await controller.Delete(default(int));

            response.Should().BeOfType <ObjectResult>();
            (response as ObjectResult).StatusCode.Should().Be((int)HttpStatusCode.UnprocessableEntity);
            mock.ServiceMock.Verify(x => x.Delete(It.IsAny <int>()));
        }
        public void CheckVoteControllerDecoratedWithValidateAntiForgeryToken()
        {
            UserManager <ApplicationUser> userManager = MockUserManager();

            var mockVoteService  = new Mock <IVotesService>();
            var mockImageService = new Mock <IImagesService>();

            VotesController controller = new VotesController(
                userManager,
                mockVoteService.Object,
                mockImageService.Object).WithIdentity(FirstTestUserId, "TestUser");

            var type       = controller.GetType();
            var methodInfo = type.GetMethod("Index", new Type[] { typeof(VoteInputModel) });
            var attributes = methodInfo.GetCustomAttributes(typeof(ValidateAntiForgeryTokenAttribute), true);

            Assert.True(attributes.Any(), "No ValidateAntiForgeryTokenAttribute found on Index method");
        }
        public async void Update_NotFound()
        {
            VotesControllerMockFacade mock = new VotesControllerMockFacade();
            var mockResult = new Mock <UpdateResponse <ApiVotesResponseModel> >();

            mockResult.SetupGet(x => x.Success).Returns(false);
            mock.ServiceMock.Setup(x => x.Update(It.IsAny <int>(), It.IsAny <ApiVotesRequestModel>())).Returns(Task.FromResult <UpdateResponse <ApiVotesResponseModel> >(mockResult.Object));
            mock.ServiceMock.Setup(x => x.Get(It.IsAny <int>())).Returns(Task.FromResult <ApiVotesResponseModel>(null));
            VotesController controller = new VotesController(mock.ApiSettingsMoc.Object, mock.LoggerMock.Object, mock.TransactionCoordinatorMock.Object, mock.ServiceMock.Object, new ApiVotesModelMapper());

            controller.ControllerContext             = new ControllerContext();
            controller.ControllerContext.HttpContext = new DefaultHttpContext();

            IActionResult response = await controller.Update(default(int), new ApiVotesRequestModel());

            response.Should().BeOfType <StatusCodeResult>();
            (response as StatusCodeResult).StatusCode.Should().Be((int)HttpStatusCode.NotFound);
            mock.ServiceMock.Verify(x => x.Get(It.IsAny <int>()));
        }
        public async void All_Not_Exists()
        {
            VotesControllerMockFacade mock = new VotesControllerMockFacade();

            mock.ServiceMock.Setup(x => x.All(It.IsAny <int>(), It.IsAny <int>())).Returns(Task.FromResult <List <ApiVotesResponseModel> >(new List <ApiVotesResponseModel>()));
            VotesController controller = new VotesController(mock.ApiSettingsMoc.Object, mock.LoggerMock.Object, mock.TransactionCoordinatorMock.Object, mock.ServiceMock.Object, mock.ModelMapperMock.Object);

            controller.ControllerContext             = new ControllerContext();
            controller.ControllerContext.HttpContext = new DefaultHttpContext();

            IActionResult response = await controller.All(1000, 0);

            response.Should().BeOfType <OkObjectResult>();
            (response as OkObjectResult).StatusCode.Should().Be((int)HttpStatusCode.OK);
            var items = (response as OkObjectResult).Value as List <ApiVotesResponseModel>;

            items.Should().BeEmpty();
            mock.ServiceMock.Verify(x => x.All(It.IsAny <int>(), It.IsAny <int>()));
        }
        public async void Create_Errors()
        {
            VotesControllerMockFacade mock = new VotesControllerMockFacade();

            var mockResponse = new Mock <CreateResponse <ApiVotesResponseModel> >(new FluentValidation.Results.ValidationResult());
            var mockRecord   = new ApiVotesResponseModel();

            mockResponse.SetupGet(x => x.Success).Returns(false);

            mock.ServiceMock.Setup(x => x.Create(It.IsAny <ApiVotesRequestModel>())).Returns(Task.FromResult <CreateResponse <ApiVotesResponseModel> >(mockResponse.Object));
            VotesController controller = new VotesController(mock.ApiSettingsMoc.Object, mock.LoggerMock.Object, mock.TransactionCoordinatorMock.Object, mock.ServiceMock.Object, mock.ModelMapperMock.Object);

            controller.ControllerContext             = new ControllerContext();
            controller.ControllerContext.HttpContext = new DefaultHttpContext();

            IActionResult response = await controller.Create(new ApiVotesRequestModel());

            response.Should().BeOfType <ObjectResult>();
            (response as ObjectResult).StatusCode.Should().Be((int)HttpStatusCode.UnprocessableEntity);
            mock.ServiceMock.Verify(x => x.Create(It.IsAny <ApiVotesRequestModel>()));
        }
        public async void Patch_Record_Not_Found()
        {
            VotesControllerMockFacade mock = new VotesControllerMockFacade();
            var mockResult = new Mock <ActionResponse>();

            mock.ServiceMock.Setup(x => x.Get(It.IsAny <int>())).Returns(Task.FromResult <ApiVotesResponseModel>(null));
            VotesController controller = new VotesController(mock.ApiSettingsMoc.Object, mock.LoggerMock.Object, mock.TransactionCoordinatorMock.Object, mock.ServiceMock.Object, mock.ModelMapperMock.Object);

            controller.ControllerContext             = new ControllerContext();
            controller.ControllerContext.HttpContext = new DefaultHttpContext();

            var patch = new JsonPatchDocument <ApiVotesRequestModel>();

            patch.Replace(x => x.BountyAmount, 1);

            IActionResult response = await controller.Patch(default(int), patch);

            response.Should().BeOfType <StatusCodeResult>();
            (response as StatusCodeResult).StatusCode.Should().Be((int)HttpStatusCode.NotFound);
            mock.ServiceMock.Verify(x => x.Get(It.IsAny <int>()));
        }
        public async void TestVoteFunctionality()
        {
            UserManager <ApplicationUser> userManager = MockUserManager();

            var mockVoteService = new Mock <IVotesService>();

            mockVoteService.Setup(x => x.VoteAsync(VotesControllerTest.FirstTestImageId, It.IsAny <string>(), true))
            .ReturnsAsync(false);
            mockVoteService.Setup(x => x.VoteAsync(VotesControllerTest.FirstTestImageId, It.IsAny <string>(), false))
            .ReturnsAsync(true);

            var mockImageService = new Mock <IImagesService>();

            mockImageService.Setup(x => x.GetImageById <Image>(It.IsAny <string>()))
            .Returns(new Image()
            {
                Id = VotesControllerTest.FirstTestImageId,
            });

            VotesController controller = new VotesController(
                userManager,
                mockVoteService.Object,
                mockImageService.Object).WithIdentity(FirstTestUserId, "TestUser");

            VoteInputModel model = new VoteInputModel()
            {
                ImageId = VotesControllerTest.FirstTestImageId,
                IsLike  = false,
            };

            ActionResult <VoteResponseModel> result = await controller.Index(model);

            Assert.True(result.Value.Result);

            model.IsLike = true;
            result       = await controller.Index(model);

            Assert.False(result.Value.Result);
        }
        public async void ValidateInputModel()
        {
            UserManager <ApplicationUser> userManager = MockUserManager();

            var mockVoteService  = new Mock <IVotesService>();
            var mockImageService = new Mock <IImagesService>();

            VotesController controller = new VotesController(
                userManager,
                mockVoteService.Object,
                mockImageService.Object).WithIdentity(FirstTestUserId, "TestUser");

            ActionResult <VoteResponseModel> result = await controller.Index(null);

            Assert.IsType <BadRequestResult>(result.Result);

            result = await controller.Index(new VoteInputModel()
            {
                ImageId = null,
            });

            Assert.IsType <BadRequestResult>(result.Result);
        }
        public void AddVote_NewCorrectVote_ShouldAddInDatabase()
        {
            IUnitOfWork     unitOfWork      = new MockUnitOfWork();
            VotesController votesController = new VotesController();
            Guest           guest           = new Guest {
                EmailAddress = "*****@*****.**", Id = 1
            };
            Party party = new Party
            {
                Guests = new List <Guest> {
                    guest
                },
                EndTime   = DateTime.Now,
                StartTime = DateTime.Now,
                Id        = 1
            };
            PlayList playList = new PlayList {
                Party = party, Id = 1
            };
            Track track = new Track {
                Title = "Song1", Interpret = "Interpret", PlayLists = new List <PlayList> {
                    playList
                }
            };

            unitOfWork.Parties.Insert(party);
            unitOfWork.Guests.Insert(guest);
            unitOfWork.PlayLists.Insert(playList);
            unitOfWork.Tracks.Insert(track);
            bool ok = votesController.AddVote(unitOfWork, guest, playList, track);

            Assert.IsTrue(ok);
            var votes = unitOfWork.Votes.Get();

            Assert.IsTrue(votes.Any(v => v.Track == track && v.PlayList == playList));
        }