public void NotAddBadgeToUser_WhenUserDoesNotHaveRequiredContributions() { // arrange var userProvider = new Mock <IUserProvider>(); var usersRepository = new Mock <IRepository <User> >(); var badgesRepository = new Mock <IRepository <Badge> >(); var unitOfWork = new Mock <IUnitOfWork>(); var user = new User() { Id = 1, ContributionsCount = 10 }; var users = new List <User>() { user }; var badge = new Badge() { RequiredContributions = 20 }; var badges = new List <Badge>() { badge }; user.Badges.Add(badge); userProvider.Setup(x => x.LoggedUser).Returns(user); usersRepository.Setup(x => x.All(It.IsAny <Expression <Func <User, bool> > >())) .Returns(users); badgesRepository.Setup(x => x.All(It.IsAny <Expression <Func <Badge, bool> > >())) .Returns(badges); var userContributionsIntereptor = new UserContributionsInterceptor( userProvider.Object, usersRepository.Object, badgesRepository.Object, unitOfWork.Object); var invocation = new Mock <IInvocation>(); // act userContributionsIntereptor.Intercept(invocation.Object); // assert Assert.AreEqual(1, user.Badges.Count); }
public void AddBadgeToUser_WhenUserHasRequiredContributionsAndHasntStillAquiredBadge() { // arrange var userProvider = new Mock <IUserProvider>(); var usersRepository = new Mock <IRepository <User> >(); var badgesRepository = new Mock <IRepository <Badge> >(); var unitOfWork = new Mock <IUnitOfWork>(); var user = new User() { Id = 1, ContributionsCount = 30 }; var users = new List <User>() { user }; var badge = new Badge() { RequiredContributions = 20, Name = "SomeName" }; var badges = new List <Badge>() { badge }; userProvider.Setup(x => x.LoggedUser).Returns(user); usersRepository.Setup(x => x.All(It.IsAny <Expression <Func <User, bool> > >())) .Returns(users); badgesRepository.Setup(x => x.All(It.IsAny <Expression <Func <Badge, bool> > >())) .Returns(badges); var userContributionsIntereptor = new UserContributionsInterceptor( userProvider.Object, usersRepository.Object, badgesRepository.Object, unitOfWork.Object); var invocation = new Mock <IInvocation>(); // act userContributionsIntereptor.Intercept(invocation.Object); // assert Assert.AreSame(badge, user.Badges.First()); }
public void IncrementUsersContrbitions_WhenSuchUserExists() { // arrange var userProvider = new Mock <IUserProvider>(); var usersRepository = new Mock <IRepository <User> >(); var badgesRepository = new Mock <IRepository <Badge> >(); var unitOfWork = new Mock <IUnitOfWork>(); var user = new User() { Id = 1 }; var users = new List <User>() { user }; var badges = new List <Badge>(); userProvider.Setup(x => x.LoggedUser).Returns(user); usersRepository.Setup(x => x.All(It.IsAny <Expression <Func <User, bool> > >())) .Returns(users); badgesRepository.Setup(x => x.All(It.IsAny <Expression <Func <Badge, bool> > >())) .Returns(badges); var userContributionsIntereptor = new UserContributionsInterceptor( userProvider.Object, usersRepository.Object, badgesRepository.Object, unitOfWork.Object); var invocation = new Mock <IInvocation>(); // act userContributionsIntereptor.Intercept(invocation.Object); // assert Assert.AreEqual(1, user.ContributionsCount); }