public void Can_clone()
        {	    
            //create
            var model1 = new PollModel()
            {
                Id = 1,
                Name = "Name 1",
                AlreadyVoted = true,
                TotalVotes = 2,
            };
            model1.Answers.Add(new PollAnswerModel() { Id = 3, Name = "answer 1", NumberOfVotes = 4, PercentOfTotalVotes = 5 });

            //clone
            var model2 = (PollModel)model1.Clone();
            model2.Id.ShouldEqual(1);
            model2.Name.ShouldEqual("Name 1");
            model2.AlreadyVoted.ShouldEqual(true);
            model2.TotalVotes.ShouldEqual(2);
            model2.Answers.ShouldNotBeNull();
            model2.Answers.Count.ShouldEqual(1);
            model2.Answers[0].Id.ShouldEqual(3);
            model2.Answers[0].Name.ShouldEqual("answer 1");
            model2.Answers[0].NumberOfVotes.ShouldEqual(4);
            model2.Answers[0].PercentOfTotalVotes.ShouldEqual(5);
        }
        protected PollModel PreparePollModel(Poll poll, bool setAlreadyVotedProperty)
        {
            var model = new PollModel()
            {
                Id = poll.Id,
                AlreadyVoted = setAlreadyVotedProperty && _pollService.AlreadyVoted(poll.Id, _workContext.CurrentCustomer.Id),
                Name = poll.Name
            };
            var answers = poll.PollAnswers.OrderBy(x => x.DisplayOrder);
            foreach (var answer in answers)
                model.TotalVotes += answer.NumberOfVotes;
            foreach (var pa in answers)
            {
                model.Answers.Add(new PollAnswerModel()
                {
                    Id = pa.Id,
                    Name = pa.Name,
                    NumberOfVotes = pa.NumberOfVotes,
                    PercentOfTotalVotes = model.TotalVotes > 0 ? ((Convert.ToDouble(pa.NumberOfVotes) / Convert.ToDouble(model.TotalVotes)) * Convert.ToDouble(100)) : 0,
                });
            }

            return model;
        }