Exemplo n.º 1
0
            public void CreatesBallotForCreator()
            {
                Guid pollId = new Guid("00DB2F1B-C4F5-44D3-960C-386CEB9690C4");

                var existingPoll = new Poll()
                {
                    CreatorIdentity = UserId1, UUID = pollId
                };

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

                polls.Add(existingPoll);

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

                IContextFactory     mockContextFactory = ContextFactoryTestHelper.CreateContextFactory(polls, ballots);
                DashboardController controller         = CreateDashboardController(mockContextFactory);

                controller.User = CreateAuthenticatedUser(UserId1);

                var request = new CopyPollRequestModel()
                {
                    UUIDToCopy = pollId
                };


                controller.Copy(request);


                Poll copiedPoll = polls.ToList()[1];

                Assert.AreEqual(1, copiedPoll.Ballots.Count());
            }
Exemplo n.º 2
0
            public void AddsNewPoll()
            {
                Guid pollId = new Guid("00DB2F1B-C4F5-44D3-960C-386CEB9690C4");

                var existingPoll = new Poll()
                {
                    CreatorIdentity = UserId1, UUID = pollId
                };

                var dbPolls = new InMemoryDbSet <Poll>(clearDownExistingData: true)
                {
                    existingPoll
                };

                IContextFactory     mockContextFactory = CreateContextFactory(dbPolls);
                DashboardController controller         = CreateDashboardController(mockContextFactory);

                controller.User = CreateAuthenticatedUser(UserId1);

                var request = new CopyPollRequestModel()
                {
                    UUIDToCopy = pollId
                };


                controller.Copy(request);

                Assert.AreEqual(2, dbPolls.Count());
            }
Exemplo n.º 3
0
            public void ResponseContainsNewUUIDAndManageId()
            {
                Guid pollId = new Guid("00DB2F1B-C4F5-44D3-960C-386CEB9690C4");

                var existingPoll = new Poll()
                {
                    CreatorIdentity = UserId1, UUID = pollId
                };

                var dbPolls = new InMemoryDbSet <Poll>(clearDownExistingData: true)
                {
                    existingPoll
                };

                IContextFactory     mockContextFactory = CreateContextFactory(dbPolls);
                DashboardController controller         = CreateDashboardController(mockContextFactory);

                controller.User = CreateAuthenticatedUser(UserId1);

                var request = new CopyPollRequestModel()
                {
                    UUIDToCopy = pollId
                };


                CopyPollResponseModel response = controller.Copy(request);

                Poll copiedPoll = dbPolls.ToList()[1];

                Assert.AreEqual(copiedPoll.UUID, response.NewPollId);
                Assert.AreEqual(copiedPoll.ManageId, response.NewManageId);
            }
Exemplo n.º 4
0
            public void UnknownPollToCopy_ThrowsBadRequestException()
            {
                Guid pollId        = new Guid("00DB2F1B-C4F5-44D3-960C-386CEB9690C4");
                Guid unknownPollId = new Guid("F5F5AF58-4190-4275-8178-FED76105F6BB");

                var existingPolls = new InMemoryDbSet <Poll>(clearDownExistingData: true)
                {
                    new Poll()
                    {
                        UUID = pollId
                    }
                };

                IContextFactory     mockContextFactory = CreateContextFactory(existingPolls);
                DashboardController controller         = CreateDashboardController(mockContextFactory);

                controller.User = CreateAuthenticatedUser(UserId1);

                var request = new CopyPollRequestModel()
                {
                    UUIDToCopy = unknownPollId
                };

                controller.Copy(request);
            }
Exemplo n.º 5
0
            public void CopiedPollHasSameValuesAsOriginal()
            {
                Guid           pollId        = new Guid("00DB2F1B-C4F5-44D3-960C-386CEB9690C4");
                const string   creator       = "Someone";
                const PollType pollType      = PollType.UpDown;
                const int      maxPoints     = 9;
                const int      maxPerVote    = 2;
                const bool     inviteOnly    = true;
                const bool     namedVoting   = true;
                DateTime?      expiryDateUtc = new DateTime(2015, 6, 2, 14, 2, 56, DateTimeKind.Utc);
                const bool     optionAdding  = true;

                var existingPoll = new Poll()
                {
                    UUID            = pollId,
                    Creator         = creator,
                    CreatorIdentity = UserId1,
                    PollType        = pollType,
                    MaxPoints       = maxPoints,
                    MaxPerVote      = maxPerVote,
                    InviteOnly      = inviteOnly,
                    NamedVoting     = namedVoting,
                    ExpiryDateUtc   = expiryDateUtc,
                    ChoiceAdding    = optionAdding
                };

                var dbPolls = new InMemoryDbSet <Poll>(clearDownExistingData: true)
                {
                    existingPoll
                };

                IContextFactory     mockContextFactory = CreateContextFactory(dbPolls);
                DashboardController controller         = CreateDashboardController(mockContextFactory);

                controller.User = CreateAuthenticatedUser(UserId1);

                var request = new CopyPollRequestModel()
                {
                    UUIDToCopy = pollId
                };


                controller.Copy(request);

                List <Poll> polls      = dbPolls.ToList();
                Poll        copiedPoll = polls[1];


                Assert.AreEqual(creator, copiedPoll.Creator);
                Assert.AreEqual(UserId1, copiedPoll.CreatorIdentity);
                Assert.AreEqual(pollType, copiedPoll.PollType);
                Assert.AreEqual(maxPoints, copiedPoll.MaxPoints);
                Assert.AreEqual(maxPerVote, copiedPoll.MaxPerVote);
                Assert.AreEqual(inviteOnly, copiedPoll.InviteOnly);
                Assert.AreEqual(namedVoting, copiedPoll.NamedVoting);
                Assert.AreEqual(expiryDateUtc, copiedPoll.ExpiryDateUtc);
                Assert.AreEqual(optionAdding, copiedPoll.ChoiceAdding);
            }
        public CopyPollResponseModel Copy(CopyPollRequestModel pollCopyRequest)
        {
            if (pollCopyRequest == null)
            {
                ThrowError(HttpStatusCode.BadRequest);
            }

            if (!ModelState.IsValid)
            {
                ThrowError(HttpStatusCode.BadRequest, ModelState);
            }

            using (IVotingContext context = _contextFactory.CreateContext())
            {
                string userId = User.Identity.GetUserId();

                Poll pollToCopy = context
                                  .Polls
                                  .Include(p => p.Choices)
                                  .SingleOrDefault(p => p.UUID == pollCopyRequest.UUIDToCopy);

                if (pollToCopy == null)
                {
                    ThrowError(HttpStatusCode.BadRequest);
                }


                if (pollToCopy.CreatorIdentity != userId)
                {
                    ThrowError(HttpStatusCode.Forbidden);
                }

                Poll newPoll = CopyPoll(pollToCopy);

                _metricHandler.HandlePollClonedEvent(newPoll);

                Ballot creatorBallot = CreateBallotForCreator();
                newPoll.Ballots.Add(creatorBallot);

                context.Polls.Add(newPoll);
                context.SaveChanges();

                return(new CopyPollResponseModel()
                {
                    NewPollId = newPoll.UUID,
                    NewManageId = newPoll.ManageId,
                    CreatorBallotToken = creatorBallot.TokenGuid
                });
            }
        }
Exemplo n.º 7
0
            public void NewPollNameIsOldPollNamePrependedWithCopyOf()
            {
                const string pollName       = "Where shall we go today?";
                const string copiedPollName = "Copy of Where shall we go today?";

                Guid pollId = new Guid("00DB2F1B-C4F5-44D3-960C-386CEB9690C4");

                var existingPoll = new Poll()
                {
                    CreatorIdentity = UserId1, UUID = pollId, Name = pollName
                };

                var dbPolls = new InMemoryDbSet <Poll>(clearDownExistingData: true)
                {
                    existingPoll
                };

                IContextFactory     mockContextFactory = CreateContextFactory(dbPolls);
                DashboardController controller         = CreateDashboardController(mockContextFactory);

                controller.User = CreateAuthenticatedUser(UserId1);

                var request = new CopyPollRequestModel()
                {
                    UUIDToCopy = pollId
                };


                controller.Copy(request);

                List <Poll> polls      = dbPolls.ToList();
                Poll        copiedPoll = polls[1];


                Assert.AreEqual(copiedPollName, copiedPoll.Name);
            }
Exemplo n.º 8
0
            public void PollDoesNotBelongToUser_ThrowsForbiddenException()
            {
                Guid pollId = new Guid("00DB2F1B-C4F5-44D3-960C-386CEB9690C4");

                var existingPolls = new InMemoryDbSet <Poll>(clearDownExistingData: true)
                {
                    new Poll()
                    {
                        CreatorIdentity = UserId1, UUID = pollId
                    }
                };

                IContextFactory     mockContextFactory = CreateContextFactory(existingPolls);
                DashboardController controller         = CreateDashboardController(mockContextFactory);

                controller.User = CreateAuthenticatedUser(UserId2);

                var request = new CopyPollRequestModel()
                {
                    UUIDToCopy = pollId
                };

                controller.Copy(request);
            }
Exemplo n.º 9
0
            public void CopiedPollHasSameChoicesAsOriginal()
            {
                Guid pollId = new Guid("00DB2F1B-C4F5-44D3-960C-386CEB9690C4");

                var options = new List <Choice>()
                {
                    new Choice()
                    {
                        Name        = "One",
                        Description = "Choice 1"
                    },
                    new Choice()
                    {
                        Name        = "Two",
                        Description = "Choice 2"
                    },
                    new Choice()
                    {
                        Name        = "Three",
                        Description = "Choice 3"
                    }
                };

                var existingPoll = new Poll()
                {
                    UUID            = pollId,
                    CreatorIdentity = UserId1,
                    Choices         = options
                };

                var dbPolls = new InMemoryDbSet <Poll>(clearDownExistingData: true)
                {
                    existingPoll
                };

                IContextFactory     mockContextFactory = CreateContextFactory(dbPolls);
                DashboardController controller         = CreateDashboardController(mockContextFactory);

                controller.User = CreateAuthenticatedUser(UserId1);

                var request = new CopyPollRequestModel()
                {
                    UUIDToCopy = pollId
                };


                controller.Copy(request);

                List <Poll>   polls = dbPolls.ToList();
                List <Choice> originalPollChoices = polls[0].Choices;
                List <Choice> copiedPollChoices   = polls[1].Choices;


                Assert.AreEqual(originalPollChoices[0].Name, copiedPollChoices[0].Name);
                Assert.AreEqual(originalPollChoices[0].Description, copiedPollChoices[0].Description);

                Assert.AreEqual(originalPollChoices[1].Name, copiedPollChoices[1].Name);
                Assert.AreEqual(originalPollChoices[1].Description, copiedPollChoices[1].Description);

                Assert.AreEqual(originalPollChoices[2].Name, copiedPollChoices[2].Name);
                Assert.AreEqual(originalPollChoices[2].Description, copiedPollChoices[2].Description);
            }