public void RemoveByEntity_AddANewRoomAndRemoveTheAddedRoom_ReturnTrue()
        {
            //ARRANGE
            var options = new DbContextOptionsBuilder <FacilityContext>()
                          .UseInMemoryDatabase(databaseName: MethodBase.GetCurrentMethod().Name)
                          .Options;

            using var context = new FacilityContext(options);
            IRoomRepository  repository      = new RoomRepository(context);
            IFloorRepository floorRepository = new FloorRepository(context);

            var floor = new FloorTO {
                Number = 2
            };
            var addedFloor1 = floorRepository.Add(floor);

            context.SaveChanges();

            RoomTO room = new RoomTO {
                Name = new MultiLanguageString("Room1", "Room1", "Room1"), Floor = addedFloor1
            };
            var added = repository.Add(room);

            context.SaveChanges();
            //ACT
            var result = repository.Remove(added);

            context.SaveChanges();
            //ASSERT
            Assert.IsTrue(result);
        }
        public void AddRoom_CorrectRoomGiven_ReturnReturnRoomNotNull()
        {
            //Floor
            var floor1 = new FloorTO {
                Number = 2
            };
            var floor2 = new FloorTO {
                Number = -1
            };
            //Room
            RoomTO room1 = new RoomTO {
                Name = new MultiLanguageString("Room1", "Room1", "Room1"), Floor = floor1
            };
            RoomTO room2 = new RoomTO {
                Name = new MultiLanguageString("Room2", "Room2", "Room2"), Floor = floor1
            };
            RoomTO room3 = new RoomTO {
                Name = new MultiLanguageString("Room3", "Room3", "Room3"), Floor = floor2
            };
            //ARRANGE
            var mockUnitOfWork = new Mock <IFSUnitOfWork>();

            mockUnitOfWork.Setup(u => u.RoomRepository.Add(It.IsAny <RoomTO>()))
            .Returns(room1);
            var sut       = new FSAssistantRole(mockUnitOfWork.Object);
            var addedroom = sut.AddRoom(room1);

            //ASSERT
            mockUnitOfWork.Verify(u => u.RoomRepository.Add(It.IsAny <RoomTO>()), Times.Once);
            Assert.IsNotNull(addedroom);
        }
Пример #3
0
        public static RoomEF ToEF(this RoomTO Room)
        {
            if (Room is null)
            {
                throw new ArgumentNullException(nameof(Room));
            }

            var roomEF = new RoomEF
            {
                Id          = Room.Id,
                Floor       = Room.Floor.ToEF(),
                NameEnglish = Room.Name.English,
                NameFrench  = Room.Name.French,
                NameDutch   = Room.Name.Dutch,
                Archived    = Room.Archived,
            };

            // Association des Id de Room et ComponentTypes via RoomComponent (table de relation)
            roomEF.RoomComponents = Room.ComponentTypes?.Select(x => new RoomComponentEF
            {
                Room            = roomEF,
                RoomId          = Room.Id,
                ComponentType   = x.ToEF(),
                ComponentTypeId = x.Id
            }).ToList();
            return(roomEF);
        }
Пример #4
0
        public void Add_ReturnRoomTONotNull()
        {
            //ARRANGE
            var options = new DbContextOptionsBuilder <FacilityContext>()
                          .UseInMemoryDatabase(databaseName: MethodBase.GetCurrentMethod().Name)
                          .Options;

            using var context = new FacilityContext(options);
            IRoomRepository  repository      = new RoomRepository(context);
            IFloorRepository floorRepository = new FloorRepository(context);

            var floor = new FloorTO {
                Number = 2
            };
            var addedFloor1 = floorRepository.Add(floor);

            context.SaveChanges();

            RoomTO room = new RoomTO {
                Name = new MultiLanguageString("Room1", "Room1", "Room1"), Floor = addedFloor1
            };
            //ACT
            var result = repository.Add(room);

            context.SaveChanges();
            //ASSERT
            Assert.IsNotNull(result);
            Assert.AreEqual(result.Name.French, "Room1");
        }
Пример #5
0
 public static Room ToDomain(this RoomTO RoomTO)
 {
     return(new Room(RoomTO.Name, RoomTO.Floor.ToDomain())
     {
         Id = RoomTO.Id
     });
 }
        public void RemoveById_AddANewIncidentThenRemoveIt_ReturnTrue()
        {
            //ARRANGE
            var options = new DbContextOptionsBuilder <FacilityContext>()
                          .UseInMemoryDatabase(databaseName: MethodBase.GetCurrentMethod().Name)
                          .Options;

            using var context = new FacilityContext(options);
            IIncidentRepository      incidentRepository      = new IncidentRepository(context);
            IRoomRepository          roomRepository          = new RoomRepository(context);
            IFloorRepository         floorRepository         = new FloorRepository(context);
            IComponentTypeRepository componentTypeRepository = new ComponentTypeRepository(context);
            IIssueRepository         issueRepository         = new IssueRepository(context);
            //Room(and it's floor)
            var floor = new FloorTO {
                Number = 2
            };
            var addedFloor1 = floorRepository.Add(floor);

            context.SaveChanges();
            RoomTO room = new RoomTO {
                Name = new MultiLanguageString("Room1", "Room1", "Room1"), Floor = addedFloor1
            };
            var addedRoom = roomRepository.Add(room);

            context.SaveChanges();
            //Component
            var componentType = new ComponentTypeTO {
                Archived = false, Name = new MultiLanguageString("Name1En", "Name1Fr", "Name1Nl")
            };
            var addedComponentType = componentTypeRepository.Add(componentType);

            context.SaveChanges();
            //Issue
            var issue = new IssueTO {
                Description = "prout", Name = new MultiLanguageString("Issue1EN", "Issue1FR", "Issue1NL"), ComponentType = addedComponentType
            };
            var addedIssue = issueRepository.Add(issue);

            context.SaveChanges();
            //Incident
            var incident = new IncidentTO
            {
                Description = "No coffee",
                Issue       = addedIssue,
                Status      = IncidentStatus.Waiting,
                SubmitDate  = DateTime.Now,
                UserId      = 1,
                Room        = addedRoom
            };
            var addedIncident = incidentRepository.Add(incident);

            context.SaveChanges();
            //ACT
            var result = incidentRepository.Remove(addedIncident.Id);

            context.SaveChanges();
            //ASSERT
            Assert.IsTrue(result);
        }
Пример #7
0
        public void CreateIncident_InvalidStatus_ThrowsException()
        {
            // Arrange
            var floor = new FloorTO {
                Number = 2
            };
            var room = new RoomTO {
                Name = new MultiLanguageString("Room1", "Room1", "Room1"), Floor = floor
            };
            var componentType = new ComponentTypeTO {
                Archived = false, Name = new MultiLanguageString("Name1EN", "Name1FR", "Name1NL")
            };
            var issue = new IssueTO {
                Description = "Broken thing", Name = new MultiLanguageString("Issue1EN", "Issue1FR", "Issue1NL"), ComponentType = componentType
            };
            var incident = new IncidentTO
            {
                Description = "This thing is broken !",
                Room        = room,
                Issue       = issue,
                Status      = IncidentStatus.Accepted,
                SubmitDate  = DateTime.Now,
                UserId      = 1,
            };

            var mockUnitOfWork = new Mock <IFSUnitOfWork>();

            mockUnitOfWork.Setup(uow => uow.IncidentRepository.Add(It.IsAny <IncidentTO>()));
            var sut = new FSAttendeeRole(mockUnitOfWork.Object);

            // Act & Assert
            Assert.ThrowsException <LoggedException>(() => sut.CreateIncident(incident));
            mockUnitOfWork.Verify(u => u.CommentRepository.Add(It.IsAny <CommentTO>()), Times.Never);
        }
Пример #8
0
        public void Update_AddARoopmAndChangeItsName_ReturnUpdatedRoom()
        {
            var options = new DbContextOptionsBuilder <FacilityContext>()
                          .UseInMemoryDatabase(databaseName: MethodBase.GetCurrentMethod().Name)
                          .Options;

            using var context = new FacilityContext(options);
            IRoomRepository  repository      = new RoomRepository(context);
            IFloorRepository floorRepository = new FloorRepository(context);

            var floor = new FloorTO {
                Number = 2
            };
            var addedFloor1 = floorRepository.Add(floor);

            context.SaveChanges();

            RoomTO room = new RoomTO {
                Name = new MultiLanguageString("Room1", "Room1", "Room1"), Floor = addedFloor1
            };
            var added = repository.Add(room);

            context.SaveChanges();
            added.Name = new MultiLanguageString("New Room1", "New Room1", "New Room1");
            var updated = repository.Update(added);

            Assert.AreEqual("New Room1", updated.Name.English);
        }
Пример #9
0
        public RoomTO Update(RoomTO Entity)
        {
            if (Entity is null)
            {
                throw new ArgumentNullException(nameof(Entity));
            }

            var attachedRoom = facilityContext.Rooms.FirstOrDefault(x => x.Id == Entity.Id && x.Archived != true);

            if (attachedRoom != default)
            {
                attachedRoom.UpdateFromDetached(Entity.ToEF());
            }

            if (!facilityContext.Rooms.Any(x => x.Id == Entity.Id))
            {
                throw new KeyNotFoundException("No room found !");
            }

            var tracking = facilityContext.Rooms.Update(attachedRoom);

            tracking.State = EntityState.Detached;
            //var entity = facilityContext.Rooms.Update(attachedRoom).Entity.ToTransfertObject();
            //facilityContext.SaveChanges();
            return(tracking.Entity.ToTransfertObject());
        }
        public void GetByID_AddNewRoomAndRetrieveTheAddedRoom_ReturnTheCoorectRoom()
        {
            var options = new DbContextOptionsBuilder <FacilityContext>()
                          .UseInMemoryDatabase(databaseName: MethodBase.GetCurrentMethod().Name)
                          .Options;

            using var context = new FacilityContext(options);
            IRoomRepository  repository      = new RoomRepository(context);
            IFloorRepository floorRepository = new FloorRepository(context);

            var floor = new FloorTO {
                Number = 2
            };
            var addedFloor1 = floorRepository.Add(floor);

            context.SaveChanges();

            RoomTO room = new RoomTO {
                Name = new MultiLanguageString("Room1", "Room1", "Room1"), Floor = addedFloor1
            };
            var result = repository.Add(room);

            context.SaveChanges();

            var retrievedRoom = repository.GetById(result.Id);

            Assert.IsNotNull(retrievedRoom);
            Assert.AreEqual(retrievedRoom.ToString(), result.ToString());
        }
        public void GetComponentTypeByRoom_Successfull()
        {
            var options = new DbContextOptionsBuilder <FacilityContext>()
                          .UseInMemoryDatabase(databaseName: MethodBase.GetCurrentMethod().Name)
                          .Options;

            using var context = new FacilityContext(options);
            IRoomRepository          roomRepository          = new RoomRepository(context);
            IFloorRepository         floorRepository         = new FloorRepository(context);
            IComponentTypeRepository componentTypeRepository = new ComponentTypeRepository(context);

            //Room(and it's floor)
            var floor = new FloorTO {
                Number = 2
            };
            var addedFloor1 = floorRepository.Add(floor);

            context.SaveChanges();
            //Component
            var componentType1 = new ComponentTypeTO {
                Archived = false, Name = new MultiLanguageString("Name1En", "Name1Fr", "Name1Nl")
            };
            var componentType2 = new ComponentTypeTO {
                Archived = false, Name = new MultiLanguageString("Name2En", "Name2Fr", "Name2Nl")
            };
            var addedComponentType1 = componentTypeRepository.Add(componentType1);
            var addedComponentType2 = componentTypeRepository.Add(componentType2);

            context.SaveChanges();
            //Floor
            var componentTypes1 = new List <ComponentTypeTO>()
            {
                componentType1, componentType2
            };
            var componentTypes2 = new List <ComponentTypeTO>()
            {
                componentType1
            };

            RoomTO room1 = new RoomTO {
                Name = new MultiLanguageString("Room1", "Room1", "Room1"), Floor = addedFloor1, ComponentTypes = componentTypes1
            };
            RoomTO room2 = new RoomTO {
                Name = new MultiLanguageString("Room1", "Room1", "Room1"), Floor = addedFloor1, ComponentTypes = componentTypes2
            };
            var addedRoom1 = roomRepository.Add(room1);
            var addedRoom2 = roomRepository.Add(room2);

            context.SaveChanges();

            //ACT
            var result  = componentTypeRepository.GetComponentTypesByRoom(addedRoom1.Id);
            var result2 = componentTypeRepository.GetComponentTypesByRoom(addedRoom2.Id);

            //ASSERT
            Assert.AreEqual(2, result.Count());
            Assert.AreEqual(1, result2.Count());
        }
Пример #12
0
        public RoomTO AddRoom(RoomTO room)
        {
            if (room is null)
            {
                throw new ArgumentNullException(nameof(room));
            }

            return(unitOfWork.RoomRepository.Add(room));
        }
Пример #13
0
        public RoomTO Add(RoomTO Entity)
        {
            if (Entity is null)
            {
                throw new ArgumentNullException(nameof(Entity));
            }

            var roomEf = Entity.ToEF();

            roomEf.Floor = facilityContext.Floors.First(x => x.Id == Entity.Floor.Id && x.Archived != true);

            return(facilityContext.Rooms.Add(roomEf).Entity.ToTransfertObject());
        }
Пример #14
0
        public List <IncidentTO> GetTestsListOfIncidents()
        {
            //Floor
            var floor1 = new FloorTO {
                Number = 2
            };
            var floor2 = new FloorTO {
                Number = -1
            };
            //Room
            RoomTO room1 = new RoomTO {
                Name = new MultiLanguageString("Room1", "Room1", "Room1"), Floor = floor1
            };
            RoomTO room2 = new RoomTO {
                Name = new MultiLanguageString("Room2", "Room2", "Room2"), Floor = floor1
            };
            RoomTO room3 = new RoomTO {
                Name = new MultiLanguageString("Room3", "Room3", "Room3"), Floor = floor2
            };
            //Component
            var componentType1 = new ComponentTypeTO {
                Archived = false, Name = new MultiLanguageString("Name1En", "Name1Fr", "Name1Nl")
            };
            var componentType2 = new ComponentTypeTO {
                Archived = false, Name = new MultiLanguageString("Name2En", "Name2Fr", "Name2Nl")
            };
            //Issue
            var issue1 = new IssueTO {
                Description = "Plus de café", Name = new MultiLanguageString("Issue1EN", "Issue1FR", "Issue1NL"), ComponentType = componentType1
            };
            var issue2 = new IssueTO {
                Description = "Fuite d'eau", Name = new MultiLanguageString("Issue2EN", "Issue2FR", "Issue2NL"), ComponentType = componentType2
            };
            var issue3 = new IssueTO {
                Description = "Plus de PQ", Name = new MultiLanguageString("Issue3EN", "Issue3FR", "Issue3NL"), ComponentType = componentType2
            };
            //Incidents
            var incident1 = new IncidentTO {
                Room = room1, Issue = issue1, Status = IncidentStatus.Accepted
            };
            var incident2 = new IncidentTO {
                Room = room2, Issue = issue2, Status = IncidentStatus.Resolved
            };
            var incident3 = new IncidentTO {
                Room = room3, Issue = issue2, Status = IncidentStatus.Accepted
            };

            return(new List <IncidentTO> {
                incident1, incident2, incident3
            });
        }
Пример #15
0
        public RoomTO UpdateRoom(RoomTO roomToUpdate)
        {
            if (roomToUpdate is null)
            {
                throw new ArgumentNullException("The Room object cannot be null !");
            }

            if (roomToUpdate.Id <= 0)
            {
                throw new LoggedException("The Room object cannot be updated without it's ID");
            }

            return(unitOfWork.RoomRepository.Update(roomToUpdate));
        }
Пример #16
0
        public void Update_ThrowException_WhenUnexistingRoomIsSupplied()
        {
            var options = new DbContextOptionsBuilder <FacilityContext>()
                          .UseInMemoryDatabase(databaseName: MethodBase.GetCurrentMethod().Name)
                          .Options;

            using var context = new FacilityContext(options);
            IRoomRepository repository = new RoomRepository(context);
            var             room       = new RoomTO {
                Id = 999
            };

            Assert.ThrowsException <KeyNotFoundException>(() => repository.Update(room));
        }
Пример #17
0
        public static RoomEF ToEF(this RoomTO Room)
        {
            if (Room is null)
            {
                throw new ArgumentNullException(nameof(Room));
            }

            return(new RoomEF()
            {
                Id = Room.Id,
                NameEnglish = Room.Name.English,
                NameFrench = Room.Name.French,
                NameDutch = Room.Name.Dutch,
            });
        }
Пример #18
0
        public static Room ToDomain(this RoomTO RoomTO)
        {
            if (RoomTO is null)
            {
                throw new NullRoomException(nameof(RoomTO));
            }

            return(new Room
            {
                Id = RoomTO.Id,
                Archived = RoomTO.Archived,
                Floor = RoomTO.Floor.ToDomain(),
                Name = RoomTO.Name,
                ComponentTypes = RoomTO.ComponentTypes?.Select(x => x.ToDomain()).ToList(),
            });
        }
Пример #19
0
        public void GetRoomsByFloors_ReturnCorrectNumberOfCorrespondingRooms()
        {
            //ARRANGE
            var options = new DbContextOptionsBuilder <FacilityContext>()
                          .UseInMemoryDatabase(databaseName: MethodBase.GetCurrentMethod().Name)
                          .Options;

            using var context = new FacilityContext(options);
            IRoomRepository  roomRepository  = new RoomRepository(context);
            IFloorRepository floorRepository = new FloorRepository(context);

            var floor = new FloorTO {
                Number = 2
            };
            var floor2 = new FloorTO {
                Number = -1
            };
            var addedFloor1 = floorRepository.Add(floor);
            var addedFloor2 = floorRepository.Add(floor2);

            context.SaveChanges();

            RoomTO room1 = new RoomTO {
                Name = new MultiLanguageString("Room1", "Room1", "Room1"), Floor = addedFloor1
            };
            RoomTO room2 = new RoomTO {
                Name = new MultiLanguageString("Room2", "Room2", "Room2"), Floor = addedFloor1
            };
            RoomTO room3 = new RoomTO {
                Name = new MultiLanguageString("Room3", "Room3", "Room3"), Floor = addedFloor2
            };

            roomRepository.Add(room1);
            roomRepository.Add(room2);
            roomRepository.Add(room3);
            context.SaveChanges();

            var result1 = roomRepository.GetRoomsByFloor(addedFloor1.Id);
            var result2 = roomRepository.GetRoomsByFloor(addedFloor2.Id);

            Assert.IsNotNull(result1);
            Assert.IsNotNull(result2);
            Assert.AreEqual(2, result1.Count);
            Assert.AreEqual(1, result2.Count);
        }
        public void AddComment_ValidComment_ReturnsCommentNotNull()
        {
            // Arrange
            var floor = new FloorTO {
                Number = 2
            };
            var room = new RoomTO {
                Name = new MultiLanguageString("Room1", "Room1", "Room1"), Floor = floor
            };
            var componentType = new ComponentTypeTO {
                Archived = false, Name = new MultiLanguageString("Name1EN", "Name1FR", "Name1NL")
            };
            var issue = new IssueTO {
                Description = "Broken thing", Name = new MultiLanguageString("Issue1EN", "Issue1FR", "Issue1NL"), ComponentType = componentType
            };
            var incident = new IncidentTO
            {
                Description = "This thing is broken !",
                Room        = room,
                Issue       = issue,
                Status      = IncidentStatus.Waiting,
                SubmitDate  = DateTime.Now,
                UserId      = 1,
            };
            var comment = new CommentTO
            {
                Incident   = incident,
                Message    = "I got in touch with the right people, it'll get fixed soon!",
                SubmitDate = DateTime.Now,
                UserId     = 1
            };

            var mockUnitOfWork = new Mock <IFSUnitOfWork>();

            mockUnitOfWork.Setup(uow => uow.CommentRepository.Add(It.IsAny <CommentTO>())).Returns(comment);
            var sut = new FSAssistantRole(mockUnitOfWork.Object);

            // Act
            var addedComment = sut.AddComment(comment);

            // Assert
            Assert.IsNotNull(addedComment);
            mockUnitOfWork.Verify(u => u.CommentRepository.Add(It.IsAny <CommentTO>()), Times.Once);
        }
        public void GetAll_AddThreeRooms_ReturnCorrectNumberOfRooms()
        {
            //ARRANGE
            var options = new DbContextOptionsBuilder <FacilityContext>()
                          .UseInMemoryDatabase(databaseName: MethodBase.GetCurrentMethod().Name)
                          .Options;

            using var context = new FacilityContext(options);
            IRoomRepository  repository      = new RoomRepository(context);
            IFloorRepository floorRepository = new FloorRepository(context);

            var floor = new FloorTO {
                Number = 2
            };
            var floor2 = new FloorTO {
                Number = -1
            };
            var addedFloor1 = floorRepository.Add(floor);
            var addedFloor2 = floorRepository.Add(floor2);

            context.SaveChanges();

            RoomTO room1 = new RoomTO {
                Name = new MultiLanguageString("Room1", "Room1", "Room1"), Floor = addedFloor1
            };
            RoomTO room2 = new RoomTO {
                Name = new MultiLanguageString("Room2", "Room2", "Room2"), Floor = addedFloor1
            };
            RoomTO room3 = new RoomTO {
                Name = new MultiLanguageString("Room3", "Room3", "Room3"), Floor = addedFloor2
            };

            repository.Add(room1);
            context.SaveChanges();
            repository.Add(room2);
            context.SaveChanges();
            repository.Add(room3);
            context.SaveChanges();
            //ACT
            var rooms = repository.GetAll();

            //ASSERT
            Assert.AreEqual(3, rooms.Count());
        }
        public void RemoveRoom_ReturnTrue()
        {
            //Floor
            var floor1 = new FloorTO {
                Number = 2
            };
            var floor2 = new FloorTO {
                Number = -1
            };
            //Room
            var rooms = new List <RoomTO>
            {
                new RoomTO {
                    Id = 1, Archived = false, Name = new MultiLanguageString("Room1", "Room1", "Room1"), Floor = floor1
                },
                new RoomTO {
                    Id = 2, Archived = false, Name = new MultiLanguageString("Room2", "Room2", "Room2"), Floor = floor1
                },
                new RoomTO {
                    Id = 3, Archived = false, Name = new MultiLanguageString("Room3", "Room3", "Room3"), Floor = floor2
                }
            };

            var mockUnitOfWork = new Mock <IFSUnitOfWork>();

            mockUnitOfWork.Setup(u => u.RoomRepository.Update(It.IsAny <RoomTO>()))
            .Returns(new RoomTO {
                Id = 1, Name = new MultiLanguageString("Room1", "Room1", "Room1"), Floor = floor1
            });
            mockUnitOfWork.Setup(u => u.RoomRepository.GetAll()).Returns(rooms);

            var sut  = new FSAssistantRole(mockUnitOfWork.Object);
            var room = new RoomTO {
                Id = 1, Name = new MultiLanguageString("Room1", "Room1", "Room1"), Floor = floor1
            };
            //ACT
            var result = sut.RemoveRoom(1);

            //ASSERT
            mockUnitOfWork.Verify(u => u.RoomRepository.Update(It.IsAny <RoomTO>()), Times.Once);
            mockUnitOfWork.Verify(u => u.RoomRepository.GetById(It.IsAny <int>()), Times.Once);
            Assert.IsTrue(result);
        }
Пример #23
0
        public bool Remove(RoomTO entity)
        {
            if (entity is null)
            {
                throw new ArgumentNullException(nameof(entity));
            }

            var entityEF = facilityContext.Rooms.FirstOrDefault(x => x.Id == entity.Id && !x.Archived);

            if (entityEF is null)
            {
                throw new KeyNotFoundException($"No room found with ID={entity.Id}");
            }

            entityEF.Archived = true;
            var tracking = facilityContext.Rooms.Update(entityEF);

            return(tracking.Entity.Archived);
        }
Пример #24
0
        public void CreateIncident_ValidIncident_ReturnsIncidentNotNull()
        {
            // Arrange
            var floor = new FloorTO {
                Number = 2
            };
            var room = new RoomTO {
                Name = new MultiLanguageString("Room1", "Room1", "Room1"), Floor = floor
            };
            var componentType = new ComponentTypeTO {
                Archived = false, Name = new MultiLanguageString("Name1EN", "Name1FR", "Name1NL")
            };
            var issue = new IssueTO {
                Description = "Broken thing", Name = new MultiLanguageString("Issue1EN", "Issue1FR", "Issue1NL"), ComponentType = componentType
            };
            var incident = new IncidentTO
            {
                Description = "This thing is broken !",
                Room        = room,
                Issue       = issue,
                Status      = IncidentStatus.Waiting,
                SubmitDate  = DateTime.Now,
                UserId      = 1,
            };

            var mockUnitOfWork = new Mock <IFSUnitOfWork>();

            mockUnitOfWork.Setup(uow => uow.IncidentRepository.Add(It.IsAny <IncidentTO>())).Returns((IncidentTO incident) =>
            {
                incident.Id = 1;
                return(incident);
            });
            var sut = new FSAttendeeRole(mockUnitOfWork.Object);

            // Act
            var result = sut.CreateIncident(incident);

            // Assert
            Assert.IsTrue(result);
            mockUnitOfWork.Verify(u => u.IncidentRepository.Add(It.IsAny <IncidentTO>()), Times.Once);
        }
Пример #25
0
        public void UpdateRoom_ReturnUpdatedRoom()
        {
            //Floor
            var floor1 = new FloorTO {
                Number = 2
            };
            var floor2 = new FloorTO {
                Number = -1
            };
            //Room
            var rooms = new List <RoomTO>
            {
                new RoomTO {
                    Id = 1, Archived = false, Name = new MultiLanguageString("Room1", "Room1", "Room1"), Floor = floor1
                },
                new RoomTO {
                    Id = 2, Archived = false, Name = new MultiLanguageString("Room2", "Room2", "Room2"), Floor = floor1
                },
                new RoomTO {
                    Id = 3, Archived = false, Name = new MultiLanguageString("Room3", "Room3", "Room3"), Floor = floor2
                }
            };
            //ARRANGE
            var mockUnitOfWork = new Mock <IFSUnitOfWork>();

            mockUnitOfWork.Setup(u => u.RoomRepository.Update(It.IsAny <RoomTO>()))
            .Returns(new RoomTO {
                Id = 1, Archived = false, Name = new MultiLanguageString("Room1", "Room1", "Room1"), Floor = floor1
            });
            var sut  = new FSAssistantRole(mockUnitOfWork.Object);
            var room = new RoomTO {
                Id = 1, Archived = false, Name = new MultiLanguageString("Room1", "Room1", "Room1"), Floor = floor1
            };
            //ACT
            var updatedRoom = sut.UpdateRoom(room);

            //ASSERT
            mockUnitOfWork.Verify(u => u.RoomRepository.Update(It.IsAny <RoomTO>()), Times.Once);
            Assert.IsNotNull(updatedRoom);
        }
Пример #26
0
        public void CreateIncident_IncompleteIncident_ThrowsException()
        {
            // Arrange
            var incident1 = new IncidentTO(); // Missing Issue & Room

            var componentType = new ComponentTypeTO {
                Archived = false, Name = new MultiLanguageString("Name1EN", "Name1FR", "Name1NL")
            };
            var issue = new IssueTO {
                Description = "Broken thing", Name = new MultiLanguageString("Issue1EN", "Issue1FR", "Issue1NL"), ComponentType = componentType
            };
            var incident2 = new IncidentTO {
                Issue = issue
            };                                                // Missing Room

            var floor = new FloorTO {
                Number = 2
            };
            var room = new RoomTO {
                Name = new MultiLanguageString("Room1", "Room1", "Room1"), Floor = floor
            };
            var incident3 = new IncidentTO {
                Room = room
            };                                              // Missing Issue

            var mockUnitOfWork = new Mock <IFSUnitOfWork>();

            mockUnitOfWork.Setup(uow => uow.IncidentRepository.Add(It.IsAny <IncidentTO>()));
            var sut = new FSAttendeeRole(mockUnitOfWork.Object);

            // Act & Assert
            Assert.ThrowsException <LoggedException>(() => sut.CreateIncident(incident1));
            Assert.ThrowsException <LoggedException>(() => sut.CreateIncident(incident2));
            Assert.ThrowsException <LoggedException>(() => sut.CreateIncident(incident3));
            mockUnitOfWork.Verify(u => u.CommentRepository.Add(It.IsAny <CommentTO>()), Times.Never);
        }
Пример #27
0
 public bool Remove(RoomTO entity)
 {
     throw new System.NotImplementedException();
 }
        public void GetCommentsByIncidentId_AddMultipleComments_ReturnRelevantComments()
        {
            // Arrange
            var options = new DbContextOptionsBuilder <FacilityContext>()
                          .UseInMemoryDatabase(databaseName: MethodBase.GetCurrentMethod().Name)
                          .Options;

            using var context = new FacilityContext(options);
            ICommentRepository       commentRepository       = new CommentRepository(context);
            IIncidentRepository      incidentRepository      = new IncidentRepository(context);
            IRoomRepository          roomRepository          = new RoomRepository(context);
            IFloorRepository         floorRepository         = new FloorRepository(context);
            IComponentTypeRepository componentTypeRepository = new ComponentTypeRepository(context);
            IIssueRepository         issueRepository         = new IssueRepository(context);

            var floor = new FloorTO {
                Number = 2
            };
            var addedFloor = floorRepository.Add(floor);

            context.SaveChanges();

            RoomTO room = new RoomTO {
                Name = new MultiLanguageString("Room1", "Room1", "Room1"), Floor = addedFloor
            };
            var addedRoom = roomRepository.Add(room);

            context.SaveChanges();

            var componentType = new ComponentTypeTO {
                Archived = false, Name = new MultiLanguageString("Name1EN", "Name1FR", "Name1NL")
            };
            var addedComponentType = componentTypeRepository.Add(componentType);

            context.SaveChanges();

            var issue = new IssueTO {
                Description = "Broken thing", Name = new MultiLanguageString("Issue1EN", "Issue1FR", "Issue1NL"), ComponentType = addedComponentType
            };
            var addedIssue = issueRepository.Add(issue);

            context.SaveChanges();

            var incident1 = new IncidentTO
            {
                Description = "This thing is broken!",
                Room        = addedRoom,
                Issue       = addedIssue,
                Status      = IncidentStatus.Waiting,
                SubmitDate  = DateTime.Now,
                UserId      = 1,
            };
            var incident2 = new IncidentTO
            {
                Description = "This thing is still broken after a week!",
                Room        = addedRoom,
                Issue       = addedIssue,
                Status      = IncidentStatus.Waiting,
                SubmitDate  = DateTime.Now.AddDays(7),
                UserId      = 1,
            };
            var addedIncident1 = incidentRepository.Add(incident1);
            var addedIncident2 = incidentRepository.Add(incident2);

            context.SaveChanges();

            var comment1 = new CommentTO
            {
                Incident   = addedIncident1,
                Message    = "I got in touch with the right people, it'll get fixed soon!",
                SubmitDate = DateTime.Now,
                UserId     = 2
            };
            var comment2 = new CommentTO
            {
                Incident   = addedIncident1,
                Message    = "New ETA is Monday morning.",
                SubmitDate = DateTime.Now.AddDays(1),
                UserId     = 2
            };
            var comment3 = new CommentTO
            {
                Incident   = addedIncident2,
                Message    = "It should be fixed very soon, sorry for the inconvenience!",
                SubmitDate = DateTime.Now.AddDays(8),
                UserId     = 2
            };

            commentRepository.Add(comment1);
            commentRepository.Add(comment2);
            commentRepository.Add(comment3);
            context.SaveChanges();

            // Act
            var result1 = commentRepository.GetCommentsByIncident(addedIncident1.Id);
            var result2 = commentRepository.GetCommentsByIncident(addedIncident2.Id);

            // Assert
            Assert.IsNotNull(result1);
            Assert.IsNotNull(result2);
            Assert.AreEqual(2, result1.Count);
            Assert.AreEqual(1, result2.Count);
        }
Пример #29
0
 public RoomTO Update(RoomTO Entity)
 {
     throw new System.NotImplementedException();
 }
Пример #30
0
        public void GetUserIncidents_AddThreeIncidentsWithSameUserId_ThenRetrieveThem_ReturnsCorrectNumberOfIncidents()
        {
            // Arrange
            var userId = 1;
            var floor  = new FloorTO {
                Number = 2
            };
            var room = new RoomTO {
                Name = new MultiLanguageString("Room1", "Room1", "Room1"), Floor = floor
            };
            var componentType = new ComponentTypeTO {
                Archived = false, Name = new MultiLanguageString("Name1EN", "Name1FR", "Name1NL")
            };
            var issue = new IssueTO {
                Description = "Broken thing", Name = new MultiLanguageString("Issue1EN", "Issue1FR", "Issue1NL"), ComponentType = componentType
            };
            var incident1 = new IncidentTO
            {
                Description = "This thing is broken !",
                Room        = room,
                Issue       = issue,
                Status      = IncidentStatus.Waiting,
                SubmitDate  = DateTime.Now,
                UserId      = userId,
            };
            var incident2 = new IncidentTO
            {
                Description = "This thing is still broken !",
                Room        = room,
                Issue       = issue,
                Status      = IncidentStatus.Waiting,
                SubmitDate  = DateTime.Now.AddDays(7),
                UserId      = userId,
            };
            var incident3 = new IncidentTO
            {
                Description = "This hasn't been fixed yet ?!",
                Room        = room,
                Issue       = issue,
                Status      = IncidentStatus.Waiting,
                SubmitDate  = DateTime.Now.AddDays(14),
                UserId      = userId,
            };

            var incidents = new List <IncidentTO> {
                incident1, incident2, incident3
            };

            var mockUnitOfWork = new Mock <IFSUnitOfWork>();

            mockUnitOfWork.Setup(uow => uow.IncidentRepository.Add(It.IsAny <IncidentTO>())).Returns(new IncidentTO());
            mockUnitOfWork.Setup(uow => uow.IncidentRepository.GetIncidentsByUserId(It.Is <int>(i => i > 0))).Returns(incidents);
            var sut = new FSAttendeeRole(mockUnitOfWork.Object);

            // Act
            sut.CreateIncident(incident1);
            sut.CreateIncident(incident2);
            sut.CreateIncident(incident3);
            var userIncidents = sut.GetUserIncidents(userId);

            // Assert
            mockUnitOfWork.Verify(u => u.IncidentRepository.Add(It.IsAny <IncidentTO>()), Times.Exactly(3));
            Assert.AreEqual(3, userIncidents.Count());
        }