public async Task can_find_by_user() { IBadgeRepo badgeRepo = CreateBadgeRepo(); // given Badge badgeUserA1 = await badgeRepo.AddBadge("userA", PkmnSpecies.OfId("1"), Badge.BadgeSource.Pinball); Badge badgeUserA2 = await badgeRepo.AddBadge("userA", PkmnSpecies.OfId("2"), Badge.BadgeSource.Pinball); Badge badgeUserB = await badgeRepo.AddBadge("userB", PkmnSpecies.OfId("3"), Badge.BadgeSource.Pinball); Badge badgeNobody = await badgeRepo.AddBadge(null, PkmnSpecies.OfId("4"), Badge.BadgeSource.Pinball); // when List <Badge> resultUserA = await badgeRepo.FindByUser("userA"); List <Badge> resultUserB = await badgeRepo.FindByUser("userB"); List <Badge> resultNobody = await badgeRepo.FindByUser(null); // then Assert.AreEqual(new List <Badge> { badgeUserA1, badgeUserA2 }, resultUserA); Assert.AreEqual(new List <Badge> { badgeUserB }, resultUserB); Assert.AreEqual(new List <Badge> { badgeNobody }, resultNobody); }
public async Task can_count_by_user_and_species() { IBadgeRepo badgeRepo = CreateBadgeRepo(); // given await badgeRepo.AddBadge("user", PkmnSpecies.OfId("2"), Badge.BadgeSource.Pinball); await badgeRepo.AddBadge("user", PkmnSpecies.OfId("3"), Badge.BadgeSource.Pinball); await badgeRepo.AddBadge("user", PkmnSpecies.OfId("3"), Badge.BadgeSource.Pinball); await badgeRepo.AddBadge("user", PkmnSpecies.OfId("3"), Badge.BadgeSource.Pinball); await badgeRepo.AddBadge("userOther", PkmnSpecies.OfId("1"), Badge.BadgeSource.Pinball); await badgeRepo.AddBadge("userOther", PkmnSpecies.OfId("2"), Badge.BadgeSource.Pinball); await badgeRepo.AddBadge("userOther", PkmnSpecies.OfId("3"), Badge.BadgeSource.Pinball); // when long countHasNone = await badgeRepo.CountByUserAndSpecies("user", PkmnSpecies.OfId("1")); long countHasOne = await badgeRepo.CountByUserAndSpecies("user", PkmnSpecies.OfId("2")); long countHasThree = await badgeRepo.CountByUserAndSpecies("user", PkmnSpecies.OfId("3")); // then Assert.AreEqual(0, countHasNone); Assert.AreEqual(1, countHasOne); Assert.AreEqual(3, countHasThree); }
public async Task <CommandResult> CreateBadge(CommandContext context) { (User recipient, PkmnSpecies species, Optional <PositiveInt> amountOpt) = await context.ParseArgs <AnyOrder <User, PkmnSpecies, Optional <PositiveInt> > >(); int amount = amountOpt.Map(i => i.Number).OrElse(1); for (int i = 0; i < amount; i++) { await _badgeRepo.AddBadge(recipient.Id, species, Badge.BadgeSource.ManualCreation); } return(new CommandResult { Response = amount > 1 ? $"{amount} badges of species {species} created for user {recipient.Name}." : $"Badge of species {species} created for user {recipient.Name}." }); }
public async Task can_count_per_species_for_one_user() { IBadgeRepo badgeRepo = CreateBadgeRepo(); // given await badgeRepo.AddBadge("user", PkmnSpecies.OfId("2"), Badge.BadgeSource.Pinball); await badgeRepo.AddBadge("user", PkmnSpecies.OfId("3"), Badge.BadgeSource.Pinball); await badgeRepo.AddBadge("user", PkmnSpecies.OfId("3"), Badge.BadgeSource.Pinball); await badgeRepo.AddBadge("user", PkmnSpecies.OfId("3"), Badge.BadgeSource.Pinball); await badgeRepo.AddBadge("userOther", PkmnSpecies.OfId("1"), Badge.BadgeSource.Pinball); await badgeRepo.AddBadge("userOther", PkmnSpecies.OfId("2"), Badge.BadgeSource.Pinball); await badgeRepo.AddBadge("userOther", PkmnSpecies.OfId("3"), Badge.BadgeSource.Pinball); // when ImmutableSortedDictionary <PkmnSpecies, int> result = await badgeRepo.CountByUserPerSpecies("user"); // then ImmutableSortedDictionary <PkmnSpecies, int> expected = new[]