private static List <Archetype> _getArchetypesCollectionForTest()
        {
            var archetypes = new List <Archetype>();
            var archetype  = new Archetype("TestArchetype", false);

            var statistics1 = new ArchetypeStatistics(archetype, new DateTime(2019, 4, 29));

            statistics1.IncrementNumberOfDecksWhereWasUsedByAmount(10);
            statistics1.IncrementNumberOfTimesWhenArchetypeWonByAmount(1);

            var statistics2 = new ArchetypeStatistics(archetype, new DateTime(2019, 4, 30));

            statistics2.IncrementNumberOfDecksWhereWasUsedByAmount(5);
            statistics2.IncrementNumberOfTimesWhenArchetypeWonByAmount(0);

            var statistics3 = new ArchetypeStatistics(archetype, new DateTime(2019, 5, 2));

            statistics3.IncrementNumberOfDecksWhereWasUsedByAmount(200);
            statistics3.IncrementNumberOfTimesWhenArchetypeWonByAmount(50);

            archetype.Statistics.Add(statistics1);
            archetype.Statistics.Add(statistics2);
            archetype.Statistics.Add(statistics3);
            archetypes.Add(archetype);

            return(archetypes);
        }
        public void Convert_WeGetFirstDtoFromCollecti_StatisticsSuccesfullyConverted()
        {
            var statistics          = new List <ArchetypeStatistics>();
            var archetypeStatistics = new ArchetypeStatistics(
                new Archetype(Archetype.Default, true),
                new DateTime(2019, 4, 29));

            archetypeStatistics.IncrementNumberOfDecksWhereWasUsedByAmount(10);
            archetypeStatistics.IncrementNumberOfTimesWhenArchetypeWonByAmount(2);
            statistics.Add(archetypeStatistics);
            var statisticsDto = _converter.Convert(statistics).First();

            Assert.Multiple(() =>
            {
                Assert.AreEqual(
                    archetypeStatistics.NumberOfDecksWhereWasUsed,
                    statisticsDto.NumberOfDecksWhereWasUsed);
                Assert.AreEqual(
                    archetypeStatistics.NumberOfTimesWhenArchetypeWon,
                    statisticsDto.NumberOfTimesWhenArchetypeWon);
                Assert.AreEqual(
                    archetypeStatistics.DateWhenArchetypeWasUsed,
                    statisticsDto.DateWhenArchetypeWasUsed);
            });
        }
        /// <<inheritdoc />
        public Archetype GetArchetypeOfTheDecklistWithStatistics(Decklist decklist, DateTime whenDecklistWasUsed)
        {
            if (decklist.Archetype == null)
            {
                decklist.Archetype = _getTheMostUsedArchetypeInDecklist(decklist);
            }

            var statistics = decklist.Archetype.Statistics.FirstOrDefault(x => x.DateWhenArchetypeWasUsed == whenDecklistWasUsed);

            if (statistics == null)
            {
                statistics = new ArchetypeStatistics(decklist.Archetype, whenDecklistWasUsed);
                decklist.Archetype.Statistics.Add(statistics);
            }

            return(decklist.Archetype);
        }