public async Task DefineNewPortraits_DuplicateInRequest_IsNotDuplicated()
        {
            var portraitRepository = new PortraitRepository(MongoClient);

            int[]      portraitIds  = { 1, 1 };
            List <int> portraitList = portraitIds.ToList();
            await portraitRepository.SaveNewPortraitDefinitions(portraitList);

            var portraits = await portraitRepository.LoadPortraitDefinitions();

            Assert.AreEqual(1, portraits.Count);
            Assert.AreEqual(1.ToString(), portraits[0].Id);
        }
        public async Task DefineNewPortraits_Success()
        {
            var portraitRepository = new PortraitRepository(MongoClient);

            int[]    portraitIds    = { 1, 2, 3, 4 };
            string[] portraitGroups = { "bronze", "silver", "gold" };
            await portraitRepository.SaveNewPortraitDefinitions(portraitIds.ToList(), portraitGroups.ToList());

            var portraits = await portraitRepository.LoadPortraitDefinitions();

            Assert.AreEqual(4, portraits.Count);
            Assert.AreEqual(3, portraits.First().Groups.Count());
            Assert.AreEqual(portraits.First().Id, portraitIds.First().ToString());
        }
        public async Task DeleteDefinedPortrait_Success()
        {
            var portraitRepository = new PortraitRepository(MongoClient);

            int[]      portraitIds  = { 1, 2, 3, 4 };
            List <int> portraitList = portraitIds.ToList();
            await portraitRepository.SaveNewPortraitDefinitions(portraitList);

            portraitList.RemoveAll(x => x < 3);
            await portraitRepository.DeletePortraitDefinitions(portraitList);

            var portraits = await portraitRepository.LoadPortraitDefinitions();

            Assert.AreEqual(2, portraits.Count);
        }
        public async Task DefineNewPortraits_AlreadyExists_IsNotDuplicated()
        {
            var portraitRepository = new PortraitRepository(MongoClient);

            int[]      portraitIds  = { 1, 2, 3, 4 };
            List <int> portraitList = portraitIds.ToList();
            await portraitRepository.SaveNewPortraitDefinitions(portraitList);

            portraitList.RemoveAll(x => x > 2);
            await portraitRepository.SaveNewPortraitDefinitions(portraitList);

            var portraits = await portraitRepository.LoadPortraitDefinitions();

            Assert.AreEqual(4, portraits.Count);
        }
        public async Task DeleteDefinedPortrait_DoesNotExist_NoError()
        {
            var portraitRepository = new PortraitRepository(MongoClient);

            int[]      portraitIds  = { 1, 2, 3, 4 };
            List <int> portraitList = portraitIds.ToList();
            await portraitRepository.SaveNewPortraitDefinitions(portraitList);

            int[]      nonExistentPortraitIds  = { 10, 11 };
            List <int> nonExistentPortraitList = nonExistentPortraitIds.ToList();
            await portraitRepository.DeletePortraitDefinitions(nonExistentPortraitList);

            var portraits = await portraitRepository.LoadPortraitDefinitions();

            Assert.AreEqual(4, portraits.Count);
        }