public void MarkAllInvitesAsSeenShouldResetTheUnseenInviteCount()
        {
            using (var context = new EventContext())
            {
                var eventUoW    = new EventUnitOfWork(context);
                var userManager = new UserManager <AppUser>(new UserStore <AppUser>(context));
                var user1       = context.Users.Single(t => t.UserName == "TestUser");
                var user2       = context.Users.Single(t => t.UserName == "TestUser2");

                Event e1 = new Event();
                e1.Brief             = "User 1 Event 1";
                e1.Visibility        = EventVisibility.Private;
                e1.ModificationState = ModificationState.Added;
                e1.AppUser           = user1;
                eventUoW.Events.Attach(e1);

                Event e2 = new Event();
                e2.Brief             = "User 1 Event 2";
                e2.Visibility        = EventVisibility.Private;
                e2.ModificationState = ModificationState.Added;
                e2.AppUser           = user1;
                eventUoW.Events.Attach(e2);

                Invite i1 = new Invite();
                i1.AppUser           = user2;
                i1.Event             = e1;
                i1.Status            = InviteStatus.Pending;
                i1.ModificationState = ModificationState.Added;
                eventUoW.Invites.Attach(i1);

                Invite i2 = new Invite();
                i2.AppUser           = user2;
                i2.Event             = e2;
                i2.Status            = InviteStatus.Pending;
                i2.ModificationState = ModificationState.Added;
                eventUoW.Invites.Attach(i2);

                eventUoW.Save();
            }

            using (var context = new EventContext())
            {
                var eventUoW    = new EventUnitOfWork(context);
                var userManager = new UserManager <AppUser>(new UserStore <AppUser>(context));
                var user1       = context.Users.Single(t => t.UserName == "TestUser");
                var user2       = context.Users.Single(t => t.UserName == "TestUser2");

                var count = eventUoW.Invites.GetUnseenPendingInvitesCount(user2);
                count.Should().Be(2);

                eventUoW.Invites.MarkAllInvitesAsSeen(user2);
                eventUoW.Save();
            }

            using (var context = new EventContext())
            {
                var eventUoW    = new EventUnitOfWork(context);
                var userManager = new UserManager <AppUser>(new UserStore <AppUser>(context));
                var user1       = context.Users.Single(t => t.UserName == "TestUser");
                var user2       = context.Users.Single(t => t.UserName == "TestUser2");

                var count = eventUoW.Invites.GetUnseenPendingInvitesCount(user2);
                count.Should().Be(0);
            }
        }
        public void GetPendingInvitesWithEventGraphReturnsOnlyEventsTheUserIsInvitedTo()
        {
            using (var context = new EventContext())
            {
                var eventUoW    = new EventUnitOfWork(context);
                var userManager = new UserManager <AppUser>(new UserStore <AppUser>(context));
                var user1       = context.Users.Single(t => t.UserName == "TestUser");
                var user2       = context.Users.Single(t => t.UserName == "TestUser2");
                var user3       = context.Users.Single(t => t.UserName == "TestUser3");

                Event e1 = new Event();
                e1.Brief             = "User 1 Event 1";
                e1.Visibility        = EventVisibility.Private;
                e1.ModificationState = ModificationState.Added;
                e1.AppUser           = user1;
                eventUoW.Events.Attach(e1);

                Event e2 = new Event();
                e2.Brief             = "User 1 Event 2";
                e2.Visibility        = EventVisibility.Private;
                e2.ModificationState = ModificationState.Added;
                e2.AppUser           = user1;
                eventUoW.Events.Attach(e2);

                Event e3 = new Event();
                e3.Brief             = "User 2 Event";
                e3.Visibility        = EventVisibility.Private;
                e3.ModificationState = ModificationState.Added;
                e3.AppUser           = user2;
                eventUoW.Events.Attach(e3);

                Invite i1 = new Invite();
                i1.AppUser           = user2;
                i1.Event             = e1;
                i1.ModificationState = ModificationState.Added;
                eventUoW.Invites.Attach(i1);

                Invite i2 = new Invite();
                i2.AppUser           = user3;
                i2.Event             = e1;
                i2.ModificationState = ModificationState.Added;
                eventUoW.Invites.Attach(i2);

                Invite i3 = new Invite();
                i3.AppUser           = user1;
                i3.Event             = e2;
                i3.ModificationState = ModificationState.Added;
                eventUoW.Invites.Attach(i3);

                eventUoW.Save();
            }

            using (var context = new EventContext())
            {
                var eventUoW    = new EventUnitOfWork(context);
                var userManager = new UserManager <AppUser>(new UserStore <AppUser>(context));
                var user1       = context.Users.Single(t => t.UserName == "TestUser");
                var user2       = context.Users.Single(t => t.UserName == "TestUser2");
                var user3       = context.Users.Single(t => t.UserName == "TestUser3");

                var invites = eventUoW.Invites.GetPendingInvitesWithEventGraph(user2);

                invites.Should().HaveCount(1);
                invites.Single().Event.Brief.Should().Be("User 1 Event 1");
            }
        }