public void NoXTokenGuidHeader_Response_Choices_ContainsVoteValueZero()
            {
                const int choiceId = 42;

                var choice = new Choice()
                {
                    Id               = choiceId,
                    Name             = "A choice",
                    Description      = "Some description",
                    PollChoiceNumber = 13
                };

                Poll poll = CreateNonInviteOnlyPoll();

                poll.Choices.Add(choice);

                IDbSet <Poll> polls = DbSetTestHelper.CreateMockDbSet <Poll>();

                polls.Add(poll);
                IDbSet <Choice> choices = DbSetTestHelper.CreateMockDbSet <Choice>();

                choices.Add(choice);

                IContextFactory contextFactory = ContextFactoryTestHelper.CreateContextFactory(polls, choices);

                PollController controller = CreatePollController(contextFactory);


                PollRequestResponseModel response = controller.Get(PollId);

                PollRequestChoiceResponseModel responseChoice = response.Choices.Single();

                Assert.AreEqual(0, responseChoice.VoteValue);
            }
            public void NonInviteOnly_XTokenGuidHeader_ReturnsHeaderValueAsTokenGuid()
            {
                IDbSet <Poll>   polls   = DbSetTestHelper.CreateMockDbSet <Poll>();
                IDbSet <Ballot> ballots = DbSetTestHelper.CreateMockDbSet <Ballot>();

                var ballot = new Ballot()
                {
                    TokenGuid = TokenGuid
                };

                Poll nonInviteOnlyPoll = CreateNonInviteOnlyPoll();

                nonInviteOnlyPoll.Ballots.Add(ballot);

                ballots.Add(ballot);
                polls.Add(nonInviteOnlyPoll);

                IContextFactory contextFactory = ContextFactoryTestHelper.CreateContextFactory(polls);

                PollController controller = CreatePollController(contextFactory);

                AddXTokenGuidHeader(controller, TokenGuid);


                PollRequestResponseModel response = controller.Get(PollId);

                Assert.AreEqual(TokenGuid, response.TokenGuid);
            }
            public void InviteOnly_XTokenGuidHeader_BallotInPoll_ReturnsPoll()
            {
                const string   pollName = "Why are we here?";
                const PollType pollType = PollType.UpDown;

                var ballot = new Ballot()
                {
                    TokenGuid = TokenGuid
                };

                var poll = new Poll()
                {
                    UUID     = PollId,
                    Name     = pollName,
                    PollType = pollType,

                    MaxPoints  = 5,
                    MaxPerVote = 1,

                    ExpiryDateUtc = null,

                    NamedVoting  = false,
                    ChoiceAdding = false,
                    InviteOnly   = true
                };

                poll.Ballots.Add(ballot);

                IDbSet <Poll> polls = DbSetTestHelper.CreateMockDbSet <Poll>();

                polls.Add(poll);
                IDbSet <Ballot> ballots = DbSetTestHelper.CreateMockDbSet <Ballot>();

                ballots.Add(ballot);
                IContextFactory contextFactory = ContextFactoryTestHelper.CreateContextFactory(polls, ballots);

                PollController controller = CreatePollController(contextFactory);

                AddXTokenGuidHeader(controller, TokenGuid);


                PollRequestResponseModel response = controller.Get(PollId);


                Assert.AreEqual(pollName, response.Name);
                Assert.AreEqual(pollType.ToString(), response.PollType);
                Assert.IsNull(response.ExpiryDateUtc);

                Assert.AreEqual(5, response.MaxPoints);
                Assert.AreEqual(1, response.MaxPerVote);

                Assert.IsFalse(response.NamedVoting);
                Assert.IsFalse(response.ChoiceAdding);
                Assert.IsFalse(response.UserHasVoted);
            }
            public void XTokenGuidHeader_Response_Choices_ContainsVoteValuesForBallot()
            {
                const int choiceId = 42;

                var choice = new Choice()
                {
                    Id               = choiceId,
                    Name             = "A choice",
                    Description      = "Some description",
                    PollChoiceNumber = 13
                };

                var vote = new Vote()
                {
                    Choice = choice, VoteValue = 3
                };

                var ballot = new Ballot()
                {
                    TokenGuid = TokenGuid
                };

                ballot.Votes.Add(vote);

                Poll poll = CreateNonInviteOnlyPoll();

                poll.Ballots.Add(ballot);
                poll.Choices.Add(choice);

                IDbSet <Poll> polls = DbSetTestHelper.CreateMockDbSet <Poll>();

                polls.Add(poll);
                IDbSet <Choice> choices = DbSetTestHelper.CreateMockDbSet <Choice>();

                choices.Add(choice);
                IDbSet <Vote> votes = DbSetTestHelper.CreateMockDbSet <Vote>();

                votes.Add(vote);
                IDbSet <Ballot> ballots = DbSetTestHelper.CreateMockDbSet <Ballot>();

                ballots.Add(ballot);
                IContextFactory contextFactory = ContextFactoryTestHelper.CreateContextFactory(polls, ballots, votes, choices);

                PollController controller = CreatePollController(contextFactory);

                AddXTokenGuidHeader(controller, TokenGuid);


                PollRequestResponseModel response = controller.Get(PollId);

                PollRequestChoiceResponseModel responseChoice = response.Choices.Single();

                Assert.AreEqual(3, responseChoice.VoteValue);
            }
            public void NonInviteOnly_NoXTokenGuidHeader_ReturnsNonEmptyTokenGuid()
            {
                IDbSet <Poll> polls = DbSetTestHelper.CreateMockDbSet <Poll>();

                polls.Add(new Poll()
                {
                    UUID = PollId
                });
                IContextFactory contextFactory = ContextFactoryTestHelper.CreateContextFactory(polls);

                PollController controller = CreatePollController(contextFactory);


                PollRequestResponseModel response = controller.Get(PollId);

                Assert.AreNotEqual(Guid.Empty, response.TokenGuid);
            }
            public void ElectionPoll_BallotHasVoted_UserHasVotedIsTrue()
            {
                const string   pollName = "Why are we here?";
                const PollType pollType = PollType.Basic;

                var ballot = new Ballot()
                {
                    TokenGuid = TokenGuid, HasVoted = true
                };

                var poll = new Poll()
                {
                    UUID     = PollId,
                    Name     = pollName,
                    PollType = pollType,

                    ExpiryDateUtc = null,

                    NamedVoting  = false,
                    ChoiceAdding = false,
                    InviteOnly   = true
                };

                poll.Ballots.Add(ballot);

                IDbSet <Poll> polls = DbSetTestHelper.CreateMockDbSet <Poll>();

                polls.Add(poll);
                IDbSet <Ballot> ballots = DbSetTestHelper.CreateMockDbSet <Ballot>();

                ballots.Add(ballot);
                IContextFactory contextFactory = ContextFactoryTestHelper.CreateContextFactory(polls, ballots);

                PollController controller = CreatePollController(contextFactory);

                AddXTokenGuidHeader(controller, TokenGuid);


                PollRequestResponseModel response = controller.Get(PollId);

                Assert.IsTrue(response.UserHasVoted);
            }