public ActionResult Create(HellViewModel model)
        {
            if (ModelState.IsValid)
            {
                // Create a new event.
                Event e = new Event();
                e.Brief = model.CreateViewModel.Brief;
                e.Detailed = model.CreateViewModel.Detailed;
                e.Visibility = model.CreateViewModel.Visibility;
                e.Address = model.CreateViewModel.Address;
                e.Latitude = model.CreateViewModel.Latitude;
                e.Longitude = model.CreateViewModel.Longitude;
                e.StartTime = model.CreateViewModel.StartTime;
                e.ModificationState = ModificationState.Added;
                e.OwnerId = User.Identity.GetUserId();
                eventUoW.Events.Attach(e);

                // Create a share link for this event.
                InviteLink link = new InviteLink();
                link.Event = e;
                link.LinkGUID = Guid.NewGuid().ToString();
                link.OneTimeUse = false;
                link.ModificationState = ModificationState.Added;
                eventUoW.InviteLinks.Attach(link);

                // Save the changes.
                eventUoW.Save();

                return RedirectToAction("Details", "Event", new { id = e.Id });
            }

            return View();
        }
        public void DeleteEvent(Event entity)
        {
            // Delete all invites to this event.
            var invites = context.Invites.Where(i => i.EventId == entity.Id).ToList();
            foreach (var invite in invites)
            {
                context.Invites.Remove(invite);
            }

            // Delete the event.
            entity.ModificationState = ModificationState.Deleted;
            Attach(entity);
        }
        public void GetInvitedToEventReturnsOnlyPeopleInvitedToAnEvent()
        {
            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";
                e1.Visibility = EventVisibility.Private;
                e1.ModificationState = ModificationState.Added;
                e1.AppUser = user1;
                eventUoW.Events.Attach(e1);

                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);

                eventUoW.Save();
            }

            using (var context = new EventContext())
            {
                var eventUoW = new EventUnitOfWork(context);
                var userManager = new UserManager<AppUser>(new UserStore<AppUser>(context));
                var e1 = context.Events.Single(t => t.Brief == "User 1 Event");
                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 invited = eventUoW.Invites.GetInvitedToEvent(e1);
                invited.Should().HaveCount(2);
                invited.Any(t => t.AppUser == null).Should().BeFalse();
                invited.Any(t => t.AppUser == user1).Should().BeFalse();
                invited.Any(t => t.AppUser == user2).Should().BeTrue();
                invited.Any(t => t.AppUser == user3).Should().BeTrue();
            }
        }
        public void CanCreateNewEvents()
        {
            using (var context = new EventContext())
            {
                var eventUoW = new EventUnitOfWork(context);
                var userManager = new UserManager<AppUser>(new UserStore<AppUser>(context));

                Event e = new Event();
                e.Brief = "Test";
                e.Detailed = "Test";
                e.ModificationState = ModificationState.Added;
                e.AppUser = context.Users.Single(t => t.UserName == "TestUser");

                eventUoW.Events.Attach(e);
                eventUoW.Save();
            }

            using (var context = new EventContext())
            {
                Event e = context.Events.Single(t => t.Brief == "Test");
                e.Detailed.Should().Be("Test");
            }
        }
        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");
            }
        }
 public AppUser LoadUserGraph(Event e)
 {
     context.Entry(e).Reference(t => t.AppUser).Load();
     return e.AppUser;
 }
        public void GetAllPublicEventsOfUserReturnsCorrect()
        {
            using (var context = new EventContext())
            {
                var eventUoW = new EventUnitOfWork(context);
                var user = context.Users.SingleOrDefault(t => t.UserName == "TestUser");
                var user2 = context.Users.SingleOrDefault(t => t.UserName == "TestUser2");

                Event e1 = new Event();
                e1.Brief = "User 1 Event";
                e1.Visibility = EventVisibility.Private;
                e1.ModificationState = ModificationState.Added;
                e1.AppUser = user;

                Event e2 = new Event();
                e2.Brief = "User 1 Event";
                e2.Visibility = EventVisibility.Public;
                e2.ModificationState = ModificationState.Added;
                e2.AppUser = user;

                Event e3 = new Event();
                e3.Brief = "User 2 Event";
                e3.Visibility = EventVisibility.Public;
                e3.ModificationState = ModificationState.Added;
                e3.AppUser = user2;

                eventUoW.Events.Attach(e1);
                eventUoW.Events.Attach(e2);
                eventUoW.Events.Attach(e3);
                eventUoW.Save();

            }
            using (var context = new EventContext())
            {
                var eventUoW = new EventUnitOfWork(context);
                var user = context.Users.SingleOrDefault(t => t.UserName == "TestUser");
                var e = eventUoW.Events.GetAllPublicEventsOfUser(user);

                e.Should().HaveCount(1);
                e[0].Visibility.Should().Be(EventVisibility.Public);
                e[0].OwnerId.Should().Be(user.Id);
            }
        }
        public void TransferInviteOwnershipShouldTransferAllInvites()
        {
            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);

                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 user3 = context.Users.Single(t => t.UserName == "TestUser3");

                eventUoW.Invites.TransferInviteOwnership(user2, user3);
                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");

                context.Invites.Where(t => t.AppUserId == user2.Id).ToList().Should().HaveCount(0);
                context.Invites.Where(t => t.AppUserId == user3.Id).ToList().Should().HaveCount(2);
            }
        }
        public void RemoveInvitesByHostRemovesAllInvitesByASpecificHost()
        {
            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 3 Event 1";
                e2.Visibility = EventVisibility.Private;
                e2.ModificationState = ModificationState.Added;
                e2.AppUser = user3;
                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 user3 = context.Users.Single(t => t.UserName == "TestUser3");

                eventUoW.Invites.RemoveInvitesByHost(user2, user1);
                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 = context.Invites.Include(t => t.Event).Where(t => t.AppUserId == user2.Id).ToList();

                invites.Any(t => t.Event.OwnerId == user1.Id).Should().BeFalse();
            }
        }
 public Invite GetInviteByEventAndUser(Event e, AppUser user)
 {
     return context.Invites.SingleOrDefault(t => t.EventId == e.Id && t.AppUserId == user.Id);
 }
        public void ChangingAnEventDisconnectedDoesNotCreateDuplicates()
        {
            Event e;
            using (var context = new EventContext())
            {
                var eventUoW = new EventUnitOfWork(context);

                e = new Event();
                e.Brief = "Test";
                e.Detailed = "Test";
                e.ModificationState = ModificationState.Added;
                e.AppUser = context.Users.Single(t => t.UserName == "TestUser");

                eventUoW.Events.Attach(e);
                eventUoW.Save();
            }

            e.Brief = "MyBrief";
            e.Detailed = "MyDetailed";
            e.ModificationState = ModificationState.Modified;

            using (var context = new EventContext())
            {
                var eventUoW = new EventUnitOfWork(context);
                eventUoW.Events.Attach(e);
                eventUoW.Save();
            }

            using (var context = new EventContext())
            {
                context.Invoking(t => t.Events.Single()).ShouldNotThrow();
            }
        }
        public void TransferEventOwnershipTransfersAllEvents()
        {
            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";
                e1.ModificationState = ModificationState.Added;
                e1.AppUser = user1;
                eventUoW.Events.Attach(e1);

                Event e2 = new Event();
                e2.Brief = "User 2 Event 1";
                e2.ModificationState = ModificationState.Added;
                e2.AppUser = user2;
                eventUoW.Events.Attach(e2);

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

                eventUoW.Save();
            }

            using (var context = new EventContext())
            {
                var eventUoW = new EventUnitOfWork(context);

                context.Events.ToList();
                context.Invites.ToList();

                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");

                eventUoW.Events.TransferEventOwnership(user2, user1);
                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");

                eventUoW.Events.GetAllCreatedEvents(user1).Should().HaveCount(3);
                eventUoW.Events.GetAllCreatedEvents(user2).Should().HaveCount(0);
            }
        }
        public void LoadUserGraphMakesTheOwnerNodeAccessible()
        {
            int id = 0;
            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");

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

                eventUoW.Events.Attach(e1);
                eventUoW.Save();

                id = e1.Id;
            }

            using (var context = new EventContext())
            {
                var eventUoW = new EventUnitOfWork(context);
                var e = eventUoW.Events.GetEventByID(id);

                e.AppUser.Should().BeNull();
                eventUoW.Events.LoadUserGraph(e);
                e.AppUser.UserName.Should().Be("TestUser");
            }
        }
        public void GetEventByIdReturnsCorrectEvent()
        {
            int id1 = 0;
            int id2 = 0;
            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";
                e1.Visibility = EventVisibility.Private;
                e1.ModificationState = ModificationState.Added;
                e1.AppUser = user1;

                Event e2 = new Event();
                e2.Brief = "User 2 Event";
                e2.Visibility = EventVisibility.Private;
                e2.ModificationState = ModificationState.Added;
                e2.AppUser = user2;

                eventUoW.Events.Attach(e1);
                eventUoW.Events.Attach(e2);
                eventUoW.Save();

                id1 = e1.Id;
                id2 = e2.Id;
            }

            using (var context = new EventContext())
            {
                var eventUoW = new EventUnitOfWork(context);
                eventUoW.Events.GetEventByID(id1).Brief.Should().Be("User 1 Event");
                eventUoW.Events.GetEventByID(id2).Brief.Should().Be("User 2 Event");
            }
        }
        public void GetAllPublicEventsOnlyReturnsPublic()
        {
            using (var context = new EventContext())
            {
                var eventUoW = new EventUnitOfWork(context);
                var userManager = new UserManager<AppUser>(new UserStore<AppUser>(context));
                var user = context.Users.Single(t => t.UserName == "TestUser");

                Event pub = new Event();
                pub.Brief = "Public";
                pub.Visibility = EventVisibility.Public;
                pub.ModificationState = ModificationState.Added;
                pub.AppUser = user;

                Event pri = new Event();
                pri.Brief = "Private";
                pri.Visibility = EventVisibility.Private;
                pri.ModificationState = ModificationState.Added;
                pri.AppUser = user;

                eventUoW.Events.Attach(pub);
                eventUoW.Events.Attach(pri);
                eventUoW.Save();
            }

            using (var context = new EventContext())
            {
                var eventUoW = new EventUnitOfWork(context);

                List<Event> events = eventUoW.Events.GetAllPublicEvents();

                events.Should().HaveCount(1);
                events[0].Brief.Should().Be("Public");
            }
        }
        public void IsInvitedIsOnlyTrueWhenTheUserIsInvitedToAnEvent()
        {
            int id = 0;
            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";
                e1.Visibility = EventVisibility.Private;
                e1.ModificationState = ModificationState.Added;
                e1.AppUser = user1;
                eventUoW.Events.Attach(e1);

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

                eventUoW.Save();
                id = e1.Id;
            }

            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 e = eventUoW.Events.GetEventByID(id);

                eventUoW.Invites.IsInvited(e, user2).Should().BeTrue();
                eventUoW.Invites.IsInvited(e, user3).Should().BeFalse();
            }
        }
        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 List<Invite> GetInvitedToEvent(Event e)
 {
     return context.Invites.Include(t => t.AppUser).Where(t => t.EventId == e.Id).ToList();
 }
 public bool IsInvited(Event e, AppUser user)
 {
     return context.Invites.Any(t => t.EventId == e.Id && t.AppUserId == user.Id);
 }
 public void Attach(Event entity)
 {
     context.Events.Add(entity);
     ContextStateHelper.ApplyStateChanges(context);
 }
 public InviteLink GetShareLink(Event e)
 {
     return context.InviteLinks.Where(t => t.OneTimeUse == false).FirstOrDefault();
 }
        public void GetAllInvitedEventsOnlyReturnsEventsThisUserIsInvitedTo()
        {
            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";
                e1.Visibility = EventVisibility.Private;
                e1.ModificationState = ModificationState.Added;
                e1.AppUser = user1;
                eventUoW.Events.Attach(e1);

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

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

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

                eventUoW.Save();
            }

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

                List<Event> events = eventUoW.Events.GetAllInvitedEvents(user2);

                events.Should().HaveCount(1);
                events[0].Brief.Should().Be("User 1 Event");
            }
        }