public void HasDuplicates2_KeepStatusCode_Test()
    {
      var votes = new List<vVoteInfo>
                    {
                      new vVoteInfo {PersonGuid = Guid.NewGuid()},
                    };


      var model = new BallotAnalyzer(3, _fakes.SaveChanges, false);

      string newStatus;

      // keep Review
      int spoiledCount;
      model.DetermineStatusFromVotesList(BallotStatusEnum.Review, votes, out newStatus, out spoiledCount).ShouldEqual(false);
      newStatus.ShouldEqual(BallotStatusEnum.Review);
      spoiledCount.ShouldEqual(0);

      // override OK
      model.DetermineStatusFromVotesList(BallotStatusEnum.Ok, votes, out newStatus, out spoiledCount).ShouldEqual(true);
      newStatus.ShouldEqual(BallotStatusEnum.TooFew);
      spoiledCount.ShouldEqual(0);
    }
    public void HasDuplicates_and_Too_Many_Test()
    {
      var dupPersonGuid = Guid.NewGuid();

      var votes = new List<vVoteInfo>
                    {
                      new vVoteInfo {PersonGuid = Guid.NewGuid()},
                      new vVoteInfo {PersonGuid = dupPersonGuid},
                      new vVoteInfo {PersonGuid = dupPersonGuid},
                      new vVoteInfo {PersonGuid = Guid.NewGuid()},
                      new vVoteInfo {PersonGuid = Guid.NewGuid()},
                      new vVoteInfo {PersonGuid = Guid.NewGuid()},
                    };

      var model = new BallotAnalyzer(5, _fakes.SaveChanges, false);

      string newStatus;
      int spoiledCount;
      model.DetermineStatusFromVotesList(BallotStatusEnum.Ok, votes, out newStatus, out spoiledCount).ShouldEqual(true);

      newStatus.ShouldEqual(BallotStatusEnum.TooMany);
    }
    public void AllSpoiled_Test()
    {
      var dupPersonGuid = Guid.NewGuid();

      var votes = new List<vVoteInfo>
                    {
                      new vVoteInfo {PersonIneligibleReasonGuid = Guid.NewGuid()},
                      new vVoteInfo {VoteIneligibleReasonGuid = Guid.NewGuid()},
                      new vVoteInfo {PersonIneligibleReasonGuid = Guid.NewGuid()},
                    };

      var model = new BallotAnalyzer(3, _fakes.SaveChanges, false);

      string newStatus;
      int spoiledCount;
      model.DetermineStatusFromVotesList(BallotStatusEnum.Ok, votes, out newStatus, out spoiledCount).ShouldEqual(false);

      newStatus.ShouldEqual(BallotStatusEnum.Ok);
      spoiledCount.ShouldEqual(3);
    }
    public void KeepReviewStatus_Test()
    {
      var votes = new List<vVoteInfo>
                    {
                      new vVoteInfo {PersonGuid = Guid.NewGuid()},
                    };

      var model = new BallotAnalyzer(3, _fakes.SaveChanges, false);

      string newStatus;
      int spoiledCount;
      model.DetermineStatusFromVotesList(BallotStatusEnum.Review, votes, out newStatus, out spoiledCount).ShouldEqual(false);
      newStatus.ShouldEqual(BallotStatusEnum.Review);


      votes = new List<vVoteInfo>
                    {
                      new vVoteInfo {PersonGuid = Guid.NewGuid()},
                      new vVoteInfo {PersonGuid = Guid.NewGuid()},
                      new vVoteInfo {PersonGuid = Guid.NewGuid()},
                    };

      model.DetermineStatusFromVotesList(BallotStatusEnum.Review, votes, out newStatus, out spoiledCount).ShouldEqual(false);
      newStatus.ShouldEqual(BallotStatusEnum.Review);
    }
    public void TooFewNumberOfVotesWithBlank_Test()
    {
      var votes = new List<vVoteInfo>
                    {
                      new vVoteInfo {VoteIneligibleReasonGuid = IneligibleReasonEnum.Unreadable_Vote_is_blank},
                      new vVoteInfo {PersonGuid = Guid.NewGuid()},
                      new vVoteInfo {PersonGuid = Guid.NewGuid()},
                    };

      var model = new BallotAnalyzer(3, _fakes.SaveChanges, false);

      string newStatus;
      int spoiledCount;
      model.DetermineStatusFromVotesList(null, votes, out newStatus, out spoiledCount).ShouldEqual(true);

      newStatus.ShouldEqual(BallotStatusEnum.TooFew);
      spoiledCount.ShouldEqual(0);
    }
    public void EmptyNumberOfVotes_Test()
    {
      var votes = new List<vVoteInfo>
                    {
                    };

      var model = new BallotAnalyzer(3, _fakes.SaveChanges, false);

      string newStatus;
      int spoiledCount;
      model.DetermineStatusFromVotesList(null, votes, out newStatus, out spoiledCount).ShouldEqual(true);

      newStatus.ShouldEqual(BallotStatusEnum.Empty);
    }
    public void SingleIneligible_Test()
    {
      var votes = new List<vVoteInfo>
                    {
                      new vVoteInfo
                        {
                          VoteIneligibleReasonGuid = IneligibleReasonEnum.Unreadable_Not_a_complete_name,
                          SingleNameElectionCount = 4
                        },
                    };

      var model = new BallotAnalyzer(1, _fakes.SaveChanges, true);

      string newStatus;
      int spoiledCount;
      model.DetermineStatusFromVotesList(null, votes, out newStatus, out spoiledCount).ShouldEqual(true);

      newStatus.ShouldEqual(BallotStatusEnum.Ok);
    }
    public void TooManyNumberOfVotes_Test()
    {
      var voteInfos = new List<vVoteInfo>
                    {
                      new vVoteInfo {PersonGuid = Guid.NewGuid()},
                      new vVoteInfo {PersonGuid = Guid.NewGuid()},
                      new vVoteInfo {PersonGuid = Guid.NewGuid()},
                      new vVoteInfo {PersonGuid = Guid.NewGuid()},
                    };

      var model = new BallotAnalyzer(3, _fakes.SaveChanges, false);

      string newStatus;
      int spoiledCount;
      model.DetermineStatusFromVotesList(null, voteInfos, out newStatus, out spoiledCount).ShouldEqual(true);

      newStatus.ShouldEqual(BallotStatusEnum.TooMany);
      spoiledCount.ShouldEqual(0);
    }