public void MapScrutinMajoritaireResultatModelToResultat()
        {
            var scrutinModel = new VotingProcessModel {
                Id = 52, Mode = "scrutin-majoritaire"
            };
            var optionVainqueur = new OptionsModel
            {
                Id   = 28,
                Name = "Winner"
            };
            var optionPerdant = new OptionsModel
            {
                Id   = 32,
                Name = "Loser"
            };
            var resultatGagnant = new ResultatIndividualMajorityVotingProcessModel
            {
                Option     = optionVainqueur,
                Votes      = 3,
                Percentage = 75m
            };
            var resultatPerdant = new ResultatIndividualMajorityVotingProcessModel
            {
                Option     = optionPerdant,
                Votes      = 1,
                Percentage = 25m
            };
            var resultatModel = new ResultatMajorityVotingProcessModel
            {
                Id                = 96,
                IsValidResult     = true,
                Voters            = 4,
                Winner            = optionVainqueur,
                IndividualResults = { resultatGagnant, resultatPerdant }
            };

            var resultat = _mapper.MapResultatModelToResultat(scrutinModel, resultatModel);

            Check.That(resultat.IdVotingProcess).IsEqualTo(scrutinModel.Id);
            Check.That(resultat.IsValid).IsEqualTo(resultatModel.IsValidResult);
            Check.That(resultat.NbVoters).IsEqualTo(resultatModel.Voters);
            Check.That(resultat.IdWinningOption).IsEqualTo(resultatModel.Winner.Id);

            var scoreDetails = JsonConvert.DeserializeObject <List <ResultatIndividualMajorityVotingProcessModel> >(resultat.ScoreDetail);

            Check.That(scoreDetails[0].Votes).IsEqualTo(resultatGagnant.Votes);
            Check.That(scoreDetails[0].Percentage).IsEqualTo(resultatGagnant.Percentage);
            Check.That(scoreDetails[0].Option.Id).IsEqualTo(resultatGagnant.Option.Id);

            Check.That(scoreDetails[1].Votes).IsEqualTo(resultatPerdant.Votes);
            Check.That(scoreDetails[1].Percentage).IsEqualTo(resultatPerdant.Percentage);
            Check.That(scoreDetails[1].Option.Id).IsEqualTo(resultatPerdant.Option.Id);
        }
        public void MapResultatToResultatScrutinMajoritaireModel()
        {
            var optionVainqueur = new OptionsModel
            {
                Id   = 28,
                Name = "Winner"
            };
            var optionPerdant = new OptionsModel
            {
                Id   = 32,
                Name = "Loser"
            };
            var resultatGagnant = new ResultatIndividualMajorityVotingProcessModel
            {
                Option     = optionVainqueur,
                Votes      = 3,
                Percentage = 75m
            };
            var resultatPerdant = new ResultatIndividualMajorityVotingProcessModel
            {
                Option     = optionPerdant,
                Votes      = 1,
                Percentage = 25m
            };

            var scrutin = new VotingProcess
            {
                VotingProcessOption = new List <VotingProcessOption>
                {
                    new VotingProcessOption {
                        Option = new Option {
                            Id = optionVainqueur.Id, Name = optionVainqueur.Name
                        }
                    },
                    new VotingProcessOption {
                        Option = new Option {
                            Id = optionPerdant.Id, Name = optionPerdant.Name
                        }
                    }
                },
                VotingProcessMode = new VotingProcessMode {
                    Code = "scrutin-majoritaire"
                }
            };
            var resultat = new Result
            {
                Id = 3,
                IdWinningOption = optionVainqueur.Id,
                IsValid         = true,
                NbVoters        = 3,
                ScoreDetail     = JsonConvert.SerializeObject(new List <ResultatIndividualMajorityVotingProcessModel> {
                    resultatGagnant, resultatPerdant
                })
            };

            var resultatModel = _mapper.MapResultatToResultatModel(scrutin, resultat) as ResultatMajorityVotingProcessModel;

            Check.That(resultatModel.Id).IsEqualTo(resultat.Id);
            Check.That(resultatModel.IsValidResult).IsEqualTo(resultat.IsValid);
            Check.That(resultatModel.Voters).IsEqualTo(resultat.NbVoters);
            Check.That(resultatModel.Winner.Id).IsEqualTo(resultat.IdWinningOption);
            Check.That(resultatModel.Winner.Name).IsEqualTo(optionVainqueur.Name);

            var resultatsIndividuels = resultatModel.IndividualResults;

            Check.That(resultatsIndividuels[0].Votes).IsEqualTo(resultatGagnant.Votes);
            Check.That(resultatsIndividuels[0].Percentage).IsEqualTo(resultatGagnant.Percentage);
            Check.That(resultatsIndividuels[0].Option.Id).IsEqualTo(resultatGagnant.Option.Id);

            Check.That(resultatsIndividuels[1].Votes).IsEqualTo(resultatPerdant.Votes);
            Check.That(resultatsIndividuels[1].Percentage).IsEqualTo(resultatPerdant.Percentage);
            Check.That(resultatsIndividuels[1].Option.Id).IsEqualTo(resultatPerdant.Option.Id);
        }