public IActionResult GetVotes() { var objectId = User.Claims.First(claim => claim.Type == ClaimConstants.ObjectId).Value; var tenantId = User.Claims.First(claim => claim.Type == ClaimConstants.TenantId).Value; if (_votesService.HasVoted(tenantId, objectId) is false) { return(BadRequest("You must vote before you can see the votes")); } return(Ok(_votesService.GetVotes().Select(vote => new { vote.Candidate, vote.CreatedAt }))); }
public async Task TestVoteAsyncMethod() { var context = ApplicationDbContextInMemoryFactory.InitializeContext(); var votesRepository = new EfRepository <Vote>(context); var service = new VotesService(votesRepository); await service.VoteAsync(5, "e6335b0d-322e-48c8-9d42-205d3915ed39", true); var votes = service.GetVotes(5); Assert.Equal(1, votes); }
public async Task UpVoteAndDownVoteFromSamePersonShouldNegativeOne() { var options = new DbContextOptionsBuilder <ApplicationDbContext>() .UseInMemoryDatabase(Guid.NewGuid().ToString()); var mockRepository = new EfRepository <Vote>(new ApplicationDbContext(options.Options)); var service = new VotesService(mockRepository); await service.VoteAsync("d3946347-0005-45e0-8a02-ad8179d2ece6", "0a9ec75c-0560-4e5b-94d4-c44429bb7379", true); await service.VoteAsync("d3946347-0005-45e0-8a02-ad8179d2ece6", "0a9ec75c-0560-4e5b-94d4-c44429bb7379", false); var votes = service.GetVotes("d3946347-0005-45e0-8a02-ad8179d2ece6"); Assert.Equal(-1, votes); }
public async Task TestGetVotesMethod() { var context = ApplicationDbContextInMemoryFactory.InitializeContext(); var votesRepository = new EfRepository <Vote>(context); var service = new VotesService(votesRepository); for (int i = 0; i < 100; i++) { await service.VoteAsync(5, $"{i}", true); } var votes = service.GetVotes(5); Assert.Equal(100, votes); }
public async Task TwoDownVoteAndOneUpVoteFromTwoUsersShouldBeZero() { var options = new DbContextOptionsBuilder <ApplicationDbContext>() .UseInMemoryDatabase(Guid.NewGuid().ToString()); var mockRepository = new EfRepository <Vote>(new ApplicationDbContext(options.Options)); var service = new VotesService(mockRepository); await service.VoteAsync("d3946347-0005-45e0-8a02-ad8179d2ece6", "0a9ec75c-0560-4e5b-94d4-c44429bb7379", false); await service.VoteAsync("d3946347-0005-45e0-8a02-ad8179d2ece6", "175a2793-b1c8-4489-829e-549925137c57", false); await service.VoteAsync("d3946347-0005-45e0-8a02-ad8179d2ece6", "0a9ec75c-0560-4e5b-94d4-c44429bb7379", true); var votes = service.GetVotes("d3946347-0005-45e0-8a02-ad8179d2ece6"); Assert.Equal(0, votes); }
public async Task TwoDownVotesShouldCountOnce() { var options = new DbContextOptionsBuilder <ApplicationDbContext>() .UseInMemoryDatabase("testVotes"); var repository = new EfRepository <Vote>(new ApplicationDbContext(options.Options)); var service = new VotesService(repository); await service.VoteAsync(1, "1", false); await service.VoteAsync(1, "1", false); var votes = service.GetVotes(1); Assert.Equal(-1, votes); }
public async Task AnyNumberOfDownVoteShouldCountOnce() { var options = new DbContextOptionsBuilder <ApplicationDbContext>() .UseInMemoryDatabase("x").Options; var repository = new EfRepository <Vote>( new ApplicationDbContext(options)); var service = new VotesService(repository); for (int i = 0; i < 5; i++) { await service.VoteAsync(1, "1", false); } var votesCount = service.GetVotes(1); Assert.Equal(-1, votesCount); }
public async Task DifferentVotesFromUserShouldChanheVote() { var options = new DbContextOptionsBuilder <ApplicationDbContext>() .UseInMemoryDatabase(Guid.NewGuid().ToString()); var repository = new EfRepository <Vote>(new ApplicationDbContext(options.Options)); var service = new VotesService(repository); await service.VoteAsync(1, "1", true); await service.VoteAsync(1, "1", false); var votes = service.GetVotes(1); Assert.Equal(-1, votes); var votesInDiseaseForUser = await repository.All().CountAsync(); Assert.Equal(1, votesInDiseaseForUser); }
public async Task TwoDownVotesShouldCountOnce() { var options = new DbContextOptionsBuilder <ApplicationDbContext>().UseInMemoryDatabase(Guid.NewGuid().ToString()); var repository = new EfRepository <Vote>(new ApplicationDbContext(options.Options)); var service = new VotesService(repository); for (int i = 0; i < 100; i++) { await service.VoteAsync(1, "1", false); } for (int i = 0; i < 100; i++) { await service.VoteAsync(1, "2", false); } var votes = service.GetVotes(1); Assert.Equal(-2, votes); }
public async Task WhenTwoUsersGiveUpVoteSumShouldbeEqualToTwo() { var votes = new List <Vote>(); var mockRepo = new Mock <IRepository <Vote> >(); mockRepo.Setup(x => x.All()).Returns(votes.AsQueryable()); mockRepo.Setup(x => x.AddAsync(It.IsAny <Vote>())).Callback((Vote vote) => votes.Add(vote)); var service = new VotesService(mockRepo.Object); await service.VoteAsync("1", "1", true); await service.VoteAsync("1", "2", true); var sum = service.GetVotes("1"); var expectedResult = 2; Assert.Equal(expectedResult, sum); }
public async Task TwoDownVotesShouldCountOnce() { var context = ApplicationDbContextInMemoryFactory.InitializeContext(); var votesRepository = new EfRepository <Vote>(context); var service = new VotesService(votesRepository); for (int i = 0; i < 100; i++) { await service.VoteAsync(5, "e6335b0d-322e-48c8-9d42-205d3915ed39", false); } for (int i = 0; i < 100; i++) { await service.VoteAsync(5, "d4b831df-ef23-4127-883a-76cd2533e28a", false); } var votes = service.GetVotes(5); Assert.Equal(-2, votes); }
public async Task TwoDownVotesShouldCountOnce() { var options = new DbContextOptionsBuilder <ApplicationDbContext>() .UseInMemoryDatabase(databaseName: "MemoryDb"); var repository = new EfRepository <Vote>(new ApplicationDbContext(options.Options)); var service = new VotesService(repository); // voting 100 times with first User for (int i = 0; i < 100; i++) { await service.VoteAsync(1, "1", false); // down vote } // voting 100 times with second User for (int i = 0; i < 100; i++) { await service.VoteAsync(1, "2", false); // down vote } var votesCount = service.GetVotes(1); Assert.Equal(-2, votesCount); }