Пример #1
0
        public VoteDummyModule()
            : base("api/votingdummy")
        {
            this.Get["/putvote", true] = (_, cancel) =>
            {
                return Task.Run<dynamic>(() =>
                {
                    var username = "******";
                    var level = Level.AC;

                    var votingService = new VotingService(db);
                    votingService.AssertUser(username, level);

                    var trackId = 137943951;
                    var points = 2;

                    //votingService.CastVote(username, trackId, points);
                    //var votes = votingService.GetVotesForTrack(trackId);
                    var votes = votingService.GetVotesForUser(username);

                    //return Response.AsJson("vote is posted", HttpStatusCode.OK);
                    return Response.AsJson(votes, HttpStatusCode.OK);
                });
            };
        }
        public void CastVote_WithNonExistentUser_ThrowsException()
        {
            // Arrange
            var couchDbMock = new Mock<ICouchDBService>();
            couchDbMock.Setup(c => c.FindByUsername<User>(It.IsAny<string>())).Returns(new List<User>());

            // Act
            var votingService = new VotingService(couchDbMock.Object);
            votingService.CastVote("*****@*****.**", 1, 2);
        }
        public void CastVote_WithValidUser_SetsVote()
        {
            // Arrange
            var couchDbMock = new Mock<ICouchDBService>();
            couchDbMock.Setup(c => c.FindByUsername<User>(It.IsAny<string>())).Returns(new[]
            {
                new User { Username = "******" }
            });
            couchDbMock.Setup(c => c.FindByUsername<Vote>(It.IsAny<string>())).Returns(new List<Vote>());

            // Act
            var votingService = new VotingService(couchDbMock.Object);
            votingService.CastVote("*****@*****.**", 1, 2);

            // Assert
            couchDbMock.Verify(c => c.Set<Vote>(It.IsAny<Vote>()), Times.Once);
        }
        public void GetVoterTurnout_WithMatchingUsersAndVotes_CalculatesCorrectTurnout()
        {
            // Arrange - create 5 distinct users, both A and AC, out of which one user from each level has
            // voted (which should give a turnout of 33.3% for A and 50% for AC).
            var couchDbMock = new Mock<ICouchDBService>();
            couchDbMock.Setup(c => c.FindByLevel<User>(It.Is<Level>(l => l == Level.A))).Returns(new[]
            {
                new User { Username = "******", Level = Level.A },
                new User { Username = "******", Level = Level.A },
                new User { Username = "******", Level = Level.A }
            });
            couchDbMock.Setup(c => c.FindByUsername<Vote>(It.Is<string>(n => n == "*****@*****.**"))).Returns(new[]
            {
                new Vote { Username = "******" },
                new Vote { Username = "******" },
                new Vote { Username = "******" }
            });

            couchDbMock.Setup(c => c.FindByLevel<User>(It.Is<Level>(l => l == Level.AC))).Returns(new[]
            {
                new User { Username = "******", Level = Level.AC },
                new User { Username = "******", Level = Level.AC }
            });
            couchDbMock.Setup(c => c.FindByUsername<Vote>(It.Is<string>(n => n == "*****@*****.**"))).Returns(new[]
            {
                new Vote { Username = "******" },
                new Vote { Username = "******" },
                new Vote { Username = "******" }
            });

            // Act
            var votingService = new VotingService(couchDbMock.Object);
            var turnouts = votingService.GetVoterTurnout();

            // Assert
            Assert.AreEqual(33.3, turnouts[Level.A]);
            Assert.AreEqual(50.0, turnouts[Level.AC]);
        }
        public void UserCanVote_UserWithVotes_ReturnsFalse()
        {
            // Arrange
            var couchDbMock = new Mock<ICouchDBService>();
            couchDbMock.Setup(c => c.FindByUsername<Vote>(It.IsAny<string>())).Returns(new []
            {
                new Vote { Username = "******" },
                new Vote { Username = "******" },
                new Vote { Username = "******" }
            });

            // Act
            var votingService = new VotingService(couchDbMock.Object);
            var canVote = votingService.UserCanVote("*****@*****.**");

            // Assert
            Assert.IsFalse(canVote);
        }
        public void GetVoterTurnout_WithNoVotes_ReturnsZeroTurnout()
        {
            // Arrange
            var couchDbMock = new Mock<ICouchDBService>();
            couchDbMock.Setup(c => c.FindByLevel<User>(It.Is<Level>(l => l == Level.A))).Returns(new[]
            {
                new User { Username = "******", Level = Level.A },
                new User { Username = "******", Level = Level.A },
                new User { Username = "******", Level = Level.A }
            });

            // Act
            var votingService = new VotingService(couchDbMock.Object);
            var turnouts = votingService.GetVoterTurnout();

            // Assert
            Assert.AreEqual(0, turnouts[Level.A]);
        }
        public void GetVoterTurnout_WithNoMatchingUsers_ReturnsEmptyResult()
        {
            // Arrange
            var couchDbMock = new Mock<ICouchDBService>();
            couchDbMock.Setup(c => c.FindByLevel<User>(It.IsAny<Level>())).Returns(new List<User>());

            // Act
            var votingService = new VotingService(couchDbMock.Object);
            var turnouts = votingService.GetVoterTurnout();

            // Assert
            Assert.AreEqual(0, turnouts.Keys.Count);
        }