public async Task TestWithNoneAttending() { //Arrange using var testHandle = new UnitTestHandle(); var data = new List <ApplicationUser>().AsQueryable(); TestHelper.SetupData(data, testHandle); testHandle.MockContext.Setup(c => c.Users).Returns(testHandle.MockSet.Object); var command = new GetRandomPairingsOfAttendingUsersWithLevelQuery(Level.Beginner); var mediator = new Mock <IMediator>(); mediator .Setup(x => x .Send(It.IsAny <GetAllAttendingUsersWithLevelQuery>(), CancellationToken.None)) .Returns(Task.FromResult(data.ToList())); var commandHandler = new GetRandomPairingsOfAttendingUsersWithLevelQueryHandler(mediator.Object); //Act var result = await commandHandler.Handle(command, new CancellationToken()); //Assert Assert.AreEqual(0, result.Count); }
public async Task TestEqualBoysAndGirlsWithSomeFormerPartners() { //Arrange using var testHandle = new UnitTestHandle(); var data = new List <ApplicationUser>(); var time = DateTime.Now; var firstBoy = new ApplicationUser(Level.Beginner, DanceGender.Male) { Attending = time, Id = "first-boy" }; var firstGirl = new ApplicationUser(Level.Beginner, DanceGender.Female) { Attending = time, Id = "first-girl" }; var secondBoy = new ApplicationUser(Level.Beginner, DanceGender.Male) { Attending = time }; var secondGirl = new ApplicationUser(Level.Beginner, DanceGender.Female) { Attending = time }; data.Add(firstBoy); data.Add(firstGirl); data.Add(secondBoy); data.Add(secondGirl); firstBoy.FormerMatches.Add(new FormerMatch(firstGirl.Id, time)); firstGirl.FormerMatches.Add(new FormerMatch(firstBoy.Id, time)); TestHelper.SetupData(data.AsQueryable(), testHandle); testHandle.MockContext.Setup(c => c.Users).Returns(testHandle.MockSet.Object); var command = new GetRandomPairingsOfAttendingUsersWithLevelQuery(Level.Beginner); var mediator = new Mock <IMediator>(); mediator .Setup(x => x .Send(It.IsAny <GetAllAttendingUsersWithLevelQuery>(), CancellationToken.None)) .Returns(Task.FromResult(data.ToList())); var commandHandler = new GetRandomPairingsOfAttendingUsersWithLevelQueryHandler(mediator.Object); //Act var result = await commandHandler.Handle(command, new CancellationToken()); //Assert Assert.AreEqual(4, result.Count); Assert.AreNotEqual(null, result.First(x => x.Id == firstBoy.Id).Match); Assert.AreNotEqual(firstGirl.Id, result.First(x => x.Id == firstBoy.Id).Match !.Id); }
public async Task TestOneMoreBoyThanGirl() { //Arrange using var testHandle = new UnitTestHandle(); var data = new List <ApplicationUser> { new ApplicationUser(Level.Beginner, DanceGender.Male) { Attending = DateTime.Now }, new ApplicationUser(Level.Beginner, DanceGender.Male) { Attending = DateTime.Now, Id = "some-id" }, new ApplicationUser(Level.Beginner, DanceGender.Female) { Attending = DateTime.Now }, }.AsQueryable(); TestHelper.SetupData(data, testHandle); testHandle.MockContext.Setup(c => c.Users).Returns(testHandle.MockSet.Object); var command = new GetRandomPairingsOfAttendingUsersWithLevelQuery(Level.Beginner); var mediator = new Mock <IMediator>(); mediator .Setup(x => x .Send(It.IsAny <GetAllAttendingUsersWithLevelQuery>(), CancellationToken.None)) .Returns(Task.FromResult(data.ToList())); var commandHandler = new GetRandomPairingsOfAttendingUsersWithLevelQueryHandler(mediator.Object); //Act var result = await commandHandler.Handle(command, new CancellationToken()); //Assert Assert.AreEqual(2, result.Count); Assert.AreEqual(result.FirstOrDefault(x => x.Id == "some-id"), null); }
public async Task TestEqualBoysAndGirlsWithManyFormerPartners() { //Arrange using var testHandle = new UnitTestHandle(); var data = new List <ApplicationUser>(); var time = DateTime.Now; var firstBoy = new ApplicationUser(DanceGender.Male) { Levels = new List <string> { Level.Beginner }, Attending = new Attending(time) { Levels = new List <string> { Level.Beginner } }, Id = "first-boy" }; var firstGirl = new ApplicationUser(DanceGender.Female) { Levels = new List <string> { Level.Beginner }, Attending = new Attending(time) { Levels = new List <string> { Level.Beginner } }, Id = "first-girl" }; var secondBoy = new ApplicationUser(DanceGender.Male) { Levels = new List <string> { Level.Beginner }, Attending = new Attending(time) { Levels = new List <string> { Level.Beginner } }, Id = "second-boy" }; var secondGirl = new ApplicationUser(DanceGender.Female) { Levels = new List <string> { Level.Beginner }, Attending = new Attending(time) { Levels = new List <string> { Level.Beginner } }, Id = "second-girl" }; var thirdBoy = new ApplicationUser(DanceGender.Male) { Levels = new List <string> { Level.Beginner }, Attending = new Attending(time) { Levels = new List <string> { Level.Beginner } }, Id = "third-boy" }; var thirdGirl = new ApplicationUser(DanceGender.Female) { Levels = new List <string> { Level.Beginner }, Attending = new Attending(time) { Levels = new List <string> { Level.Beginner } }, Id = "third-girl" }; var fourthBoy = new ApplicationUser(DanceGender.Male) { Levels = new List <string> { Level.Beginner }, Attending = new Attending(time) { Levels = new List <string> { Level.Beginner } }, Id = "fourth-boy" }; var fourthGirl = new ApplicationUser(DanceGender.Female) { Levels = new List <string> { Level.Beginner }, Attending = new Attending(time) { Levels = new List <string> { Level.Beginner } }, Id = "fourth-girl" }; data.Add(secondBoy); data.Add(secondGirl); data.Add(firstBoy); data.Add(firstGirl); data.Add(thirdBoy); data.Add(thirdGirl); data.Add(fourthBoy); data.Add(fourthGirl); firstBoy.FormerMatches.AddRange(new List <FormerMatch> { new FormerMatch(firstGirl.Id, time), new FormerMatch(secondGirl.Id, time), new FormerMatch(secondGirl.Id, time), new FormerMatch(thirdGirl.Id, time) }); firstGirl.FormerMatches.AddRange(new List <FormerMatch> { new FormerMatch(firstBoy.Id, time), new FormerMatch(thirdBoy.Id, time), new FormerMatch(fourthBoy.Id, time) }); secondBoy.FormerMatches.AddRange(new List <FormerMatch> { new FormerMatch(secondGirl.Id, time), new FormerMatch(secondGirl.Id, time), new FormerMatch(fourthGirl.Id, time) }); secondGirl.FormerMatches.AddRange(new List <FormerMatch> { new FormerMatch(secondBoy.Id, time), new FormerMatch(secondBoy.Id, time), new FormerMatch(firstBoy.Id, time), new FormerMatch(firstBoy.Id, time) }); thirdBoy.FormerMatches.AddRange(new List <FormerMatch> { new FormerMatch(firstGirl.Id, time), new FormerMatch(fourthGirl.Id, time), }); thirdGirl.FormerMatches.AddRange(new List <FormerMatch> { new FormerMatch(firstBoy.Id, time), new FormerMatch(fourthBoy.Id, time), new FormerMatch(fourthBoy.Id, time) }); fourthBoy.FormerMatches.AddRange(new List <FormerMatch> { new FormerMatch(firstGirl.Id, time), new FormerMatch(thirdGirl.Id, time), new FormerMatch(thirdGirl.Id, time) }); fourthGirl.FormerMatches.AddRange(new List <FormerMatch> { new FormerMatch(secondBoy.Id, time), new FormerMatch(thirdBoy.Id, time) }); TestHelper.SetupData(data.AsQueryable(), testHandle); testHandle.MockContext.Setup(c => c.Users).Returns(testHandle.MockSet.Object); var command = new GetRandomPairingsOfAttendingUsersWithLevelQuery(new List <string> { Level.Beginner }); var mediator = new Mock <IMediator>(); mediator .Setup(x => x .Send(It.IsAny <GetAllAttendingUsersWithLevelQuery>(), CancellationToken.None)) .Returns(Task.FromResult(data.ToList())); var commandHandler = new GetRandomPairingsOfAttendingUsersWithLevelQueryHandler(mediator.Object); //Act var result = await commandHandler.Handle(command, new CancellationToken()); //Assert Assert.AreEqual(4, result.Pairings.Count); Assert.AreEqual(0, result.LeftoverUsers.Count); Assert.AreEqual(fourthGirl.Id, result.Pairings.First(x => x.Male.Id == firstBoy.Id).Female.Id); Assert.AreEqual(firstGirl.Id, result.Pairings.First(x => x.Male.Id == secondBoy.Id).Female.Id); Assert.AreEqual(thirdGirl.Id, result.Pairings.First(x => x.Male.Id == thirdBoy.Id).Female.Id); Assert.AreEqual(secondGirl.Id, result.Pairings.First(x => x.Male.Id == fourthBoy.Id).Female.Id); }
public async Task TestEqualBoysAndGirls() { //Arrange using var testHandle = new UnitTestHandle(); var data = new List <ApplicationUser> { new ApplicationUser(DanceGender.Male) { Levels = new List <string> { Level.Beginner }, Attending = new Attending(DateTime.Now) { Levels = new List <string> { Level.Beginner } } }, new ApplicationUser(DanceGender.Female) { Levels = new List <string> { Level.Beginner }, Attending = new Attending(DateTime.Now) { Levels = new List <string> { Level.Beginner } } }, new ApplicationUser(DanceGender.Male) { Levels = new List <string> { Level.Beginner }, Attending = new Attending(DateTime.Now) { Levels = new List <string> { Level.Beginner } } }, new ApplicationUser(DanceGender.Female) { Levels = new List <string> { Level.Beginner }, Attending = new Attending(DateTime.Now) { Levels = new List <string> { Level.Beginner } } }, }.AsQueryable(); TestHelper.SetupData(data, testHandle); testHandle.MockContext.Setup(c => c.Users).Returns(testHandle.MockSet.Object); var command = new GetRandomPairingsOfAttendingUsersWithLevelQuery(new List <string> { Level.Beginner }); var mediator = new Mock <IMediator>(); mediator .Setup(x => x .Send(It.IsAny <GetAllAttendingUsersWithLevelQuery>(), CancellationToken.None)) .Returns(Task.FromResult(data.ToList())); var commandHandler = new GetRandomPairingsOfAttendingUsersWithLevelQueryHandler(mediator.Object); //Act var result = await commandHandler.Handle(command, new CancellationToken()); //Assert Assert.AreEqual(2, result.Pairings.Count); }