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()); }
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()); }
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); }
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); }
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 }); } }
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); }
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); }
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); }