public void Test_Statistics_RemoveAStat()
        {
            // Create the app context for the poll to run in
            IAppContext mockedAppContext = CreateMockedAppContextAndDiagnostics();

            // Create data reader for load user vote. 
            using (IDnaDataReader mockedDataReader = CreateMockedDanDataReaderForAppContextWithValues("GetUserVotes", mockedAppContext, true, true))
            {
                Stub.On(mockedDataReader).Method("GetInt32").WithAnyArguments().Will(Return.Value(1));

                Stub.On(mockedAppContext).Method("CreateDnaDataReader").With("GetUserVotes").Will(Return.Value(mockedDataReader));

                // Create a logged in editor
                IUser mockedUser = CreateMockedUserForMockedAppContext(mockedAppContext, 123456, true, true);

                // Create the Poll.
                PollContentRating testPoll = new PollContentRating(mockedAppContext, mockedUser);
                testPoll.PollID = 123;

                // add VOTECOUNT and AVERAGERATING
                testPoll.SetContentRatingStatistics(5, 2.2);
                testPoll.SetPollStatistic("votecount", null);

                Assert.IsTrue(testPoll.MakePollXML(false) != null, "MakePollXML should return true when user is logged in and stats set.");

                // Check Xml
                XmlDocument doc = new XmlDocument();
                XmlNode docNode = doc.ImportNode(testPoll.RootElement, true);
                XmlNode statNode = docNode.SelectSingleNode("POLL/STATISTICS");
                Assert.IsNotNull(statNode, "Failed to find POLL/STATISTICS");



                // Check values of Statistics XML
                Assert.IsTrue(statNode.Attributes.Count == 1, "Unexpected attributes in Poll Statistics");
                XmlNode countNode = statNode.Attributes.GetNamedItem("VOTECOUNT");
                Assert.IsNull(countNode, "Found VOTECOUNT attribute when we should not have.");

                XmlNode avgRatingNode = statNode.Attributes.GetNamedItem("AVERAGERATING");
                Assert.IsTrue(avgRatingNode.Value.Equals("2.2"), "AVERAGERATING attribute is not an expected value.");
            }
        }
        public void Test_Statistics_BlankName()
        {
            // Create the app context for the poll to run in
            IAppContext mockedAppContext = CreateMockedAppContextAndDiagnostics();

            // Create data reader for load user vote. 
            using (IDnaDataReader mockedDataReader = CreateMockedDanDataReaderForAppContextWithValues("GetUserVotes", mockedAppContext, true, true))
            {
                Stub.On(mockedDataReader).Method("GetInt32").WithAnyArguments().Will(Return.Value(1));
                Stub.On(mockedAppContext).Method("CreateDnaDataReader").With("GetUserVotes").Will(Return.Value(mockedDataReader));

                // Create a logged in editor
                IUser mockedUser = CreateMockedUserForMockedAppContext(mockedAppContext, 123456, true, true);

                // Create the Poll.
                PollContentRating testPoll = new PollContentRating(mockedAppContext, mockedUser);
                testPoll.PollID = 123;

                // try to set stat with invalid name
                testPoll.SetPollStatistic("", "blah-value");

                Assert.IsTrue(testPoll.MakePollXML(false) != null, "MakePollXML should return true when user is logged in and stats set.");

                XmlDocument doc = new XmlDocument();
                XmlNode docNode = doc.ImportNode(testPoll.RootElement, true);
                XmlNode errorNode = docNode.SelectSingleNode("ERROR");
                Assert.IsNotNull(errorNode, "Failed to find ERROR element");
                XmlNode errorAttribute = errorNode.Attributes.GetNamedItem("TYPE");
                Assert.IsTrue(errorAttribute.Value.Equals("2"), "Unexpected value for error code.");

                XmlNode statNode = docNode.SelectSingleNode("POLL/STATISTICS");
                Assert.IsNull(statNode, "Inexpected POLL/STATISTICS element");
            }
        }