public void TestThat_VotesForIPAddress_SetsTheVotesObtainedFromTheDataProviderOnTheModel()
        {
            var votes        = new[] { new CookieVoteModel(), new CookieVoteModel() };
            var dataProvider = new DataProviderBuilder().WithVotesForIPAddresses(votes).Build();
            var controller   = new VotingControllerBuilder().WithDataProvider(dataProvider).Build();

            var model = controller.VotesForIPAddress("1.2.3.4").GetViewModel <VotesForIpAddressViewModel>();

            CollectionAssert.AreEquivalent(votes, model.DistinctVotes);
        }
        public void TestThat_VotesForIPAddress_SetsTheIPAddressOnTheModel()
        {
            var votes        = new[] { new CookieVoteModel(), new CookieVoteModel() };
            var dataProvider = new DataProviderBuilder().WithVotesForIPAddresses(votes).Build();
            var controller   = new VotingControllerBuilder().WithDataProvider(dataProvider).Build();

            var model = controller.VotesForIPAddress("1.2.3.4").GetViewModel <VotesForIpAddressViewModel>();

            Assert.That(model.IPAddress, Is.EqualTo("1.2.3.4"));
        }
        public void TestThat_VotesForIPAddress_SetsTheHighestOccuringNumberOfVotesOnTheModel()
        {
            var votes = new[] { new CookieVoteModel {
                                    NumberOfVotes = 2
                                }, new CookieVoteModel {
                                    NumberOfVotes = 4
                                } };
            var dataProvider = new DataProviderBuilder().WithVotesForIPAddresses(votes).Build();
            var controller   = new VotingControllerBuilder().WithDataProvider(dataProvider).Build();

            var model = controller.VotesForIPAddress("1.2.3.4").GetViewModel <VotesForIpAddressViewModel>();

            Assert.That(model.HighestNumberOfVotes, Is.EqualTo(4));
        }
        public void TestThat_VotesForIPAddress_ThrowsAnException_WhenTheSuppliedIPAddressIsInavlid(string ipAddress)
        {
            var controller = new VotingControllerBuilder().Build();

            Assert.Throws <ArgumentException>(() => controller.VotesForIPAddress(ipAddress));
        }