Ejemplo n.º 1
0
        public void TestThat_GetSessionsVotedForByKnownUser_ObtainsTheSessionsForTheSpecifiedUser()
        {
            var dataProvider = new DataProviderBuilder().Build();
            var controller   = new VotingControllerBuilder().WithDataProvider(dataProvider).Build();

            controller.GetSessionsVotedForByKnownUser(1234);

            dataProvider.Received().GetVotedForSessions(1234);
        }
Ejemplo n.º 2
0
        public void TestThat_LookupIPAddress_ResolvesTheIPAddress_UsingTheDnsLookup()
        {
            var dnsLookup  = new DnsLookupBuilder().Build();
            var controller = new VotingControllerBuilder().WithDnsLookup(dnsLookup).Build();

            controller.LookupIPAddress("1.2.3.4");

            dnsLookup.Received().Resolve("1.2.3.4");
        }
Ejemplo n.º 3
0
        public void TestThat_AnonymousUserVotes_GetsItsDataFromTheDataProvider()
        {
            var dataProvider = new DataProviderBuilder().Build();
            var controller   = new VotingControllerBuilder().WithDataProvider(dataProvider).Build();

            controller.AnonymousUserVotes();

            dataProvider.Received().GetAnonymousUserVotes();
        }
Ejemplo n.º 4
0
        public void TestThat_LookupIPAddress_ReturnsTheIPAddressResolvedByTheDnsLookup()
        {
            var dnsLookup  = new DnsLookupBuilder().WithIPAddressResolvingTo("1.2.3.4", "some website").Build();
            var controller = new VotingControllerBuilder().WithDnsLookup(dnsLookup).Build();

            var result = controller.LookupIPAddress("1.2.3.4");

            Assert.That(result.Content, Is.EqualTo("some website"));
        }
Ejemplo n.º 5
0
        public void TestThat_Leaderboard_ForbidsDuplicateSpeakers()
        {
            var dataProvider = new DataProviderBuilder().WithLeaderboard(new[] { new SessionLeaderBoardEntry() }).Build();
            var controller   = new VotingControllerBuilder().WithDataProvider(dataProvider).Build();

            controller.Leaderboard(123, false);

            dataProvider.Received().GetLeaderBoard(Arg.Any <int>(), false);
        }
Ejemplo n.º 6
0
        public void TestThat_Leaderboard_LimitsTheNumberOfSessions()
        {
            var dataProvider = new DataProviderBuilder().WithLeaderboard(new[] { new SessionLeaderBoardEntry() }).Build();
            var controller   = new VotingControllerBuilder().WithDataProvider(dataProvider).Build();

            controller.Leaderboard(123);

            dataProvider.Received().GetLeaderBoard(123, Arg.Any <bool>());
        }
Ejemplo n.º 7
0
        public void TestThat_Leaderboard_SetsTheCorrectNumberOfTotalSessionsForTheConference()
        {
            var conferenceLoader = new ConferenceLoaderBuilder().WithTotalNumberOfSessions(12).Build();
            var controller       = new VotingControllerBuilder().WithConferenceLoader(conferenceLoader).Build();

            var model = controller.Index().GetViewModel <VotingStatsViewModel>();

            Assert.That(model.TotalNumberOfSessions, Is.EqualTo(12));
        }
Ejemplo n.º 8
0
        public void TestThat_VotersPerIPAddress_SetsTheVotersObtainedFromTheDataProviderOnTheModel()
        {
            var voters       = new[] { new IPAddressVoterModel(), new IPAddressVoterModel() };
            var dataProvider = new DataProviderBuilder().WithVotersForIPAddresses(voters).Build();
            var controller   = new VotingControllerBuilder().WithDataProvider(dataProvider).Build();

            var model = controller.VotersPerIPAddress().GetViewModel <VotersPerIPAddressViewModel>();

            CollectionAssert.AreEquivalent(voters, model.IPAddressVoters);
        }
Ejemplo n.º 9
0
        public void TestThat_NumberOfUsersWhoHaveCastXVotes_PassesTheCorrectChartDataToTheView()
        {
            long[][] chartData          = new long[2][];
            var      chartDataConverter = new ChartDataConverterBuilder().WithChartDataPerUser(chartData).Build();
            var      controller         = new VotingControllerBuilder().WithChartDataConverter(chartDataConverter).Build();

            var model = controller.NumberOfUsersWhoHaveCastXVotes().GetViewModel <long[][]>();

            CollectionAssert.AreEquivalent(chartData, model);
        }
Ejemplo n.º 10
0
        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);
        }
Ejemplo n.º 11
0
        public void TestThat_IPAddresses_SetsTheSessionsObtainedFromTheDataProviderOnTheModel()
        {
            var votes        = new[] { new VotesForIPAddressModel(), new VotesForIPAddressModel() };
            var dataProvider = new DataProviderBuilder().WithVotesForDistinctIPAddresses(votes).Build();
            var controller   = new VotingControllerBuilder().WithDataProvider(dataProvider).Build();

            var model = controller.IPAddresses().GetViewModel <IPAddressStatsViewModel>();

            CollectionAssert.AreEquivalent(votes, model.IPAddresses);
        }
Ejemplo n.º 12
0
        public void TestThat_GetSessionsVotedForByAnonymousUser_ObtainsTheSessionsForTheSpecifiedCookieId()
        {
            var dataProvider = new DataProviderBuilder().Build();
            var controller   = new VotingControllerBuilder().WithDataProvider(dataProvider).Build();
            var cookieId     = Guid.NewGuid();

            controller.GetSessionsVotedForByAnonymousUser(cookieId);

            dataProvider.Received().GetVotedForSessions(cookieId);
        }
Ejemplo n.º 13
0
        public void TestThat_Leaderboard_SetsTheSessionsObtainedFromTheDataProviderOnTheModel()
        {
            var sessions     = new[] { new SessionLeaderBoardEntry(), new SessionLeaderBoardEntry() };
            var dataProvider = new DataProviderBuilder().WithLeaderboard(sessions).Build();
            var controller   = new VotingControllerBuilder().WithDataProvider(dataProvider).Build();

            var model = controller.Leaderboard().GetViewModel <LeaderboardViewModel>();

            CollectionAssert.AreEquivalent(sessions, model.Sessions);
        }
Ejemplo n.º 14
0
        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"));
        }
Ejemplo n.º 15
0
        public void TestThat_VotesPerDate_PassesTheCorrectChartDataToTheView()
        {
            long[][] chartData          = new long[2][];
            var      chartDataConverter = new ChartDataConverterBuilder().WithChartDataPerDate(chartData).Build();
            var      controller         = new VotingControllerBuilder().WithChartDataConverter(chartDataConverter).Build();

            var model = controller.VotesPerDate().GetViewModel <VotesPerDateViewModel>();

            CollectionAssert.AreEquivalent(chartData, model.DayByDay);
            CollectionAssert.AreEquivalent(chartData, model.Cumulative);
        }
Ejemplo n.º 16
0
        public void TestThat_Index_DoesNotCalculateTheNumberOfDaysOfVotingPassedGreaterThanTheTotalNumberOfAllowableVotingDays()
        {
            var dataProvider = new DataProviderBuilder()
                               .WithNumberOfDaysSinceVotingOpened(25)
                               .WithNumberOfDaysOfVoting(10)
                               .Build();
            var controller = new VotingControllerBuilder().WithDataProvider(dataProvider).Build();

            var model = controller.Index().GetViewModel <VotingStatsViewModel>();

            Assert.That(model.NumberOfDaysOfVotingPassed, Is.EqualTo(10));
        }
Ejemplo n.º 17
0
        public void TestThat_Index_DoesNotCalculateGreaterThanOneHunderdPercent_ForTheDurationThroughTheVotingPeriod()
        {
            var dataProvider = new DataProviderBuilder()
                               .WithNumberOfDaysSinceVotingOpened(25)
                               .WithNumberOfDaysOfVoting(10)
                               .Build();
            var controller = new VotingControllerBuilder().WithDataProvider(dataProvider).Build();

            var model = controller.Index().GetViewModel <VotingStatsViewModel>();

            Assert.That(model.VotingCompletePercentage, Is.EqualTo(100));
        }
Ejemplo n.º 18
0
        public void TestThat_NumberOfUsersWhoHaveCastXVotes_UsesTheDataObtainedFromTheDataProvider_ToCreateTheChartData()
        {
            var voteCounts         = new[] { new NumberOfUsersWithVotesModel() };
            var dataProvider       = new DataProviderBuilder().WithNumberOfVotesCastCounts(voteCounts).Build();
            var chartDataConverter = new ChartDataConverterBuilder().Build();
            var controller         = new VotingControllerBuilder().WithDataProvider(dataProvider)
                                     .WithChartDataConverter(chartDataConverter)
                                     .Build();

            controller.NumberOfUsersWhoHaveCastXVotes();

            chartDataConverter.Received().ToChartData(voteCounts);
        }
Ejemplo n.º 19
0
        public void TestThat_Index_CalculatesTheCorrectPercentage_ForTheDurationThroughTheVotingPeriod(
            int numberOfDaysSinceVotingOpened, int numberOfDaysVoting, int expectedPercentageCompletion)
        {
            var dataProvider = new DataProviderBuilder()
                               .WithNumberOfDaysSinceVotingOpened(numberOfDaysSinceVotingOpened)
                               .WithNumberOfDaysOfVoting(numberOfDaysVoting)
                               .Build();
            var controller = new VotingControllerBuilder().WithDataProvider(dataProvider).Build();

            var model = controller.Index().GetViewModel <VotingStatsViewModel>();

            Assert.That(model.VotingCompletePercentage, Is.EqualTo(expectedPercentageCompletion));
        }
Ejemplo n.º 20
0
        public void TestThat_IPAddresses_SetsTheHighestOccuringNumberOfVotesOnTheModel()
        {
            var votes = new[] { new VotesForIPAddressModel {
                                    NumberOfVotes = 2
                                }, new VotesForIPAddressModel {
                                    NumberOfVotes = 4
                                } };
            var dataProvider = new DataProviderBuilder().WithVotesForDistinctIPAddresses(votes).Build();
            var controller   = new VotingControllerBuilder().WithDataProvider(dataProvider).Build();

            var model = controller.IPAddresses().GetViewModel <IPAddressStatsViewModel>();

            Assert.That(model.HighestVoteCount, Is.EqualTo(4));
        }
Ejemplo n.º 21
0
        public void TestThat_VotesPerDay_UsesTheDataObtainedFromTheDataProvider_ToCreateTheChartData()
        {
            var votes              = new[] { new DayOfWeekVoteModel() };
            var dataProvider       = new DataProviderBuilder().WithVotesPerDay(votes).Build();
            var chartDataConverter = new ChartDataConverterBuilder().Build();
            var controller         = new VotingControllerBuilder()
                                     .WithDataProvider(dataProvider)
                                     .WithChartDataConverter(chartDataConverter)
                                     .Build();

            controller.VotesPerDay();

            chartDataConverter.Received().ToChartData(votes);
        }
Ejemplo n.º 22
0
        public void TestThat_VotesPerHour_UsesTheDataObtainedFromTheDataProvider_ToCreateTheChartData()
        {
            var votes              = new[] { new DateTimeVoteModel() };
            var dataProvider       = new DataProviderBuilder().WithVotesPerHour(votes).Build();
            var chartDataConverter = new ChartDataConverterBuilder().Build();
            var controller         = new VotingControllerBuilder()
                                     .WithDataProvider(dataProvider)
                                     .WithChartDataConverter(chartDataConverter)
                                     .Build();

            controller.VotesPerHour();

            chartDataConverter.Received().ToChartData(votes, Arg.Any <Func <DateTimeVoteModel, long> >());
        }
Ejemplo n.º 23
0
        public void TestThat_Leaderboard_SetsTheHighestOccuringNumberOfVotesOnTheModel()
        {
            var sessions = new[] { new SessionLeaderBoardEntry {
                                       NumberOfVotes = 2
                                   }, new SessionLeaderBoardEntry {
                                       NumberOfVotes = 4
                                   } };
            var dataProvider = new DataProviderBuilder().WithLeaderboard(sessions).Build();
            var controller   = new VotingControllerBuilder().WithDataProvider(dataProvider).Build();

            var model = controller.Leaderboard().GetViewModel <LeaderboardViewModel>();

            Assert.That(model.HighestVoteCount, Is.EqualTo(4));
        }
Ejemplo n.º 24
0
        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));
        }
Ejemplo n.º 25
0
        public void TestThat_VotesForIPAddress_ThrowsAnException_WhenTheSuppliedIPAddressIsInavlid(string ipAddress)
        {
            var controller = new VotingControllerBuilder().Build();

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