public void AddingAnChoiceGeneratesAnAddChoiceMetric()
            {
                // Arrange
                var                    metricHandler  = new Mock <IMetricHandler>();
                IDbSet <Poll>          polls          = DbSetTestHelper.CreateMockDbSet <Poll>();
                var                    contextFactory = ContextFactoryTestHelper.CreateContextFactory(polls);
                ManageChoiceController controller     = CreateManageChoiceController(contextFactory, metricHandler.Object);

                Poll existingPoll = new Poll()
                {
                    Choices = new List <Choice>(), UUID = Guid.NewGuid(), ManageId = Guid.NewGuid()
                };

                polls.Add(existingPoll);

                ChoiceUpdate optionUpdate = new ChoiceUpdate()
                {
                    Name = "New Choice"
                };
                ManageChoiceUpdateRequest request = new ManageChoiceUpdateRequest()
                {
                    Choices = new List <ChoiceUpdate>()
                    {
                        optionUpdate
                    }
                };

                // Act
                controller.Put(existingPoll.ManageId, request);

                // Assert
                metricHandler.Verify(m => m.HandleChoiceAddedEvent(It.Is <Choice>(o => o.Name == "New Choice"), existingPoll.UUID), Times.Once());
                metricHandler.Verify(m => m.HandleChoiceDeletedEvent(It.IsAny <Choice>(), It.IsAny <Guid>()), Times.Never());
                metricHandler.Verify(m => m.HandleChoiceUpdatedEvent(It.IsAny <Choice>(), It.IsAny <Guid>()), Times.Never());
            }
Example #2
0
        public ColumnModelChoice() : base()
        {
            choices = new List <string> {
                ""
            };
            choiceKeys = new List <string>();

            updateListener = new ChoiceUpdate(this);
        }
            public void ChoiceWithPollChoiceNumber_IsUpdated()
            {
                const string optionName        = "Some Choice";
                const string optionDescription = "Some Description";
                const int    pollChoiceNumber  = 2;

                const string newChoiceName        = "Some other option";
                const string newChoiceDescription = "Some other description";


                IDbSet <Poll> polls = DbSetTestHelper.CreateMockDbSet <Poll>();
                var           poll  = new Poll()
                {
                    ManageId = PollManageGuid
                };


                IDbSet <Choice> options = DbSetTestHelper.CreateMockDbSet <Choice>();
                var             option  = new Choice()
                {
                    Name             = optionName,
                    Description      = optionDescription,
                    PollChoiceNumber = pollChoiceNumber
                };

                poll.Choices.Add(option);

                options.Add(option);
                polls.Add(poll);


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

                var request = new ManageChoiceUpdateRequest();

                var optionRequest = new ChoiceUpdate()
                {
                    Name         = newChoiceName,
                    Description  = newChoiceDescription,
                    ChoiceNumber = pollChoiceNumber
                };

                request.Choices.Add(optionRequest);


                ManageChoiceController controller = CreateManageChoiceController(contextFactory);


                controller.Put(PollManageGuid, request);


                Assert.AreEqual(newChoiceName, options.First().Name);
                Assert.AreEqual(newChoiceDescription, options.First().Description);
            }
Example #4
0
        public ColumnModelChoice(DataSnapshot data) : base(data)
        {
            choices = new List <string> {
                ""
            };
            choiceKeys = new List <string>();

            this.Data = this.data;
            this.data.Clear();

            updateListener = new ChoiceUpdate(this);

            dataReference = data.Child("data").Ref;
            dataReference.AddChildEventListener(updateListener);
        }
        private void UpdateOptions(ManageChoiceUpdateRequest request, Poll poll, IEnumerable <int> optionsToUpdate)
        {
            foreach (int pollOptionNumber in optionsToUpdate)
            {
                Choice option = poll
                                .Choices
                                .Single(o => o.PollChoiceNumber == pollOptionNumber);

                ChoiceUpdate update = request
                                      .Choices
                                      .Single(o => o.ChoiceNumber == pollOptionNumber);

                option.Name        = update.Name;
                option.Description = update.Description;

                _metricHandler.HandleChoiceUpdatedEvent(option, poll.UUID);
            }
        }
            public void ChoiceWithUnknownPollChoiceNumber_ThrowsNotFound()
            {
                const string optionName              = "Some Choice";
                const string optionDescription       = "Some Description";
                const int    pollChoiceNumber        = 2;
                const int    unknownPollChoiceNumber = 3;

                IDbSet <Poll> polls = DbSetTestHelper.CreateMockDbSet <Poll>();
                var           poll  = new Poll()
                {
                    ManageId = PollManageGuid
                };

                IDbSet <Choice> options = DbSetTestHelper.CreateMockDbSet <Choice>();
                var             option  = new Choice()
                {
                    Name             = optionName,
                    Description      = optionDescription,
                    PollChoiceNumber = pollChoiceNumber
                };

                poll.Choices.Add(option);

                options.Add(option);
                polls.Add(poll);

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

                var request       = new ManageChoiceUpdateRequest();
                var optionRequest = new ChoiceUpdate()
                {
                    Name         = optionName,
                    Description  = optionDescription,
                    ChoiceNumber = unknownPollChoiceNumber
                };

                request.Choices.Add(optionRequest);


                ManageChoiceController controller = CreateManageChoiceController(contextFactory);


                controller.Put(PollManageGuid, request);
            }
            public void ChoiceWithNoPollChoiceNumber_IsAddedToChoices()
            {
                const string optionName        = "Some Choice";
                const string optionDescription = "Some Description";


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

                polls.Add(new Poll()
                {
                    ManageId = PollManageGuid
                });

                IDbSet <Choice> options = DbSetTestHelper.CreateMockDbSet <Choice>();


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

                var request = new ManageChoiceUpdateRequest();

                var optionRequest = new ChoiceUpdate()
                {
                    Name         = optionName,
                    Description  = optionDescription,
                    ChoiceNumber = null
                };

                request.Choices.Add(optionRequest);


                ManageChoiceController controller = CreateManageChoiceController(contextFactory);


                controller.Put(PollManageGuid, request);

                Assert.AreEqual(1, options.Count());
                Assert.AreEqual(optionName, options.First().Name);
                Assert.AreEqual(optionDescription, options.First().Description);
            }
Example #8
0
 public void UpdateChoice(ChoiceUpdate choiceUpdate)
 {
     _tPClient.SendAsync(choiceUpdate);
 }
            public void MultipleRequests()
            {
                const string optionRemoveName        = "Some Choice to remove";
                const string optionRemoveDescription = "Some Description to remove";
                const int    optionRemoveNumber      = 2;

                const string optionUpdateName        = "Some Choice to update";
                const string optionUpdateDescription = "Some Description to update";
                const int    optionUpdateNumber      = 1;

                const string updatedName        = "An updated Name";
                const string updatedDescription = "An updated Description";

                const string addName        = "A new option";
                const string addDescription = "A new description";

                IDbSet <Poll>   polls   = DbSetTestHelper.CreateMockDbSet <Poll>();
                IDbSet <Choice> options = DbSetTestHelper.CreateMockDbSet <Choice>();
                IDbSet <Ballot> ballots = DbSetTestHelper.CreateMockDbSet <Ballot>();
                IDbSet <Vote>   votes   = DbSetTestHelper.CreateMockDbSet <Vote>();

                var poll = new Poll()
                {
                    ManageId = PollManageGuid
                };

                polls.Add(poll);

                var optionToRemove = new Choice()
                {
                    Name             = optionRemoveName,
                    Description      = optionRemoveDescription,
                    PollChoiceNumber = optionRemoveNumber
                };
                var optionToUpdate = new Choice()
                {
                    Name             = optionUpdateName,
                    Description      = optionUpdateDescription,
                    PollChoiceNumber = optionUpdateNumber
                };

                options.Add(optionToRemove);
                options.Add(optionToUpdate);

                var ballot = new Ballot();

                ballots.Add(ballot);

                var vote = new Vote();

                votes.Add(vote);

                vote.Choice = optionToRemove;
                ballot.Votes.Add(vote);
                poll.Choices.Add(optionToRemove);
                poll.Choices.Add(optionToUpdate);

                IContextFactory contextFactory = ContextFactoryTestHelper.CreateContextFactory(polls, ballots, votes, options);

                var request      = new ManageChoiceUpdateRequest();
                var updateChoice = new ChoiceUpdate()
                {
                    Name         = updatedName,
                    Description  = updatedDescription,
                    ChoiceNumber = optionUpdateNumber
                };
                var addChoice = new ChoiceUpdate()
                {
                    Name         = addName,
                    Description  = addDescription,
                    ChoiceNumber = null
                };

                request.Choices.Add(updateChoice);
                request.Choices.Add(addChoice);

                ManageChoiceController controller = CreateManageChoiceController(contextFactory);


                controller.Put(PollManageGuid, request);


                Assert.AreEqual(2, poll.Choices.Count());
                Assert.AreEqual(2, options.Count());

                Assert.AreEqual(addName, options.First().Name);
                Assert.AreEqual(addDescription, options.First().Description);

                Assert.AreEqual(updatedName, options.Last().Name);
                Assert.AreEqual(updatedDescription, options.Last().Description);
                Assert.AreEqual(optionUpdateNumber, options.Last().PollChoiceNumber);
            }