public void DetermineQuartileShouldDetermineCorrectQuartileByValue()
        {
            Quartile bronzeQuartile = new Quartile
                {
                    Name = "bronze",
                    Min = 0,
                    Max = 24
                };
            Quartile silverQuartile = new Quartile
                {
                    Name = "silver",
                    Min = 25,
                    Max = 49
                };
            Quartile goldQuartile = new Quartile
                {
                    Name = "gold",
                    Min = 50,
                    Max = 74
                };
            Quartile platinumQuartile = new Quartile
                {
                    Name = "platinum",
                    Min = 75,
                    Max = 100
                };

            _salesLeadCalcuationUtils.DetermineQuartile(0).ShouldBeEquivalentTo(bronzeQuartile);
            _salesLeadCalcuationUtils.DetermineQuartile(24).ShouldBeEquivalentTo(bronzeQuartile);
            _salesLeadCalcuationUtils.DetermineQuartile(25).ShouldBeEquivalentTo(silverQuartile);
            _salesLeadCalcuationUtils.DetermineQuartile(49).ShouldBeEquivalentTo(silverQuartile);
            _salesLeadCalcuationUtils.DetermineQuartile(50).ShouldBeEquivalentTo(goldQuartile);
            _salesLeadCalcuationUtils.DetermineQuartile(74).ShouldBeEquivalentTo(goldQuartile);
            _salesLeadCalcuationUtils.DetermineQuartile(75).ShouldBeEquivalentTo(platinumQuartile);
            _salesLeadCalcuationUtils.DetermineQuartile(100).ShouldBeEquivalentTo(platinumQuartile);
        }
 public void ConvertToType()
 {
     const string testFilePath = "C:\testFile.csv";
     var readRowResults = new Results<bool>(true)
         .Then(true)
         .Then(true)
         .Then(false);
     var columnResults = new Results<List<string>>(new List<string> { "1", "Email", "150.2" })
         .Then(new List<string> { "2", "Email", "150.2" })
         .Then(new List<string> { "3", "Email", "150.2" });
     EventType et1;
     _eventTypeConverter.TryParseString("Email", out et1).Returns(x =>
     {
         x[1] = EventType.Email;
         return true;
     });
     _csvParser.ReadRow(null).ReturnsForAnyArgs(x =>
     {
         var hasNext = readRowResults.Next();
         if (!hasNext) return false;
         ((Row)x[0]).Columns = columnResults.Next();
         return true;
     });
     _salesLeadCalculationUtils.CalculateWeightedValue(EventType.Email, 0.0).ReturnsForAnyArgs(100);
     _csvReaderFactory.CreateCsvParser(testFilePath).ReturnsForAnyArgs(_csvParser);
     _salesLeadCalculationUtils.CalculateNormalizedValue(0, 0, 0).ReturnsForAnyArgs(100);
     Quartile testQuartile = new Quartile
     {
         Max = 100,
         Min = 75,
         Name = "Platinum"
     };
     _salesLeadCalculationUtils.DetermineQuartile(0).ReturnsForAnyArgs(testQuartile);
     List<SalesLead> expectedResult = new List<SalesLead>
     {
         new SalesLead
         {
             ContactId = 1,
             EventScores = new List<EventScore>
             {
                 new EventScore
                 {
                     Score = 150.2,
                     Type = EventType.Email,
                     WeightedScore = 100
                 }
             },
             EventScoreSum = 100,
             EventScoreNormalized = 100,
             ContactQuartile = testQuartile
         },
         new SalesLead
         {
             ContactId = 2,
             EventScores = new List<EventScore>
             {
                 new EventScore
                 {
                     Score = 150.2,
                     Type = EventType.Email,
                     WeightedScore = 100
                 }
             },
             EventScoreSum = 100,
             EventScoreNormalized = 100,
             ContactQuartile = testQuartile
         },
         new SalesLead
         {
             ContactId = 3,
             EventScores = new List<EventScore>
             {
                 new EventScore
                 {
                     Score = 150.2,
                     Type = EventType.Email,
                     WeightedScore = 100
                 }
             },
             EventScoreSum = 100,
             EventScoreNormalized = 100,
             ContactQuartile = testQuartile
         }
     };
     var result = _salesLeadTypeConverter.ConvertToType(testFilePath);
     result.Count.ShouldBeEquivalentTo(3);
     result.ShouldBeEquivalentTo(expectedResult);
 }