示例#1
0
        public void Invoke_TryEditPrivateConversation_ReturnsNull()
        {
            // prepare
            var guid       = Guid.NewGuid();
            var roomFromDb = new DataAccess.Models.Room
            {
                Id   = guid,
                Name = "OldName",
                IsPrivateConversation = true
            };

            var mockedRoomRepository = new Mock <IRoomRepository>();

            mockedRoomRepository.Setup(r => r.GetById(It.IsAny <Guid>()))
            .Returns(roomFromDb);
            var mockedUnitOfWork = new Mock <IUnitOfWork>();

            var action = new EditRoomName(mockedRoomRepository.Object, mockedUnitOfWork.Object);

            // action
            var room = action.Invoke(guid, "test");

            // check
            Assert.False(room);
            mockedRoomRepository.Verify(r => r.GetById(It.IsAny <Guid>()), Times.Once);
            mockedUnitOfWork.Verify(r => r.Save(), Times.Never);
        }
示例#2
0
        public void Invoke_EmptyString_ReturnsTrue(string roomTopic)
        {
            var roomFromDb = new DataAccess.Models.Room
            {
                Topic = "OldTopic"
            };

            // prepare
            DataAccess.Models.Room roomSaved = null;
            var mockedRoomRepository         = new Mock <IRoomRepository>();

            mockedRoomRepository.Setup(r => r.GetById(It.IsAny <Guid>()))
            .Returns(roomFromDb);
            mockedRoomRepository.Setup(r => r.Edit(It.IsAny <DataAccess.Models.Room>()))
            .Callback <DataAccess.Models.Room>(u => roomSaved = u);
            var mockedUnitOfWork = new Mock <IUnitOfWork>();

            var action = new EditRoomTopic(mockedRoomRepository.Object, mockedUnitOfWork.Object);

            // action
            var room = action.Invoke(Guid.NewGuid(), roomTopic);

            // check
            Assert.True(room);
            Assert.Equal(roomTopic, roomSaved.Topic);
            mockedRoomRepository.Verify(r => r.GetById(It.IsAny <Guid>()), Times.Once);
            mockedUnitOfWork.Verify(r => r.Save(), Times.Once);
        }
示例#3
0
        public void Invoke_ValidData_ReturnsCorrectModel()
        {
            var guid       = Guid.NewGuid();
            var roomFromDb = new DataAccess.Models.Room
            {
                Id   = guid,
                Name = "OldName"
            };

            // prepare
            DataAccess.Models.Room roomSaved = null;

            var mockedRoomRepository = new Mock <IRoomRepository>();

            mockedRoomRepository.Setup(r => r.GetById(It.IsAny <Guid>()))
            .Returns(roomFromDb);
            mockedRoomRepository.Setup(r => r.Edit(It.IsAny <DataAccess.Models.Room>()))
            .Callback <DataAccess.Models.Room>(u => roomSaved = u);
            var mockedUnitOfWork = new Mock <IUnitOfWork>();

            var action = new EditRoomName(mockedRoomRepository.Object, mockedUnitOfWork.Object);

            // action
            var room = action.Invoke(guid, "New Room Name");

            // check
            Assert.True(room);
            Assert.Equal(guid, roomSaved.Id);
            Assert.Equal("New Room Name", roomSaved.Name);
            Assert.Null(roomSaved.DeletedOn);
            mockedRoomRepository.Verify(r => r.GetById(It.IsAny <Guid>()), Times.Once);
            mockedUnitOfWork.Verify(r => r.Save(), Times.Once);
        }
        public void Invoke_Zero_ReturnsTrue()
        {
            var roomFromDb = new DataAccess.Models.Room
            {
                Customization = 3
            };

            // prepare
            DataAccess.Models.Room roomSaved = null;
            var mockedRoomRepository         = new Mock <IRoomRepository>();

            mockedRoomRepository.Setup(r => r.GetById(It.IsAny <Guid>()))
            .Returns(roomFromDb);
            mockedRoomRepository.Setup(r => r.Edit(It.IsAny <DataAccess.Models.Room>()))
            .Callback <DataAccess.Models.Room>(u => roomSaved = u);
            var mockedUnitOfWork = new Mock <IUnitOfWork>();

            var action = new EditRoomCustomization(mockedRoomRepository.Object, mockedUnitOfWork.Object);

            // action
            var room = action.Invoke(Guid.NewGuid(), 0);

            // check
            Assert.True(room);
            Assert.Equal(0, roomSaved.Customization);
            mockedRoomRepository.Verify(r => r.GetById(It.IsAny <Guid>()), Times.Once);
            mockedUnitOfWork.Verify(r => r.Save(), Times.Once);
        }
示例#5
0
        public void Invoke_ValidData_ReturnsCorrectModel()
        {
            // prepare
            var guidRoom = Guid.NewGuid();
            var guid     = Guid.NewGuid();

            var roomFromDb = new DataAccess.Models.Room
            {
                Id   = guid,
                Name = "TestRoom"
            };

            var mockedRoomRepository = new Mock <IRoomRepository>();

            mockedRoomRepository.Setup(r => r.GetById(It.IsAny <Guid>())).Returns(roomFromDb);
            var action = new GetRoomById(mockedRoomRepository.Object);

            // action
            var result = action.Invoke(guidRoom);

            // check
            Assert.NotNull(result);
            Assert.Equal(guid, result.Id);
            Assert.Equal("TestRoom", result.Name);
            mockedRoomRepository.Verify(r => r.GetById(It.IsAny <Guid>()), Times.Once);
        }
        public void Invoke_ValidData_EditAndSaveAreCalled()
        {
            // prepare
            var user = new DataAccess.Models.User
            {
                Name = "TestUser"
            };

            var role = new DataAccess.Models.Role
            {
                Name = "TestRole"
            };

            var message = new DataAccess.Models.Message
            {
                Text = "TestMessage"
            };

            var room = new DataAccess.Models.Room();

            var userRoomInDb = new List <DataAccess.Models.UserRoom>
            {
                new DataAccess.Models.UserRoom
                {
                    Messages = new List <DataAccess.Models.Message> {
                        message
                    },
                    LastMessage = message,
                    Room        = room,
                    User        = user,
                    Role        = role,
                    LockedUntil = DateTime.MaxValue
                }
            };

            var mockedUserRoomRepository = new Mock <IUserRoomRepository>();

            mockedUserRoomRepository.Setup(r => r.FindBy(It.IsAny <Expression <Func <DataAccess.Models.UserRoom, bool> > >()))
            .Returns(userRoomInDb.AsQueryable());

            var action = new GetUserRoomByIds(mockedUserRoomRepository.Object);

            // action
            var result = action.Invoke(Guid.NewGuid(), Guid.NewGuid());

            // assert
            Assert.NotNull(result);
            Assert.Equal("TestMessage", result.Messages[0].Text);
            //Assert.Equal("TestUser", result.Room.Users[0].Name);
            Assert.Equal("TestUser", result.User.Name);
            Assert.Equal("TestRole", result.Role.Name);
            Assert.Equal(DateTime.MaxValue, result.LockedUntil);
            mockedUserRoomRepository.Verify(r => r.FindBy(It.IsAny <Expression <Func <DataAccess.Models.UserRoom, bool> > >()), Times.Once);
        }
        public void Invoke_ValidData_ReturnsCorrectModel()
        {
            // prepare
            var guidRoom = Guid.NewGuid();
            var guid     = Guid.NewGuid();

            var tag = new Tag
            {
                Name = "TestTag"
            };

            var room = new DataAccess.Models.Room
            {
                Name = "TestRoom"
            };

            var lastMessage = new DataAccess.Models.Message
            {
                Text = "LastMessage"
            };

            var userRoomsFromDb = new List <DataAccess.Models.UserRoom>
            {
                new DataAccess.Models.UserRoom {
                    Id          = guid,
                    Room        = room,
                    LastMessage = lastMessage,
                    Tags        = new List <Tag> {
                        tag
                    }
                }
            };

            var mockedUserRepository = new Mock <IUserRepository>();

            mockedUserRepository.Setup(r => r.GetPrivateConversations(It.IsAny <Guid>())).Returns(userRoomsFromDb.AsQueryable());
            var action = new GetUserPrivateConversations(mockedUserRepository.Object);

            // action
            var result = action.Invoke(guidRoom);

            // check
            Assert.NotNull(result);
            Assert.Equal(guid, result[0].Id);
            Assert.Equal("TestTag", result[0].Tags[0].Name);
            Assert.Equal("TestRoom", result[0].Room.Name);
            Assert.Equal("LastMessage", result[0].LastMessage.Text);
            mockedUserRepository.Verify(r => r.GetPrivateConversations(It.IsAny <Guid>()), Times.Once);
        }
示例#8
0
        public void Invoke_ValidData_DeleteAndSaveAreCalled()
        {
            // prepare
            var guid       = Guid.NewGuid();
            var roomFromDb = new DataAccess.Models.Room
            {
                Id = guid
            };

            var mockedRoomRepository = new Mock <IRoomRepository>();

            mockedRoomRepository.Setup(r => r.GetById(guid)).Returns(roomFromDb);
            var mockedUnitOfWork = new Mock <IUnitOfWork>();

            var action = new DeleteRoomById(mockedRoomRepository.Object, mockedUnitOfWork.Object);

            // action
            var result = action.Invoke(guid);

            // assert
            Assert.True(result);
            mockedRoomRepository.Verify(r => r.Delete(It.IsAny <DataAccess.Models.Room>()), Times.Once());
            mockedUnitOfWork.Verify(r => r.Save(), Times.Once());
        }
        public RoomModel Invoke(Guid issuerUserId, List <Guid> users)
        {
            // Check if users wants to create a conversation with himself
            if (issuerUserId == Guid.Empty || users.Count <= 0 || users.Count > 8 || users.Any(x => x.Equals(issuerUserId) || x.Equals(Guid.Empty)) || users.Distinct().Count() != users.Count)
            {
                return(null);
            }

            var issuerUser = userRepository.GetById(issuerUserId);

            if (issuerUser == null)
            {
                return(null);
            }

            var privateConversationList = userRepository.GetPrivateConversationsTargets(issuerUserId).ToList();
            var listRoom = privateConversationList.Select(x => x.Room).Distinct();

            // Check if private conversation already exists
            foreach (var room in listRoom)
            {
                var userRoomsList = privateConversationList.Where(x => x.Room == room);
                var dict          = new Dictionary <DataAccess.Models.UserRoom, bool>();
                var searchedCount = 0;

                // FIXME: Bug when creating multiple users priv conversation room when there's priv conversation to one of selected user list
                foreach (var connection in userRoomsList)
                {
                    dict.Add(connection, false);

                    if (users.Any(x => x.Equals(connection.User.Id)))
                    {
                        searchedCount += 1;
                        Debug.WriteLine("######### Znaleziono istniejące połączenie #########");
                        Debug.WriteLine(connection.User.Name);
                        dict[connection] = true;
                    }
                }

                if (searchedCount == users.Count)
                {
                    Debug.WriteLine("######### Jest tyle samo znalezień co userów do których chce sie podpiąć #########");
                }

                if (dict.All(x => x.Value))
                {
                    return(null);
                }
            }

            // Create repository method for that?
            var userList = userRepository.GetAll().Where(x => users.Contains(x.Id)).ToList();

            var roomName = "";

            foreach (var item in userList)
            {
                roomName += item.Name + ", ";
            }

            roomName += issuerUser.Name;

            var userDomain = domainRepository.GetDomainByUserId(issuerUser.Id);

            var newRoom = new DataAccess.Models.Room
            {
                Name   = roomName,
                Owner  = AutoMapper.Mapper.Map <DataAccess.Models.User>(issuerUser),
                Domain = userDomain,
                IsPrivateConversation = true,
                IsPublic = false
            };

            roomRepository.Add(newRoom);

            var userRoom = new DataAccess.Models.UserRoom {
                User = issuerUser, Room = newRoom
            };

            userRoomRepository.Add(userRoom);

            foreach (var user in userList)
            {
                var userRoom2 = new DataAccess.Models.UserRoom {
                    User = user, Room = newRoom
                };
                userRoomRepository.Add(userRoom2);
            }

            var returnRoom = AutoMapper.Mapper.Map <RoomModel>(newRoom);

            _unitOfWork.Save();

            return(returnRoom);
        }
示例#10
0
        public void Invoke_ValidData_AddsRoomToDatabaseWithCorrectValues()
        {
            // prepare
            var domain = new DataAccess.Models.Domain
            {
                Name = "Test Domain"
            };

            var user = new DataAccess.Models.User
            {
                Name = "Test"
            };

            var tag = new TagModel
            {
                Name = "TestTag"
            };

            var roomData = new RoomModel
            {
                Tags = new List <TagModel> {
                    tag
                },
                Name          = "TestRoom",
                Topic         = "RoomTrool",
                Description   = "TroloRoom",
                Customization = 1,
                IsPublic      = true
            };

            DataAccess.Models.Room roomSaved = null;

            var mockedRoomRepository = new Mock <IRoomRepository>();

            mockedRoomRepository.Setup(r => r.Add(It.IsAny <DataAccess.Models.Room>()))
            .Callback <DataAccess.Models.Room>(u => roomSaved = u);

            var mockedUserRepo = new Mock <IUserRepository>();

            mockedUserRepo.Setup(x => x.GetById(It.IsAny <Guid>())).Returns(user);

            var mockedUserRoomRepository   = new Mock <IUserRoomRepository>();
            var mockedDomainRoomRepository = new Mock <IDomainRepository>();

            mockedDomainRoomRepository.Setup(x => x.GetById(It.IsAny <Guid>())).Returns(domain);
            var mockedUnitOfWork = new Mock <IUnitOfWork>();

            var action = new AddNewRoom(mockedRoomRepository.Object, mockedUserRepo.Object, mockedUserRoomRepository.Object, mockedDomainRoomRepository.Object, mockedUnitOfWork.Object);

            // action
            var actionResult = action.Invoke(roomData, Guid.NewGuid(), Guid.NewGuid());

            // assert
            Assert.Equal(Guid.Empty, actionResult);
            Assert.Equal("TestTag", roomSaved.Tags.ElementAt(0).Name);
            Assert.Equal("TestRoom", roomSaved.Name);
            Assert.Equal("RoomTrool", roomSaved.Topic);
            Assert.Equal("TroloRoom", roomSaved.Description);
            Assert.False(roomSaved.IsPrivateConversation);
            Assert.Equal(1, roomSaved.Customization);
            Assert.True(roomSaved.IsPublic);
            Assert.Equal("Test Domain", roomSaved.Domain.Name);
            Assert.Equal("Test", roomSaved.Owner.Name);
            mockedRoomRepository.Verify(r => r.Add(It.IsAny <DataAccess.Models.Room>()), Times.Once());
            mockedUserRoomRepository.Verify(r => r.Add(It.IsAny <DataAccess.Models.UserRoom>()), Times.Once());
            mockedUnitOfWork.Verify(r => r.Save(), Times.Once());
        }