Exemplo n.º 1
0
        public void Can_Delete_Game()
        {
            //Arrange
            using (var factory = new SQLiteDbContextFactory())
            {
                using (var context = factory.CreateContext())
                {
                    context.Games.Add(new Game {
                        GameId = 1, Title = "TestToDelete"
                    });
                    context.SaveChanges();
                }

                //Act
                using (var context = factory.CreateContext())
                {
                    var gameRepository = new EFGameRepository(context);
                    gameRepository.DeleteGame(1);
                }

                //Assert
                using (var context = factory.CreateContext())
                {
                    Assert.Equal(0, context.Games.Count());
                }
            }
        }
Exemplo n.º 2
0
        public void Can_Edit_Game()
        {
            //Arrange
            using (var factory = new SQLiteDbContextFactory())
            {
                using (var context = factory.CreateContext())
                {
                    context.Games.Add(new Game {
                        GameId = 1, Title = "TestToModify"
                    });
                    context.SaveChanges();
                }

                //Act
                using (var context = factory.CreateContext())
                {
                    var gameRepository = new EFGameRepository(context);
                    gameRepository.SaveGame(new Game {
                        GameId = 1, Title = "TestAfterModification"
                    });
                }

                //Assert
                using (var context = factory.CreateContext())
                {
                    Assert.Equal(1, context.Games.Count());
                    Assert.Equal("TestAfterModification", context.Games.Single().Title);
                    Assert.Equal(1, context.Games.Single().GameId);
                }
            }
        }
        public void Can_Get_Invitation()
        {
            //Arrange
            using var factory = new SQLiteDbContextFactory();
            //Arrange
            var user1 = new AppUser {
                Id = "id1", UserName = "******", Email = "*****@*****.**"
            };
            var user2 = new AppUser {
                Id = "id2", UserName = "******", Email = "*****@*****.**"
            };
            var user3 = new AppUser {
                Id = "id3", UserName = "******", Email = "*****@*****.**"
            };
            var request1 = new FriendInvitation
            {
                FriendInvitationId = 1,
                Sender             = user1,
                Invited            = user2,
                InvitedEmail       = user2.Email,
                Status             = FriendInvitationStatus.Pending
            };

            var request2 = new FriendInvitation
            {
                FriendInvitationId = 2,
                Sender             = user3,
                InvitedEmail       = "*****@*****.**",
                Status             = FriendInvitationStatus.Pending
            };

            var result = new FriendInvitation();

            //Act
            using (var context = factory.CreateContext())
            {
                context.Users.Add(user1);
                context.Users.Add(user2);
                context.Users.Add(user3);
                context.SaveChanges();
                context.FriendInvitations.Add(request1);
                context.FriendInvitations.Add(request2);
                context.SaveChanges();
                var friendInvitationRepository = new EFFriendInvitationRepository(context);
                result = friendInvitationRepository.GetInvitation(request1.FriendInvitationId);
            }

            using (var context = factory.CreateContext())
            {
                Assert.Equal(3, context.Users.Count());
                Assert.Equal(2, context.FriendInvitations.Count());
                Assert.Equal(request1.FriendInvitationId, result.FriendInvitationId);
                Assert.Equal(FriendInvitationStatus.Pending, result.Status);
                Assert.Equal(request1.Invited.Id, result.Invited.Id);
                Assert.Equal(request1.InvitedId, result.InvitedId);
                Assert.Equal(request1.InvitedEmail, result.InvitedEmail);
                Assert.Equal(request1.Sender.Id, result.Sender.Id);
                Assert.Equal(request1.SenderId, result.SenderId);
            }
        }
Exemplo n.º 4
0
        public void Can_Add_Meeting()
        {
            //Arrange
            using (var factory = new SQLiteDbContextFactory())
            {
                //Arrange
                var organizer = new AppUser
                {
                    Id = "id1", UserName = "******", Email = "*****@*****.**"
                };
                var meetingToAdd = new Meeting
                {
                    Title         = "TestToAdd",
                    StartDateTime = DateTime.Today.AddDays(1).AddHours(5),
                    EndDateTime   = DateTime.Today.AddDays(1).AddHours(8),
                    Organizer     = organizer,
                    City          = "City",
                    Street        = "Street",
                    PostalCode    = "PostalCode",
                    Country       = Country.Togo,
                    Notes         = "notest test notest test"
                };

                //Act
                // Run the test against one instance of the context
                using (var context = factory.CreateContext())
                {
                    context.Users.Add(organizer);
                    context.SaveChanges();
                    var meetingRepository = new EFMeetingRepository(context);
                    meetingRepository.SaveMeeting(meetingToAdd);
                }

                using (var context = factory.CreateContext())
                {
                    var meetings = context.Meetings
                                   .Include(m => m.Organizer)
                                   .ToList();
                    var users = context.Users.ToList();
                    Assert.Single(users);
                    Assert.Single(meetings);

                    Assert.Equal(meetingToAdd.Title, meetings.Single().Title);
                    Assert.Equal(meetingToAdd.StartDateTime, meetings.Single().StartDateTime);
                    Assert.Equal(meetingToAdd.EndDateTime, meetings.Single().EndDateTime);
                    Assert.Equal(meetingToAdd.City, meetings.Single().City);
                    Assert.Equal(meetingToAdd.Street, meetings.Single().Street);
                    Assert.Equal(meetingToAdd.PostalCode, meetings.Single().PostalCode);
                    Assert.Equal(meetingToAdd.Country, meetings.Single().Country);
                    Assert.Equal(meetingToAdd.Notes, meetings.Single().Notes);
                    Assert.NotNull(meetings.Single().Organizer);
                    Assert.Equal(organizer.Id, meetings.Single().Organizer.Id);
                }
            }
        }
Exemplo n.º 5
0
        public void Can_Get_Message()
        {
            //Arrange
            var result = new Message();

            using (var factory = new SQLiteDbContextFactory())
            {
                var author = new AppUser
                {
                    Id = "id1", UserName = "******", Email = "*****@*****.**"
                };
                var meeting = new Meeting
                {
                    MeetingId = 1,
                    Title     = "Meeting for message"
                };
                var message = new Message
                {
                    MessageId = 1,
                    Text      = "This is a text of the message which is a test message",
                    Author    = author,
                    Meeting   = meeting,
                    Created   = DateTime.Now.AddDays(1)
                };
                using (var context = factory.CreateContext())
                {
                    context.Users.Add(author);
                    context.Meetings.Add(meeting);
                    context.SaveChanges();
                    context.Messages.Add(message);
                    context.SaveChanges();
                }

                //Act
                using (var context = factory.CreateContext())
                {
                    var messageRepository = new EFMessageRepository(context);
                    result = messageRepository.GetMessage(1);
                }

                //Assert
                using (var context = factory.CreateContext())
                {
                    Assert.Equal(1, context.Users.Count());
                    Assert.Equal(1, context.Meetings.Count());
                    Assert.Equal(1, context.Messages.Count());
                    Assert.Equal(message.Text, result.Text);
                    Assert.Equal(message.AuthorId, result.AuthorId);
                    Assert.Equal(message.Created, result.Created);
                    Assert.Equal(message.MeetingId, result.MeetingId);
                }
            }
        }
Exemplo n.º 6
0
        public void Can_Add_User_To_Meeting()
        {
            //Arrange
            Mock <UserManager <AppUser> > GetMockUserManager()
            {
                var userStoreMock = new Mock <IUserStore <AppUser> >();

                return(new Mock <UserManager <AppUser> >(
                           userStoreMock.Object, null, null, null, null, null, null, null, null));
            }

            var user = new AppUser {
                Id = "id1", UserName = "******", Email = "*****@*****.**"
            };
            var meeting = new Meeting {
                MeetingId = 1, Title = "meeting1"
            };

            using (var factory = new SQLiteDbContextFactory())
            {
                using (var context = factory.CreateContext())
                {
                    context.Users.Add(user);
                    context.Meetings.Add(meeting);
                    context.SaveChanges();
                }

                //Act
                using (var context = factory.CreateContext())
                {
                    var invitedUserRepository = new EFInvitedUserRepository(context, GetMockUserManager().Object);
                    invitedUserRepository.AddUserToMeeting(user.Id, meeting.MeetingId, InvitationStatus.Pending);
                }

                //Assert
                using (var context = factory.CreateContext())
                {
                    var invitedUsers = context.MeetingInvitedUser
                                       .Include(mi => mi.AppUser)
                                       .Include(mi => mi.Meeting)
                                       .ToList();
                    Assert.Single(invitedUsers);
                    Assert.Equal(user.Id, invitedUsers.Single().AppUser.Id);
                    Assert.Equal(user.Id, invitedUsers.Single().UserId);
                    Assert.Equal(meeting.MeetingId, invitedUsers.Single().Meeting.MeetingId);
                    Assert.Equal(meeting.MeetingId, invitedUsers.Single().MeetingId);
                }
            }
        }
Exemplo n.º 7
0
        public void Can_Add_Message()
        {
            //Arrange
            var author = new AppUser
            {
                Id = "id1", UserName = "******", Email = "*****@*****.**"
            };
            var meeting = new Meeting
            {
                MeetingId = 1,
                Title     = "Meeting for message"
            };
            var message = new Message
            {
                Text    = "This is a text of message which is test message",
                Author  = author,
                Created = DateTime.Now,
                Meeting = meeting
            };

            using (var factory = new SQLiteDbContextFactory())
            {
                using (var context = factory.CreateContext())
                {
                    context.Users.Add(author);
                    context.Meetings.Add(meeting);
                    context.SaveChanges();
                    //Act
                    var messageRepository = new EFMessageRepository(context);
                    messageRepository.SaveMessage(message);
                }

                //Assert
                using (var context = factory.CreateContext())
                {
                    var result = context.Messages
                                 .Include(m => m.Author)
                                 .Include(m => m.Meeting)
                                 .FirstOrDefault();
                    Assert.Equal(1, context.Users.Count());
                    Assert.Equal(1, context.Meetings.Count());
                    Assert.Equal(1, context.Messages.Count());
                    Assert.Equal(message.Text, result.Text);
                    Assert.Equal(message.AuthorId, result.Author.Id);
                    Assert.Equal(message.Created, result.Created);
                    Assert.Equal(message.MeetingId, result.Meeting.MeetingId);
                }
            }
        }
Exemplo n.º 8
0
        public void Can_Remove_User_From_Meeting()
        {
            //Arrange
            Mock <UserManager <AppUser> > GetMockUserManager()
            {
                var userStoreMock = new Mock <IUserStore <AppUser> >();

                return(new Mock <UserManager <AppUser> >(
                           userStoreMock.Object, null, null, null, null, null, null, null, null));
            }

            var user = new AppUser {
                Id = "id1", UserName = "******", Email = "*****@*****.**"
            };
            var meeting = new Meeting {
                MeetingId = 1, Title = "meeting1"
            };

            using (var factory = new SQLiteDbContextFactory())
            {
                var invitedUser = new MeetingInvitedUser
                {
                    Meeting = meeting,
                    AppUser = user,
                    Status  = InvitationStatus.Pending
                };

                using (var context = factory.CreateContext())
                {
                    context.MeetingInvitedUser.Add(invitedUser);
                    context.SaveChanges();
                }

                //Act
                using (var context = factory.CreateContext())
                {
                    var invitedUserRepository = new EFInvitedUserRepository(context, GetMockUserManager().Object);
                    invitedUserRepository.RemoveUserFromMeeting(invitedUser.UserId, invitedUser.MeetingId);
                }

                //Assert
                using (var context = factory.CreateContext())
                {
                    var invitedUsers = context.MeetingInvitedUser.ToList();
                    Assert.Empty(invitedUsers);
                }
            }
        }
        public void Can_Edit_Notification()
        {
            //Arrange
            using (var factory = new SQLiteDbContextFactory())
            {
                var participant = new AppUser {
                    Id = "id1", UserName = "******", Email = "*****@*****.**"
                };
                var meeting = new Meeting
                {
                    MeetingId = 1, Organizer = participant, StartDateTime = DateTime.UtcNow.AddDays(1)
                };
                var notificationToEdit = new TomorrowsMeetingsNotification
                {
                    Participant          = participant,
                    Meeting              = meeting,
                    MeetingStartDateTime = meeting.StartDateTime,
                    IfSent        = false,
                    NumberOfTries = 1,
                };
                using (var context = factory.CreateContext())
                {
                    context.Users.Add(participant);
                    context.SaveChanges();
                    context.Meetings.Add(meeting);
                    context.SaveChanges();
                    context.TomorrowsMeetingsNotifications.Add(notificationToEdit);
                    context.SaveChanges();
                    var notificationRepository = new EFTomorrowsMeetingsNotificationRepository(context);
                    notificationToEdit.IfSent = false;
                    notificationRepository.SaveNotification(notificationToEdit);
                }

                //Assert
                using (var context = factory.CreateContext())
                {
                    Assert.Equal(1, context.Users.Count());
                    Assert.Equal(1, context.Meetings.Count());
                    Assert.Equal(1, context.TomorrowsMeetingsNotifications.Count());
                    var notification = context.TomorrowsMeetingsNotifications.Single();
                    Assert.Equal(participant.Id, notification.ParticipantId);
                    Assert.Equal(meeting.MeetingId, notification.MeetingId);
                    Assert.False(notification.IfSent);
                    Assert.Equal(meeting.StartDateTime, notification.MeetingStartDateTime);
                    Assert.Equal(2, notification.NumberOfTries);
                }
            }
        }
Exemplo n.º 10
0
        public void Can_Remove_Game_From_Meeting()
        {
            //Arrange
            using (var factory = new SQLiteDbContextFactory())
            {
                var game = new Game
                {
                    GameId = 1, Title = "game1"
                };

                var meeting = new Meeting
                {
                    MeetingId = 1,
                    Title     = "TestToAddGame"
                };

                var gameInMeeting = new MeetingGame
                {
                    Game    = game,
                    Meeting = meeting
                };

                using (var context = factory.CreateContext())
                {
                    context.Games.Add(game);
                    context.Meetings.Add(meeting);
                    context.SaveChanges();
                    context.MeetingGame.Add(gameInMeeting);
                    context.SaveChanges();

                    //Act
                    var meetingRepository = new EFMeetingRepository(context);
                    meetingRepository.RemoveGameFromMeeting(game.GameId, meeting.MeetingId);
                }

                //Assert
                using (var context = factory.CreateContext())
                {
                    var gameInMeetings = context.MeetingGame
                                         .Include(mg => mg.Meeting)
                                         .Include(mg => mg.Game)
                                         .ToList();
                    Assert.Empty(gameInMeetings);
                }
            }
        }
Exemplo n.º 11
0
        public void Can_Add_To_Shelf()
        {
            //Arrange
            var user = new AppUser {
                Id = "id1", UserName = "******", Email = "*****@*****.**"
            };
            var game = new Game {
                GameId = 1, Title = "game1"
            };
            var shelfItem = new GameAppUser {
                UserId = "id1", GameId = 1
            };

            using (var factory = new SQLiteDbContextFactory())
            {
                using (var context = factory.CreateContext())
                {
                    context.Users.Add(user);
                    context.Games.Add(game);
                    context.SaveChanges();
                }

                //Act
                using (var context = factory.CreateContext())
                {
                    var shelfRepository = new EFShelfRepository(context);
                    shelfRepository.AddToShelf(shelfItem);
                }

                //Assert
                using (var context = factory.CreateContext())
                {
                    var shelf = context.GameAppUser
                                .Include(gu => gu.AppUser)
                                .Include(gu => gu.Game)
                                .ToList();
                    Assert.Single(shelf);
                    Assert.Equal(user.Id, shelf.Single().AppUser.Id);
                    Assert.Equal(user.Id, shelf.Single().UserId);
                    Assert.Equal(game.GameId, shelf.Single().Game.GameId);
                    Assert.Equal(game.GameId, shelf.Single().GameId);
                }
            }
        }
Exemplo n.º 12
0
        public void Can_Edit_Message()
        {
            //Arrange
            var textMessage = "This is a new text of the message.";
            var author      = new AppUser
            {
                Id = "id1", UserName = "******", Email = "*****@*****.**"
            };
            var message = new Message
            {
                Text    = "This is a text of the message which is a test message",
                Author  = author,
                Created = DateTime.Now.AddDays(1)
            };

            using (var factory = new SQLiteDbContextFactory())
            {
                using (var context = factory.CreateContext())
                {
                    context.Users.Add(author);
                    context.Messages.Add(message);
                    context.SaveChanges();
                    //Act
                    var messageRepository = new EFMessageRepository(context);
                    messageRepository.SaveMessage(new Message {
                        Text = textMessage, MessageId = 1
                    });
                }

                //Assert
                using (var context = factory.CreateContext())
                {
                    var result = context.Messages
                                 .Include(m => m.Author)
                                 .FirstOrDefault();
                    Assert.Equal(1, context.Users.Count());
                    Assert.Equal(1, context.Messages.Count());
                    Assert.Equal(textMessage, result.Text);
                    Assert.Equal(message.AuthorId, result.Author.Id);
                    Assert.Equal(message.Created, result.Created);
                }
            }
        }
Exemplo n.º 13
0
        public void Can_Remove_From_Shelf()
        {
            //Arrange
            var user = new AppUser {
                Id = "id1", UserName = "******", Email = "*****@*****.**"
            };
            var game = new Game {
                GameId = 1, Title = "game1"
            };
            var shelfItem = new GameAppUser {
                UserId = "id1", GameId = 1
            };

            using (var factory = new SQLiteDbContextFactory())
            {
                using (var context = factory.CreateContext())
                {
                    context.Users.Add(user);
                    context.Games.Add(game);
                    context.GameAppUser.Add(shelfItem);
                    context.SaveChanges();
                }

                //Act
                using (var context = factory.CreateContext())
                {
                    var shelfRepository = new EFShelfRepository(context);
                    shelfRepository.RemoveFromShelf(shelfItem);
                }

                //Assert
                using (var context = factory.CreateContext())
                {
                    Assert.Empty(context.GameAppUser);
                    Assert.Single(context.Users);
                    Assert.Single(context.Games);
                }
            }
        }
Exemplo n.º 14
0
        public void Can_Delete_Message()
        {
            //Arrange
            using (var factory = new SQLiteDbContextFactory())
            {
                var author = new AppUser
                {
                    Id = "id1", UserName = "******", Email = "*****@*****.**"
                };
                using (var context = factory.CreateContext())
                {
                    context.Users.Add(author);
                    context.SaveChanges();
                    context.Messages.Add(new Message
                    {
                        MessageId = 1,
                        Text      = "This is a text of the message which is a test message",
                        Author    = author,
                        Created   = DateTime.Now.AddDays(1)
                    });
                    context.SaveChanges();
                }

                //Act
                using (var context = factory.CreateContext())
                {
                    var messageRepository = new EFMessageRepository(context);
                    messageRepository.DeleteMessage(1);
                }

                //Assert
                using (var context = factory.CreateContext())
                {
                    Assert.Equal(0, context.Messages.Count());
                }
            }
        }
Exemplo n.º 15
0
        public void Can_Add_Game()
        {
            //Arrange
            using (var factory = new SQLiteDbContextFactory())
            {
                //Act
                // Run the test against one instance of the context
                using (var context = factory.CreateContext())
                {
                    var gameRepository = new EFGameRepository(context);
                    gameRepository.SaveGame(new Game {
                        Title = "TestToAdd"
                    });
                }

                //Assert
                // Use a separate instance of the context to verify correct data was saved to database
                using (var context = factory.CreateContext())
                {
                    Assert.Equal(1, context.Games.Count());
                    Assert.Equal("TestToAdd", context.Games.Single().Title);
                }
            }
        }
Exemplo n.º 16
0
        public void Can_Get_Overlapping_Meetings_For_Meeting()
        {
            //Arrange
            using (var factory = new SQLiteDbContextFactory())
            {
                //Arrange
                var user1 = new AppUser
                {
                    Id = "id1", UserName = "******", Email = "*****@*****.**"
                };
                var user2 = new AppUser
                {
                    Id = "id2", UserName = "******", Email = "*****@*****.**"
                };
                var user3 = new AppUser
                {
                    Id = "id3", UserName = "******", Email = "*****@*****.**"
                };
                var user4 = new AppUser
                {
                    Id = "id4", UserName = "******", Email = "*****@*****.**"
                };
                var user5 = new AppUser
                {
                    Id = "id5", UserName = "******", Email = "*****@*****.**"
                };
                var meeting1 = new Meeting
                {
                    MeetingId     = 1,
                    Title         = "Meeting1",
                    StartDateTime = DateTime.Today.AddDays(3),
                    EndDateTime   = DateTime.Today.AddDays(4),
                    Organizer     = user1
                };
                var meeting2 = new Meeting
                {
                    MeetingId     = 2,
                    Title         = "Meeting2",
                    StartDateTime = DateTime.Today.AddDays(1),
                    EndDateTime   = DateTime.Today.AddDays(1).AddHours(3),
                    Organizer     = user3
                };
                var meeting3 = new Meeting
                {
                    MeetingId     = 3,
                    Title         = "Meeting3",
                    StartDateTime = DateTime.Today.AddDays(1),
                    EndDateTime   = DateTime.Today.AddDays(1).AddHours(3),
                    Organizer     = user3
                };
                var meeting4 = new Meeting
                {
                    MeetingId     = 4,
                    Title         = "Meeting4",
                    StartDateTime = DateTime.Today.AddDays(1),
                    EndDateTime   = DateTime.Today.AddDays(1).AddHours(3),
                    Organizer     = user4
                };
                var meeting5 = new Meeting
                {
                    MeetingId     = 5,
                    Title         = "Meeting5",
                    StartDateTime = DateTime.Today.AddDays(1),
                    EndDateTime   = DateTime.Today.AddDays(1).AddHours(3),
                    Organizer     = user5
                };
                var meeting6 = new Meeting
                {
                    MeetingId     = 6,
                    Title         = "Meeting6",
                    StartDateTime = DateTime.Today.AddDays(1),
                    EndDateTime   = DateTime.Today.AddDays(1).AddHours(3),
                    Organizer     = user2
                };
                var meeting7 = new Meeting
                {
                    MeetingId     = 7,
                    Title         = "Meeting7",
                    StartDateTime = DateTime.Today.AddDays(2).AddHours(1),
                    EndDateTime   = DateTime.Today.AddDays(2).AddHours(4),
                    Organizer     = user1
                };
                var meeting8 = new Meeting
                {
                    MeetingId     = 8,
                    Title         = "Meeting8",
                    StartDateTime = DateTime.Today.AddDays(-3),
                    EndDateTime   = DateTime.Today.AddDays(-2),
                    Organizer     = user1
                };
                var invitedUser1 = new MeetingInvitedUser
                {
                    Meeting = meeting1,
                    AppUser = user2
                };
                var invitedUser2 = new MeetingInvitedUser
                {
                    Meeting = meeting1,
                    AppUser = user3
                };
                var invitedUser3 = new MeetingInvitedUser
                {
                    Meeting = meeting2,
                    AppUser = user2
                };
                var invitedUser4 = new MeetingInvitedUser
                {
                    Meeting = meeting3,
                    AppUser = user1
                };
                var invitedUser5 = new MeetingInvitedUser
                {
                    Meeting = meeting3,
                    AppUser = user4
                };
                var invitedUser6 = new MeetingInvitedUser
                {
                    Meeting = meeting4,
                    AppUser = user5
                };
                var invitedUser7 = new MeetingInvitedUser
                {
                    Meeting = meeting5,
                    AppUser = user4
                };
                var invitedUser8 = new MeetingInvitedUser
                {
                    Meeting = meeting5,
                    AppUser = user1
                };
                var invitedUser9 = new MeetingInvitedUser
                {
                    Meeting = meeting6,
                    AppUser = user5
                };
                var invitedUser10 = new MeetingInvitedUser
                {
                    Meeting = meeting7,
                    AppUser = user2
                };
                var expectedResult     = new List <Meeting>();
                var expectedResultList = new List <Meeting>
                {
                    meeting2,
                    meeting3,
                    meeting5,
                    meeting6
                };

                //Act
                // Run the test against one instance of the context
                using (var context = factory.CreateContext())
                {
                    context.Users.Add(user1);
                    context.Users.Add(user2);
                    context.Users.Add(user3);
                    context.Users.Add(user4);
                    context.Users.Add(user5);
                    context.SaveChanges();
                    context.Meetings.Add(meeting1);
                    context.Meetings.Add(meeting2);
                    context.Meetings.Add(meeting3);
                    context.Meetings.Add(meeting4);
                    context.Meetings.Add(meeting5);
                    context.Meetings.Add(meeting6);
                    context.Meetings.Add(meeting7);
                    context.Meetings.Add(meeting8);
                    context.SaveChanges();
                    context.MeetingInvitedUser.Add(invitedUser1);
                    context.MeetingInvitedUser.Add(invitedUser2);
                    context.MeetingInvitedUser.Add(invitedUser3);
                    context.MeetingInvitedUser.Add(invitedUser4);
                    context.MeetingInvitedUser.Add(invitedUser5);
                    context.MeetingInvitedUser.Add(invitedUser6);
                    context.MeetingInvitedUser.Add(invitedUser7);
                    context.MeetingInvitedUser.Add(invitedUser8);
                    context.MeetingInvitedUser.Add(invitedUser9);
                    context.MeetingInvitedUser.Add(invitedUser10);
                    context.SaveChanges();
                    var meetingRepository = new EFMeetingRepository(context);
                    expectedResult = meetingRepository.GetOverlappingMeetingsForMeeting(DateTime.Today.AddDays(1),
                                                                                        DateTime.Today.AddDays(2), 1).ToList();
                }

                using (var context = factory.CreateContext())
                {
                    var meetings = context.Meetings
                                   .Include(m => m.Organizer)
                                   .Include(m => m.MeetingInvitedUser)
                                   .ToList();
                    var users        = context.Users.ToList();
                    var invitedUsers = context.MeetingInvitedUser.ToList();
                    Assert.Equal(5, users.Count);
                    Assert.Equal(8, meetings.Count);
                    Assert.Equal(10, invitedUsers.Count);
                    Assert.Equal(4, expectedResult.Count);
                    Assert.Equal(expectedResult.OrderBy(m => m.MeetingId),
                                 expectedResultList.OrderBy(m => m.MeetingId));
                }
            }
        }
        public void Can_Change_Status()
        {
            //Arrange
            using var factory = new SQLiteDbContextFactory();
            //Arrange
            var user1 = new AppUser {
                Id = "id1", UserName = "******", Email = "*****@*****.**"
            };
            var user2 = new AppUser {
                Id = "id2", UserName = "******", Email = "*****@*****.**"
            };
            var user3 = new AppUser {
                Id = "id3", UserName = "******", Email = "*****@*****.**"
            };
            var user4 = new AppUser {
                Id = "id4", UserName = "******", Email = "*****@*****.**"
            };
            var request1 = new FriendInvitation
            {
                FriendInvitationId = 1,
                Sender             = user1,
                Invited            = user2,
                InvitedEmail       = user2.Email,
                Status             = FriendInvitationStatus.Pending
            };

            var request2 = new FriendInvitation
            {
                FriendInvitationId = 2,
                Sender             = user3,
                InvitedEmail       = "*****@*****.**",
                Status             = FriendInvitationStatus.Pending
            };

            //Act
            using (var context = factory.CreateContext())
            {
                context.Users.Add(user1);
                context.Users.Add(user2);
                context.Users.Add(user3);
                context.Users.Add(user4);
                context.SaveChanges();
                context.FriendInvitations.Add(request1);
                context.FriendInvitations.Add(request2);
                context.SaveChanges();
                var friendInvitationRepository = new EFFriendInvitationRepository(context);
                friendInvitationRepository.ChangeStatus(request1.FriendInvitationId, FriendInvitationStatus.Accepted, user2);
                friendInvitationRepository.ChangeStatus(request2.FriendInvitationId, FriendInvitationStatus.Rejected, user4);
            }

            using (var context = factory.CreateContext())
            {
                var invitations = context.FriendInvitations
                                  .Include(i => i.Invited)
                                  .Include(i => i.Sender)
                                  .OrderBy(i => i.FriendInvitationId).ToList();
                Assert.Equal(4, context.Users.Count());
                Assert.Equal(2, context.FriendInvitations.Count());
                Assert.Equal(request1.FriendInvitationId, invitations[0].FriendInvitationId);
                Assert.Equal(request2.FriendInvitationId, invitations[1].FriendInvitationId);

                Assert.Equal(FriendInvitationStatus.Accepted, invitations[0].Status);
                Assert.Equal(FriendInvitationStatus.Rejected, invitations[1].Status);

                Assert.Equal(request1.Sender.Id, invitations[0].SenderId);
                Assert.Equal(request2.Sender.Id, invitations[1].SenderId);

                Assert.Equal(request1.Invited.Id, invitations[0].InvitedId);
                Assert.Equal(user4.Id, invitations[1].InvitedId);

                Assert.Equal(request1.InvitedEmail, invitations[0].InvitedEmail);
                Assert.Equal(user4.Email, invitations[1].InvitedEmail);
            }
        }
        public void Can_Add_Invitation()
        {
            //Arrange
            using var factory = new SQLiteDbContextFactory();
            //Arrange
            var user1 = new AppUser {
                Id = "id1", UserName = "******", Email = "*****@*****.**"
            };
            var user2 = new AppUser {
                Id = "id2", UserName = "******", Email = "*****@*****.**"
            };
            var user3 = new AppUser {
                Id = "id3", UserName = "******", Email = "*****@*****.**"
            };
            var request1ToAdd = new FriendInvitation
            {
                FriendInvitationId = 1,
                Sender             = user1,
                Invited            = user2,
                InvitedEmail       = user2.Email
            };

            var request2ToAdd = new FriendInvitation
            {
                FriendInvitationId = 2,
                Sender             = user3,
                InvitedEmail       = "*****@*****.**"
            };

            //Act
            using (var context = factory.CreateContext())
            {
                context.Users.Add(user1);
                context.Users.Add(user2);
                context.Users.Add(user3);
                context.SaveChanges();
                var friendInvitationRepository = new EFFriendInvitationRepository(context);
                friendInvitationRepository.AddInvitation(request1ToAdd);
                friendInvitationRepository.AddInvitation(request2ToAdd);
            }

            using (var context = factory.CreateContext())
            {
                var invitations = context.FriendInvitations
                                  .Include(i => i.Invited)
                                  .Include(i => i.Sender)
                                  .OrderBy(i => i.FriendInvitationId).ToList();
                Assert.Equal(3, context.Users.Count());
                Assert.Equal(2, context.FriendInvitations.Count());
                Assert.Equal(request1ToAdd.FriendInvitationId, invitations[0].FriendInvitationId);
                Assert.Equal(request2ToAdd.FriendInvitationId, invitations[1].FriendInvitationId);

                Assert.Equal(FriendInvitationStatus.Pending, invitations[0].Status);
                Assert.Equal(FriendInvitationStatus.Pending, invitations[1].Status);

                Assert.Equal(request1ToAdd.Sender.Id, invitations[0].SenderId);
                Assert.Equal(request2ToAdd.Sender.Id, invitations[1].SenderId);

                Assert.Equal(request1ToAdd.Invited.Id, invitations[0].InvitedId);
                Assert.Null(invitations[1].InvitedId);

                Assert.Equal(request1ToAdd.InvitedEmail, invitations[0].InvitedEmail);
                Assert.Equal("*****@*****.**", invitations[1].InvitedEmail);
            }
        }
        public void Can_Get_Invitations_Received_By_CurrentUser()
        {
            //Arrange
            var user1 = new AppUser {
                Id = "id1", UserName = "******", Email = "*****@*****.**"
            };
            var user2 = new AppUser {
                Id = "id2", UserName = "******", Email = "*****@*****.**"
            };
            var user3 = new AppUser {
                Id = "id3", UserName = "******", Email = "*****@*****.**"
            };
            var user4 = new AppUser {
                Id = "id4", UserName = "******", Email = "*****@*****.**"
            };
            var user5 = new AppUser {
                Id = "id5", UserName = "******", Email = "*****@*****.**"
            };

            var request1 = new FriendInvitation
            {
                FriendInvitationId = 1,
                Sender             = user1,
                Status             = FriendInvitationStatus.Pending,
                Invited            = user3,
                InvitedEmail       = user3.Email
            };

            var request2 = new FriendInvitation
            {
                FriendInvitationId = 2,
                Sender             = user4,
                Status             = FriendInvitationStatus.Rejected,
                Invited            = user1,
                InvitedEmail       = user1.Email
            };

            var request3 = new FriendInvitation
            {
                FriendInvitationId = 3,
                Sender             = user1,
                Status             = FriendInvitationStatus.Pending,
                InvitedEmail       = "*****@*****.**"
            };

            var request4 = new FriendInvitation
            {
                FriendInvitationId = 4,
                Sender             = user1,
                Status             = FriendInvitationStatus.Accepted,
                Invited            = user2,
                InvitedEmail       = user2.Email
            };

            var request5 = new FriendInvitation
            {
                FriendInvitationId = 5,
                Sender             = user5,
                Status             = FriendInvitationStatus.Accepted,
                Invited            = user1,
                InvitedEmail       = user1.Email
            };

            using var factory = new SQLiteDbContextFactory();
            using (var context = factory.CreateContext())
            {
                context.Users.Add(user1);
                context.Users.Add(user2);
                context.Users.Add(user3);
                context.Users.Add(user4);
                context.Users.Add(user5);
                context.FriendInvitations.Add(request1);
                context.FriendInvitations.Add(request2);
                context.FriendInvitations.Add(request3);
                context.FriendInvitations.Add(request4);
                context.FriendInvitations.Add(request5);
                context.SaveChanges();
            }

            //Act
            using (var context = factory.CreateContext())
            {
                var friendInvitationRepository = new EFFriendInvitationRepository(context);
                var result1 = friendInvitationRepository.GetInvitationsReceivedByCurrentUser(user1.Email)
                              .OrderBy(i => i.FriendInvitationId).ToList();
                var result2 = friendInvitationRepository.GetInvitationsReceivedByCurrentUser(user3.Email)
                              .OrderBy(i => i.FriendInvitationId).ToList();
                var result3 = friendInvitationRepository.GetInvitationsReceivedByCurrentUser(user5.Email)
                              .OrderBy(i => i.FriendInvitationId).ToList();
                Assert.Equal(5, context.Users.Count());
                Assert.Equal(5, context.FriendInvitations.Count());
                Assert.Equal(3, result1.Count);
                Assert.Equal(request2.FriendInvitationId, result1[0].FriendInvitationId);
                Assert.Equal(request3.FriendInvitationId, result1[1].FriendInvitationId);
                Assert.Equal(request5.FriendInvitationId, result1[2].FriendInvitationId);
                Assert.Single(result2);
                Assert.Equal(request1.FriendInvitationId, result2[0].FriendInvitationId);
                Assert.Empty(result3);
            }
        }
        public void Can_Get_Available_Users()
        {
            //Arrange
            var user1 = new AppUser {
                Id = "id1", UserName = "******", Email = "*****@*****.**"
            };
            var user2 = new AppUser {
                Id = "id2", UserName = "******", Email = "*****@*****.**"
            };
            var user3 = new AppUser {
                Id = "id3", UserName = "******", Email = "*****@*****.**"
            };
            var user4 = new AppUser {
                Id = "id4", UserName = "******", Email = "*****@*****.**"
            };
            var user5 = new AppUser {
                Id = "id5", UserName = "******", Email = "*****@*****.**"
            };
            var user6 = new AppUser {
                Id = "id6", UserName = "******", Email = "*****@*****.**"
            };
            var meeting1 = new Meeting {
                MeetingId = 1, Title = "meeting1", Organizer = user1
            };
            var meeting2 = new Meeting {
                MeetingId = 2, Title = "meeting2", Organizer = user4
            };
            var result = new List <AppUser>();

            using (var factory = new SQLiteDbContextFactory())
            {
                var invitedUser1 = new MeetingInvitedUser
                {
                    Meeting = meeting1,
                    AppUser = user2,
                    Status  = InvitationStatus.Pending
                };

                var invitedUser2 = new MeetingInvitedUser
                {
                    Meeting = meeting1,
                    AppUser = user3,
                    Status  = InvitationStatus.Accepted
                };

                var invitedUser3 = new MeetingInvitedUser
                {
                    Meeting = meeting2,
                    AppUser = user5,
                    Status  = InvitationStatus.Rejected
                };

                using (var context = factory.CreateContext())
                {
                    context.Users.Add(user1);
                    context.Users.Add(user2);
                    context.Users.Add(user3);
                    context.Users.Add(user4);
                    context.Users.Add(user5);
                    context.Users.Add(user6);
                    context.SaveChanges();
                    context.Meetings.Add(meeting1);
                    context.Meetings.Add(meeting2);
                    context.SaveChanges();
                    context.MeetingInvitedUser.Add(invitedUser1);
                    context.MeetingInvitedUser.Add(invitedUser2);
                    context.MeetingInvitedUser.Add(invitedUser3);
                    context.SaveChanges();
                }

                //Act
                using (var context = factory.CreateContext())
                {
                    var invitedUserRepository = new EFInvitedUserRepository(context);
                    result = invitedUserRepository.GetAvailableUsers(meeting1.MeetingId).OrderBy(u => u.UserName)
                             .ToList();
                    //Assert
                    Assert.Equal(6, context.Users.Count());
                    Assert.Equal(2, context.Meetings.Count());
                    Assert.Equal(3, context.MeetingInvitedUser.Count());
                    Assert.Equal(3, result.Count);
                    Assert.Equal(user4.Email, result[0].Email);
                    Assert.Equal(user5.Email, result[1].Email);
                    Assert.Equal(user6.Email, result[2].Email);
                }
            }
        }
        public void Can_Get_Notification()
        {
            //Arrange
            using (var factory = new SQLiteDbContextFactory())
            {
                var participant1 = new AppUser {
                    Id = "id1", UserName = "******", Email = "*****@*****.**"
                };
                var participant2 = new AppUser {
                    Id = "id2", UserName = "******", Email = "*****@*****.**"
                };
                var meeting1 = new Meeting
                {
                    MeetingId = 1, Organizer = participant1, StartDateTime = DateTime.UtcNow.AddDays(1)
                };
                var meeting2 = new Meeting
                {
                    MeetingId = 2, Organizer = participant2, StartDateTime = DateTime.UtcNow.AddDays(2)
                };
                var result1       = new TomorrowsMeetingsNotification();
                var result2       = new TomorrowsMeetingsNotification();
                var result3       = new TomorrowsMeetingsNotification();
                var result4       = new TomorrowsMeetingsNotification();
                var notification1 = new TomorrowsMeetingsNotification
                {
                    Meeting              = meeting1,
                    Participant          = participant1,
                    IfSent               = true,
                    MeetingStartDateTime = meeting1.StartDateTime,
                    NumberOfTries        = 1
                };

                //Act
                using (var context = factory.CreateContext())
                {
                    context.Users.Add(participant1);
                    context.Users.Add(participant2);
                    context.SaveChanges();
                    context.Meetings.Add(meeting1);
                    context.Meetings.Add(meeting2);
                    context.SaveChanges();
                    context.TomorrowsMeetingsNotifications.Add(notification1);
                    context.SaveChanges();

                    var notificationRepository = new EFTomorrowsMeetingsNotificationRepository(context);
                    result1 = notificationRepository.GetNotification(meeting1.MeetingId, participant1.Id, meeting1.StartDateTime);
                    result2 = notificationRepository.GetNotification(meeting1.MeetingId, participant2.Id, meeting1.StartDateTime);
                    result3 = notificationRepository.GetNotification(meeting2.MeetingId, participant1.Id, meeting1.StartDateTime);
                    result4 = notificationRepository.GetNotification(meeting2.MeetingId, participant1.Id, meeting2.StartDateTime);
                }

                //Assert
                using (var context = factory.CreateContext())
                {
                    Assert.Equal(2, context.Users.Count());
                    Assert.Equal(2, context.Meetings.Count());
                    Assert.Equal(1, context.TomorrowsMeetingsNotifications.Count());
                    Assert.Equal(notification1, result1);
                    Assert.Null(result2);
                    Assert.Null(result3);
                    Assert.Null(result4);
                }
            }
        }
        public void Can_Change_Status()
        {
            //Arrange
            var user = new AppUser {
                Id = "id1", UserName = "******", Email = "*****@*****.**"
            };
            var meeting = new Meeting {
                MeetingId = 1, Title = "meeting1"
            };

            using (var factory = new SQLiteDbContextFactory())
            {
                var invitedUser = new MeetingInvitedUser
                {
                    Meeting = meeting,
                    AppUser = user,
                    Status  = InvitationStatus.Pending
                };

                using (var context = factory.CreateContext())
                {
                    context.MeetingInvitedUser.Add(invitedUser);
                    context.SaveChanges();
                }

                //Act
                using (var context = factory.CreateContext())
                {
                    var invitedUserRepository = new EFInvitedUserRepository(context);
                    invitedUserRepository.ChangeStatus(invitedUser.UserId, invitedUser.MeetingId,
                                                       InvitationStatus.Accepted);
                }

                //Assert
                using (var context = factory.CreateContext())
                {
                    var invitedUsers = context.MeetingInvitedUser.ToList();
                    Assert.Equal(InvitationStatus.Accepted, invitedUsers.Single().Status);
                }

                //Act
                using (var context = factory.CreateContext())
                {
                    var invitedUserRepository = new EFInvitedUserRepository(context);
                    invitedUserRepository.ChangeStatus(invitedUser.UserId, invitedUser.MeetingId,
                                                       InvitationStatus.Rejected);
                }

                //Assert
                using (var context = factory.CreateContext())
                {
                    var invitedUsers = context.MeetingInvitedUser.ToList();
                    Assert.Equal(InvitationStatus.Rejected, invitedUsers.Single().Status);
                }

                //Act
                using (var context = factory.CreateContext())
                {
                    var invitedUserRepository = new EFInvitedUserRepository(context);
                    invitedUserRepository.ChangeStatus(invitedUser.UserId, invitedUser.MeetingId,
                                                       InvitationStatus.Cancelled);
                }

                //Assert
                using (var context = factory.CreateContext())
                {
                    var invitedUsers = context.MeetingInvitedUser.ToList();
                    Assert.Equal(InvitationStatus.Cancelled, invitedUsers.Single().Status);
                }
            }
        }
        public void Can_Get_Invited_Users_List()
        {
            //Arrange
            var user1 = new AppUser {
                Id = "id1", UserName = "******", Email = "*****@*****.**"
            };
            var user2 = new AppUser {
                Id = "id2", UserName = "******", Email = "*****@*****.**"
            };
            var user3 = new AppUser {
                Id = "id3", UserName = "******", Email = "*****@*****.**"
            };
            var user4 = new AppUser {
                Id = "id4", UserName = "******", Email = "*****@*****.**"
            };
            var user5 = new AppUser {
                Id = "id5", UserName = "******", Email = "*****@*****.**"
            };
            var meeting = new Meeting {
                MeetingId = 1, Title = "meeting1"
            };
            var result = new List <MeetingInvitedUser>();

            using (var factory = new SQLiteDbContextFactory())
            {
                var invitedUser1 = new MeetingInvitedUser
                {
                    Meeting = meeting,
                    AppUser = user1,
                    Status  = InvitationStatus.Pending
                };

                var invitedUser2 = new MeetingInvitedUser
                {
                    Meeting = meeting,
                    AppUser = user2,
                    Status  = InvitationStatus.Accepted
                };

                var invitedUser3 = new MeetingInvitedUser
                {
                    Meeting = meeting,
                    AppUser = user3,
                    Status  = InvitationStatus.Rejected
                };

                var invitedUser4 = new MeetingInvitedUser
                {
                    Meeting = meeting,
                    AppUser = user4,
                    Status  = InvitationStatus.Cancelled
                };

                var invitedUser5 = new MeetingInvitedUser
                {
                    Meeting = meeting,
                    AppUser = user5,
                    Status  = InvitationStatus.Pending
                };

                using (var context = factory.CreateContext())
                {
                    context.Users.Add(user1);
                    context.Users.Add(user2);
                    context.Users.Add(user3);
                    context.Users.Add(user4);
                    context.Users.Add(user5);
                    context.Meetings.Add(meeting);
                    context.MeetingInvitedUser.Add(invitedUser1);
                    context.MeetingInvitedUser.Add(invitedUser2);
                    context.MeetingInvitedUser.Add(invitedUser3);
                    context.MeetingInvitedUser.Add(invitedUser4);
                    context.MeetingInvitedUser.Add(invitedUser5);
                    context.SaveChanges();
                }

                //Act
                using (var context = factory.CreateContext())
                {
                    var invitedUserRepository = new EFInvitedUserRepository(context);
                    result = invitedUserRepository.GetInvitedUsersList(meeting.MeetingId).OrderBy(mu => mu.UserId)
                             .ToList();
                    Assert.Equal(5, result.Count);
                    Assert.Equal(InvitationStatus.Pending, result[0].Status);
                    Assert.Equal(InvitationStatus.Accepted, result[1].Status);
                    Assert.Equal(InvitationStatus.Rejected, result[2].Status);
                    Assert.Equal(InvitationStatus.Cancelled, result[3].Status);
                    Assert.Equal(InvitationStatus.Pending, result[4].Status);
                }
            }
        }
        public void Can_Get_Users_Emails_For_Notification()
        {
            //Arrange
            using (var factory = new SQLiteDbContextFactory())
            {
                using (var context = factory.CreateContext())
                {
                    var user1 = new AppUser
                    {
                        Id = "1", UserName = "******", Email = "*****@*****.**"
                    };
                    var user2 = new AppUser
                    {
                        Id = "2", UserName = "******", Email = "*****@*****.**"
                    };
                    var user3 = new AppUser
                    {
                        Id = "3", UserName = "******", Email = "*****@*****.**"
                    };
                    var user4 = new AppUser
                    {
                        Id = "4", UserName = "******", Email = "*****@*****.**"
                    };
                    context.Users.Add(user1);
                    context.Users.Add(user2);
                    context.Users.Add(user3);
                    context.Users.Add(user4);
                    context.SaveChanges();

                    var meeting1 = new Meeting
                    {
                        Title = "Meeting1", Organizer = user1
                    };
                    var meeting2 = new Meeting
                    {
                        Title = "Meeting2", Organizer = user2
                    };
                    var meeting3 = new Meeting
                    {
                        Title = "Meeting3", Organizer = user3
                    };
                    var meeting4 = new Meeting
                    {
                        Title = "Meeting4", Organizer = user4
                    };

                    context.Meetings.Add(meeting1);
                    context.Meetings.Add(meeting2);
                    context.Meetings.Add(meeting3);
                    context.Meetings.Add(meeting4);
                    context.SaveChanges();

                    var invitedUsers1 = new MeetingInvitedUser {
                        Meeting = meeting1, AppUser = user2
                    };
                    var invitedUsers2 = new MeetingInvitedUser {
                        Meeting = meeting1, AppUser = user3
                    };
                    var invitedUsers3 = new MeetingInvitedUser {
                        Meeting = meeting1, AppUser = user4
                    };
                    var invitedUsers4 = new MeetingInvitedUser {
                        Meeting = meeting2, AppUser = user1
                    };
                    var invitedUsers5 = new MeetingInvitedUser {
                        Meeting = meeting2, AppUser = user4
                    };
                    var invitedUsers6 = new MeetingInvitedUser {
                        Meeting = meeting3, AppUser = user4
                    };
                    context.MeetingInvitedUser.Add(invitedUsers1);
                    context.MeetingInvitedUser.Add(invitedUsers2);
                    context.MeetingInvitedUser.Add(invitedUsers3);
                    context.MeetingInvitedUser.Add(invitedUsers4);
                    context.MeetingInvitedUser.Add(invitedUsers5);
                    context.MeetingInvitedUser.Add(invitedUsers6);
                    context.SaveChanges();

                    //Act
                    var invitedUserRepository = new EFInvitedUserRepository(context);
                    var result1 = invitedUserRepository.GetUsersEmailsForNotification(meeting1.MeetingId, user1.Id)
                                  .OrderBy(s => s).ToList();
                    var list1 = new List <string> {
                        user2.Email, user3.Email, user4.Email
                    };

                    var result2 = invitedUserRepository.GetUsersEmailsForNotification(meeting2.MeetingId, user4.Id)
                                  .OrderBy(s => s)
                                  .ToList();
                    var list2 = new List <string> {
                        user1.Email, user2.Email
                    };

                    var result3 = invitedUserRepository.GetUsersEmailsForNotification(meeting3.MeetingId, user3.Id)
                                  .ToList();
                    var list3 = new List <string> {
                        user4.Email
                    };

                    var result4 = invitedUserRepository.GetUsersEmailsForNotification(meeting4.MeetingId, user4.Id)
                                  .ToList();

                    //Assert
                    Assert.Equal(4, context.Meetings.Count());
                    Assert.Equal(4, context.Users.Count());
                    Assert.Equal(6, context.MeetingInvitedUser.Count());

                    Assert.Equal(3, result1.Count);
                    Assert.Equal(list1.OrderBy(s => s), result1);

                    Assert.Equal(2, result2.Count());
                    Assert.Equal(list2.OrderBy(s => s), result2);

                    Assert.Single(result3);
                    Assert.Equal(list3, result3);

                    Assert.Empty(result4);
                }
            }
        }
Exemplo n.º 25
0
        public void Can_Get_Invited_Users_List()
        {
            //Arrange
            Mock <UserManager <AppUser> > GetMockUserManager()
            {
                var userStoreMock = new Mock <IUserStore <AppUser> >();

                return(new Mock <UserManager <AppUser> >(
                           userStoreMock.Object, null, null, null, null, null, null, null, null));
            }

            var user1 = new AppUser {
                Id = "id1", UserName = "******", Email = "*****@*****.**"
            };
            var user2 = new AppUser {
                Id = "id2", UserName = "******", Email = "*****@*****.**"
            };
            var user3 = new AppUser {
                Id = "id3", UserName = "******", Email = "*****@*****.**"
            };
            var user4 = new AppUser {
                Id = "id4", UserName = "******", Email = "*****@*****.**"
            };
            var user5 = new AppUser {
                Id = "id5", UserName = "******", Email = "*****@*****.**"
            };
            var meeting = new Meeting {
                MeetingId = 1, Title = "meeting1"
            };
            var result = new Dictionary <string, InvitationStatus>();

            using (var factory = new SQLiteDbContextFactory())
            {
                var invitedUser1 = new MeetingInvitedUser
                {
                    Meeting = meeting,
                    AppUser = user1,
                    Status  = InvitationStatus.Pending
                };

                var invitedUser2 = new MeetingInvitedUser
                {
                    Meeting = meeting,
                    AppUser = user2,
                    Status  = InvitationStatus.Accepted
                };

                var invitedUser3 = new MeetingInvitedUser
                {
                    Meeting = meeting,
                    AppUser = user3,
                    Status  = InvitationStatus.Rejected
                };

                var invitedUser4 = new MeetingInvitedUser
                {
                    Meeting = meeting,
                    AppUser = user4,
                    Status  = InvitationStatus.Cancelled
                };

                var invitedUser5 = new MeetingInvitedUser
                {
                    Meeting = meeting,
                    AppUser = user5,
                    Status  = InvitationStatus.Pending
                };

                using (var context = factory.CreateContext())
                {
                    context.Users.Add(user1);
                    context.Users.Add(user2);
                    context.Users.Add(user3);
                    context.Users.Add(user4);
                    context.Users.Add(user5);
                    context.Meetings.Add(meeting);
                    context.MeetingInvitedUser.Add(invitedUser1);
                    context.MeetingInvitedUser.Add(invitedUser2);
                    context.MeetingInvitedUser.Add(invitedUser3);
                    context.MeetingInvitedUser.Add(invitedUser4);
                    context.MeetingInvitedUser.Add(invitedUser5);
                    context.SaveChanges();
                }

                //Act
                using (var context = factory.CreateContext())
                {
                    var invitedUserRepository = new EFInvitedUserRepository(context, GetMockUserManager().Object);
                    result = invitedUserRepository.GetInvitedUsersList(meeting.MeetingId);
                    Assert.Equal(5, result.Count);
                    Assert.Equal(InvitationStatus.Pending, result["id1"]);
                    Assert.Equal(InvitationStatus.Accepted, result["id2"]);
                    Assert.Equal(InvitationStatus.Rejected, result["id3"]);
                    Assert.Equal(InvitationStatus.Cancelled, result["id4"]);
                    Assert.Equal(InvitationStatus.Pending, result["id5"]);
                }
            }
        }
Exemplo n.º 26
0
        public void Can_See_Meetings_By_User()
        {
            //Arrange
            using (var factory = new SQLiteDbContextFactory())
            {
                using (var context = factory.CreateContext())
                {
                    var user1 = new AppUser
                    {
                        Id = "1", UserName = "******", Email = "*****@*****.**"
                    };
                    var user2 = new AppUser
                    {
                        Id = "2", UserName = "******", Email = "*****@*****.**"
                    };
                    var user3 = new AppUser
                    {
                        Id = "3", UserName = "******", Email = "*****@*****.**"
                    };
                    context.Users.Add(user1);
                    context.Users.Add(user2);
                    context.Users.Add(user3);
                    context.SaveChanges();

                    var meeting1 = new Meeting
                    {
                        Title = "Meeting1", Organizer = user1
                    };
                    var meeting2 = new Meeting
                    {
                        Title = "Meeting2", Organizer = user1
                    };
                    var meeting3 = new Meeting
                    {
                        Title = "Meeting3", Organizer = user2
                    };
                    context.Meetings.Add(meeting1);
                    context.Meetings.Add(meeting2);
                    context.Meetings.Add(meeting3);
                    context.SaveChanges();

                    var invitedUsers1 = new MeetingInvitedUser
                    {
                        Meeting = meeting1,
                        AppUser = user3
                    };

                    var invitedUsers2 = new MeetingInvitedUser
                    {
                        Meeting = meeting1,
                        AppUser = user2
                    };

                    var invitedUsers3 = new MeetingInvitedUser
                    {
                        Meeting = meeting2,
                        AppUser = user2
                    };
                    context.MeetingInvitedUser.Add(invitedUsers1);
                    context.MeetingInvitedUser.Add(invitedUsers2);
                    context.MeetingInvitedUser.Add(invitedUsers3);
                    context.SaveChanges();

                    //Act
                    var meetingRepository = new EFMeetingRepository(context);
                    var result1           = meetingRepository.GetMeetingsForUser(user1.Id).ToList();
                    var list1             = new List <Meeting>
                    {
                        meeting1,
                        meeting2
                    };

                    var result2 = meetingRepository.GetMeetingsForUser(user2.Id).ToList();
                    var list2   = new List <Meeting>
                    {
                        meeting1,
                        meeting2,
                        meeting3
                    };

                    var result3 = meetingRepository.GetMeetingsForUser(user3.Id).ToList();
                    var list3   = new List <Meeting>
                    {
                        meeting1
                    };

                    //Assert
                    Assert.Equal(3, context.Meetings.Count());
                    Assert.Equal(3, context.Users.Count());
                    Assert.Equal(3, context.MeetingInvitedUser.Count());

                    Assert.Equal(2, result1.Count);
                    Assert.Equal(result1.OrderBy(m => m.Title), list1.OrderBy(m => m.Title));

                    Assert.Equal(3, result2.Count);
                    Assert.Equal(result2.OrderBy(m => m.Title), list2.OrderBy(m => m.Title));

                    Assert.Single(result3);
                    Assert.Equal(result3, list3);
                }
            }
        }
Exemplo n.º 27
0
        public void Can_Get_Conflicted_Meetings()
        {
            //Arrange
            using (var factory = new SQLiteDbContextFactory())
            {
                var meeting1 = new Meeting
                {
                    MeetingId     = 1, Title = "Meeting1",
                    StartDateTime = DateTime.Now.AddDays(-2).ToUniversalTime(),
                    EndDateTime   = DateTime.Now.AddDays(-1).ToUniversalTime()
                };
                var meeting2 = new Meeting
                {
                    MeetingId     = 2, Title = "Meeting2",
                    StartDateTime = DateTime.Now.AddHours(-6).ToUniversalTime(),
                    EndDateTime   = DateTime.Now.AddHours(-1).AddMinutes(1).ToUniversalTime()
                };
                var meeting3 = new Meeting
                {
                    MeetingId     = 3, Title = "Meeting3",
                    StartDateTime = DateTime.Now.AddHours(-5).ToUniversalTime(),
                    EndDateTime   = DateTime.Now.AddMinutes(1).ToUniversalTime()
                };
                var meeting4 = new Meeting
                {
                    MeetingId     = 4, Title = "Meeting4",
                    StartDateTime = DateTime.Now.AddHours(-1).ToUniversalTime(),
                    EndDateTime   = DateTime.Now.AddHours(2).ToUniversalTime()
                };
                var meeting5 = new Meeting
                {
                    MeetingId     = 5, Title = "Meeting5",
                    StartDateTime = DateTime.Now.ToUniversalTime(),
                    EndDateTime   = DateTime.Now.AddHours(2).ToUniversalTime()
                };
                var meeting6 = new Meeting
                {
                    MeetingId     = 6, Title = "Meeting6",
                    StartDateTime = DateTime.Now.AddHours(1).ToUniversalTime(),
                    EndDateTime   = DateTime.Now.AddHours(3).ToUniversalTime()
                };
                var meeting7 = new Meeting
                {
                    MeetingId     = 7, Title = "Meeting7",
                    StartDateTime = DateTime.Now.AddHours(6).ToUniversalTime(),
                    EndDateTime   = DateTime.Now.AddHours(23).ToUniversalTime()
                };
                var meeting8 = new Meeting
                {
                    MeetingId     = 8, Title = "Meeting8",
                    StartDateTime = DateTime.Now.AddHours(24).ToUniversalTime(),
                    EndDateTime   = DateTime.Now.AddHours(30).ToUniversalTime()
                };

                var list = new List <Meeting>
                {
                    meeting1,
                    meeting2,
                    meeting3,
                    meeting4,
                    meeting5,
                    meeting6,
                    meeting7,
                    meeting8
                }.AsQueryable();

                var result1     = new List <Meeting>();
                var resultList1 = new List <Meeting> {
                    meeting3, meeting4, meeting5, meeting6
                };
                var result2     = new List <Meeting>();
                var resultList2 = new List <Meeting> {
                    meeting2, meeting3, meeting4, meeting5, meeting6
                };
                var result3     = new List <Meeting>();
                var result4     = new List <Meeting>();
                var resultList4 = new List <Meeting> {
                    meeting6, meeting7, meeting8
                };
                var result5 = new List <Meeting>();

                //Act
                using (var context = factory.CreateContext())
                {
                    var meetingRepository = new EFMeetingRepository(context);
                    result1 = meetingRepository.GetOverlappingMeetings(list, DateTime.Now.ToUniversalTime(),
                                                                       DateTime.Now.AddHours(1).ToUniversalTime()).ToList();
                    result2 = meetingRepository.GetOverlappingMeetings(list,
                                                                       DateTime.Now.AddHours(-1).ToUniversalTime(),
                                                                       DateTime.Now.AddHours(3).ToUniversalTime()).ToList();
                    result3 = meetingRepository.GetOverlappingMeetings(list,
                                                                       DateTime.Now.AddHours(-4).ToUniversalTime(),
                                                                       DateTime.Now.AddHours(4).ToUniversalTime()).ToList();
                    result4 = meetingRepository.GetOverlappingMeetings(list, DateTime.Now.AddHours(2).ToUniversalTime(),
                                                                       DateTime.Now.AddDays(1).ToUniversalTime()).ToList();
                    result5 = meetingRepository.GetOverlappingMeetings(list, DateTime.Now.AddDays(2).ToUniversalTime(),
                                                                       DateTime.Now.AddDays(3).ToUniversalTime()).ToList();
                }

                //Assert
                Assert.Equal(4, result1.Count);
                Assert.Equal(resultList1.OrderBy(m => m.MeetingId), result1.OrderBy(m => m.MeetingId));
                Assert.Equal(5, result2.Count);
                Assert.Equal(resultList2.OrderBy(m => m.MeetingId), result2.OrderBy(m => m.MeetingId));
                Assert.Equal(5, result3.Count);
                Assert.Equal(resultList2.OrderBy(m => m.MeetingId), result3.OrderBy(m => m.MeetingId));
                Assert.Equal(3, result4.Count);
                Assert.Equal(resultList4.OrderBy(m => m.MeetingId), result4.OrderBy(m => m.MeetingId));
                Assert.Empty(result5);
            }
        }
        public void Can_Check_If_Invitation_Was_Received_By_Current_User()
        {
            //Arrange
            using var factory = new SQLiteDbContextFactory();
            //Arrange
            var user1 = new AppUser {
                Id = "id1", UserName = "******", Email = "*****@*****.**"
            };
            var user2 = new AppUser {
                Id = "id2", UserName = "******", Email = "*****@*****.**"
            };
            var user3 = new AppUser {
                Id = "id3", UserName = "******", Email = "*****@*****.**"
            };

            var request1 = new FriendInvitation
            {
                FriendInvitationId = 1,
                Sender             = user1,
                InvitedEmail       = "*****@*****.**",
                Status             = FriendInvitationStatus.Pending
            };

            var request2 = new FriendInvitation
            {
                FriendInvitationId = 2,
                Sender             = user1,
                InvitedEmail       = "*****@*****.**",
                Status             = FriendInvitationStatus.Rejected
            };

            var request3 = new FriendInvitation
            {
                FriendInvitationId = 3,
                Sender             = user3,
                InvitedEmail       = "*****@*****.**",
                Status             = FriendInvitationStatus.Accepted
            };

            var request4 = new FriendInvitation
            {
                FriendInvitationId = 4,
                Sender             = user2,
                Invited            = user1,
                InvitedEmail       = user1.Email,
                Status             = FriendInvitationStatus.Pending
            };

            bool result;

            //Act
            using (var context = factory.CreateContext())
            {
                context.Users.Add(user1);
                context.Users.Add(user2);
                context.Users.Add(user3);
                context.SaveChanges();
                context.FriendInvitations.Add(request1);
                context.FriendInvitations.Add(request2);
                context.FriendInvitations.Add(request3);
                context.FriendInvitations.Add(request4);
                context.SaveChanges();
                var friendInvitationRepository = new EFFriendInvitationRepository(context);
                result = friendInvitationRepository.IfInvitationWasReceivedByCurrentUser(user1.Id, "*****@*****.**");
            }

            using (var context = factory.CreateContext())
            {
                Assert.Equal(3, context.Users.Count());
                Assert.Equal(4, context.FriendInvitations.Count());
                Assert.True(result);
            }
        }
        public void Can_Get_Number_Of_Pending_Invitations_For_CurrentUser()
        {
            //Arrange
            using var factory = new SQLiteDbContextFactory();
            //Arrange
            var user1 = new AppUser {
                Id = "id1", UserName = "******", Email = "*****@*****.**"
            };
            var user2 = new AppUser {
                Id = "id2", UserName = "******", Email = "*****@*****.**"
            };
            var user3 = new AppUser {
                Id = "id3", UserName = "******", Email = "*****@*****.**"
            };
            var user4 = new AppUser {
                Id = "id4", UserName = "******", Email = "*****@*****.**"
            };

            var request1 = new FriendInvitation
            {
                FriendInvitationId = 1,
                Sender             = user1,
                Invited            = user2,
                Status             = FriendInvitationStatus.Pending
            };

            var request2 = new FriendInvitation
            {
                FriendInvitationId = 2,
                Sender             = user3,
                Invited            = user2,
                Status             = FriendInvitationStatus.Rejected
            };

            var request3 = new FriendInvitation
            {
                FriendInvitationId = 3,
                Sender             = user4,
                Invited            = user2,
                Status             = FriendInvitationStatus.Accepted
            };

            var request4 = new FriendInvitation
            {
                FriendInvitationId = 4,
                Sender             = user1,
                Invited            = user3,
                Status             = FriendInvitationStatus.Pending
            };

            var request5 = new FriendInvitation
            {
                FriendInvitationId = 5,
                Sender             = user2,
                Invited            = user3,
                Status             = FriendInvitationStatus.Pending
            };

            int result1;
            int result2;
            int result3;

            //Act
            using (var context = factory.CreateContext())
            {
                context.Users.Add(user1);
                context.Users.Add(user2);
                context.Users.Add(user3);
                context.Users.Add(user4);
                context.SaveChanges();
                context.FriendInvitations.Add(request1);
                context.FriendInvitations.Add(request2);
                context.FriendInvitations.Add(request3);
                context.FriendInvitations.Add(request4);
                context.FriendInvitations.Add(request5);
                context.SaveChanges();
                var friendInvitationRepository = new EFFriendInvitationRepository(context);
                result1 = friendInvitationRepository.GetNumberOfPendingInvitationsForCurrentUser(user1.UserName);
                result2 = friendInvitationRepository.GetNumberOfPendingInvitationsForCurrentUser(user2.UserName);
                result3 = friendInvitationRepository.GetNumberOfPendingInvitationsForCurrentUser(user3.UserName);
            }

            using (var context = factory.CreateContext())
            {
                Assert.Equal(4, context.Users.Count());
                Assert.Equal(5, context.FriendInvitations.Count());
                Assert.Equal(0, result1);
                Assert.Equal(1, result2);
                Assert.Equal(2, result3);
            }
        }
Exemplo n.º 30
0
        public void Can_Edit_Meeting()
        {
            //Arrange
            using (var factory = new SQLiteDbContextFactory())
            {
                var organizer1 = new AppUser
                {
                    Id = "1", UserName = "******", Email = "*****@*****.**"
                };
                var organizer2 = new AppUser
                {
                    Id = "2", UserName = "******", Email = "*****@*****.**"
                };

                var meetingToEdit = new Meeting
                {
                    MeetingId     = 1,
                    Title         = "TestToEdit",
                    StartDateTime = DateTime.Today.AddDays(2).AddHours(2),
                    EndDateTime   = DateTime.Today.AddDays(2).AddHours(4),
                    Organizer     = organizer2,
                    City          = "City2",
                    Street        = "Street2",
                    PostalCode    = "PostalCode2",
                    Country       = Country.None,
                    Notes         = "Notes2"
                };

                using (var context = factory.CreateContext())
                {
                    context.Users.Add(organizer1);
                    context.Users.Add(organizer2);
                    context.SaveChanges();

                    context.Meetings.Add(new Meeting
                    {
                        MeetingId     = 1,
                        Title         = "TestToAdd",
                        StartDateTime = DateTime.Today.AddDays(1).AddHours(5),
                        EndDateTime   = DateTime.Today.AddDays(1).AddHours(8),
                        Organizer     = organizer1,
                        City          = "City",
                        Street        = "Street",
                        PostalCode    = "PostalCode",
                        Country       = Country.Togo,
                        Notes         = "Notes"
                    });
                    context.SaveChanges();

                    //Act
                    var meetingRepository = new EFMeetingRepository(context);
                    meetingRepository.SaveMeeting(meetingToEdit);
                }

                //Assert
                using (var context = factory.CreateContext())
                {
                    var meetings = context.Meetings
                                   .Include(m => m.Organizer)
                                   .ToList();
                    var users = context.Users.ToList();
                    Assert.Equal(2, users.Count);
                    Assert.Single(meetings);

                    Assert.Equal(meetingToEdit.Title, meetings.Single().Title);
                    Assert.Equal(meetingToEdit.StartDateTime, meetings.Single().StartDateTime);
                    Assert.Equal(meetingToEdit.EndDateTime, meetings.Single().EndDateTime);
                    Assert.Equal(meetingToEdit.City, meetings.Single().City);
                    Assert.Equal(meetingToEdit.Street, meetings.Single().Street);
                    Assert.Equal(meetingToEdit.PostalCode, meetings.Single().PostalCode);
                    Assert.Equal(meetingToEdit.Country, meetings.Single().Country);
                    Assert.NotNull(meetings.Single().Organizer);
                    Assert.Equal(organizer2.Id, meetings.Single().Organizer.Id);
                    Assert.Equal(meetingToEdit.Notes, meetings.Single().Notes);
                }
            }
        }