public void IsDeletingSelectedCell()
        {
            var options = new DbContextOptionsBuilder <AppDbContext>()
                          .UseInMemoryDatabase(databaseName: "Add_writes_to_Delete_Cell_database")
                          .Options;
            var appDbContext = new AppDbContext(options);
            var user         = new ClaimsPrincipal(new ClaimsIdentity(new Claim[]
            {
                new Claim(ClaimTypes.Name, "abcd"),
            }));

            appDbContext.UserPermissions.Add(new UserPermission
            {
                Id       = 1,
                UserName = "******",
                IdPrison = 1,
                Prison   = new Prison
                {
                    Id         = 1,
                    PrisonName = "prison_test"
                }
            });
            appDbContext.SaveChanges();
            var loggerRepository = new LoggerRepository(appDbContext);
            var loggerService    = new LoggerService(loggerRepository);

            var cellRepository = new CellRepository(appDbContext);
            var cellService    = new CellService(cellRepository);

            var cellController = new PCellsController(
                cellService,
                _mapper,
                loggerService)
            {
                ControllerContext = new ControllerContext {
                    HttpContext = new DefaultHttpContext {
                        User = user
                    }
                }
            };

            appDbContext.Cells.Add(new Cell
            {
                Id         = 1,
                Beds       = 2,
                IdPrison   = 1,
                IdCellType = 1,
                Prison     = new Prison(),
                CellType   = new CellType(),
                Prisoner   = new List <Prisoner>()
            });
            appDbContext.SaveChanges();


            Assert.AreEqual(appDbContext.Cells.Count(), 1);
            cellController.DeleteCell(1);
            Assert.AreEqual(appDbContext.Cells.Count(), 0);
        }
        public void AddCellUnitTests()
        {
            // Arrange
            var options = new DbContextOptionsBuilder <AppDbContext>()
                          .UseInMemoryDatabase(databaseName: "database_to_add_cellUT")
                          .Options;

            var appDbContext  = new AppDbContext(options);
            var mappingConfig = new MapperConfiguration(mc =>
            {
                mc.AddProfile(new ModelToResourceProfile());
            });
            IMapper mapper = mappingConfig.CreateMapper();
            var     user   = new ClaimsPrincipal(new ClaimsIdentity(new Claim[]
            {
                new Claim(ClaimTypes.Name, "abcd"),
            }));

            appDbContext.UserPermissions.Add(new UserPermission
            {
                Id       = 1,
                UserName = "******",
                IdPrison = 1,
                Prison   = new Prison
                {
                    Id         = 1,
                    PrisonName = "prison_test"
                }
            });
            appDbContext.SaveChanges();
            var loggerRepository = new LoggerRepository(appDbContext);
            var loggerService    = new LoggerService(loggerRepository);

            var cellRepository = new CellRepository(appDbContext);
            var cellService    = new CellService(cellRepository);

            var pCellsController = new PCellsController(
                cellService,
                mapper,
                loggerService)
            {
                ControllerContext = new ControllerContext {
                    HttpContext = new DefaultHttpContext {
                        User = user
                    }
                }
            };

            // Act
            var result = pCellsController.AddCell(new CellDTO());

            // Assert
            Assert.IsInstanceOf <ActionResult <CellVM> >(result);
        }
        public void IsCellAdded()
        {
            var options = new DbContextOptionsBuilder <AppDbContext>()
                          .UseInMemoryDatabase(databaseName: "database_to_add_cell")
                          .Options;

            var appDbContext = new AppDbContext(options);

            var user = new ClaimsPrincipal(new ClaimsIdentity(new Claim[]
            {
                new Claim(ClaimTypes.Name, "abcd"),
            }));

            appDbContext.UserPermissions.Add(new UserPermission
            {
                Id       = 1,
                UserName = "******",
                IdPrison = 1,
                Prison   = new Prison
                {
                    Id         = 1,
                    PrisonName = "prison_test"
                }
            });
            appDbContext.SaveChanges();
            var loggerRepository = new LoggerRepository(appDbContext);
            var loggerService    = new LoggerService(loggerRepository);

            var cellRepository = new CellRepository(appDbContext);
            var cellService    = new CellService(cellRepository);

            var cellController = new PCellsController(
                cellService,
                _mapper,
                loggerService)
            {
                ControllerContext = new ControllerContext {
                    HttpContext = new DefaultHttpContext {
                        User = user
                    }
                }
            };


            var cell1 = new CellDTO
            {
                Beds       = 1,
                IdCellType = 1,
            };

            Assert.IsFalse(appDbContext.Cells.Any(), "Cell was added before it should be");
            cellController.AddCell(cell1);
            Assert.AreEqual(1, appDbContext.Cells.Count(), "amount of cells is wrong");
        }
        PCellsController CreatePCellsController()
        {
            var user = new ClaimsPrincipal(new ClaimsIdentity(new Claim[]
            {
                new Claim(ClaimTypes.Name, "abcd")
            }));
            var pCellsController = new PCellsController(
                _mockCellService.Object,
                _mockMapper.Object,
                _mockLoggerService.Object);

            pCellsController.ControllerContext             = new ControllerContext();
            pCellsController.ControllerContext.HttpContext = new DefaultHttpContext
            {
                User = user
            };
            return(pCellsController);
        }
        public void IsSelectingRight()
        {
            var options = new DbContextOptionsBuilder <AppDbContext>()
                          .UseInMemoryDatabase(databaseName: "Add_writes_to_select_cell_database")
                          .Options;

            var appDbContext = new AppDbContext(options);

            var loggerRepository = new LoggerRepository(appDbContext);
            var loggerService    = new LoggerService(loggerRepository);

            var cellRepository = new CellRepository(appDbContext);
            var cellService    = new CellService(cellRepository);

            var cellController = new PCellsController(
                cellService,
                _mapper,
                loggerService);

            appDbContext.Cells.Add(new Cell
            {
                Id         = 1,
                Beds       = 2,
                IdPrison   = 1,
                IdCellType = 1,
                Prison     = new Prison(),
                CellType   = new CellType(),
                Prisoner   = new List <Prisoner>()
            });
            appDbContext.SaveChanges();

            var createdCell = appDbContext.Cells.FirstOrDefault(x => x.Id == 1);

            Assert.IsTrue(appDbContext.Cells.Any(), "there is no cell");
            Assert.IsNotNull(createdCell, "cell was not created properly");
            Assert.IsNotNull(cellController.SelectedCell(1), "selected cell returns null");
            //   Assert.IsNotNull(cellController.SelectedCell(1).Value,"Selected cell ok results value is null"); //rip c#7, gonna be fixed in c#8
            //   Assert.AreEqual(_mapper.Map<CellVM>(createdCell),cellController.SelectedCell(1).Value,"Selected Cell returns wrong value");// rip c#7, gonna be fixed in c#8
        }
        public void IsUpdatingSelectedCell()
        {
            var options = new DbContextOptionsBuilder <AppDbContext>()
                          .UseInMemoryDatabase(databaseName: "Add_writes_to_Update_Cell_database")
                          .Options;
            var appDbContext = new AppDbContext(options);
            var user         = new ClaimsPrincipal(new ClaimsIdentity(new Claim[]
            {
                new Claim(ClaimTypes.Name, "abcd"),
            }));

            appDbContext.UserPermissions.Add(new UserPermission
            {
                Id       = 1,
                UserName = "******",
                IdPrison = 1,
                Prison   = new Prison
                {
                    Id         = 1,
                    PrisonName = "prison_test"
                }
            });
            appDbContext.SaveChanges();
            var loggerRepository = new LoggerRepository(appDbContext);
            var loggerService    = new LoggerService(loggerRepository);

            var cellRepository = new CellRepository(appDbContext);
            var cellService    = new CellService(cellRepository);

            var cellController = new PCellsController(
                cellService,
                _mapper,
                loggerService)
            {
                ControllerContext = new ControllerContext {
                    HttpContext = new DefaultHttpContext {
                        User = user
                    }
                }
            };

            appDbContext.CellTypes.Add(new CellType
            {
                Id       = 1,
                CellName = "abcd"
            });
            cellController.AddCell(new CellDTO
            {
                Beds       = 1,
                IdCellType = 1,
            });

            var cellToUpdate = new CellDTO
            {
                Beds       = 5,
                IdCellType = 1
            };


            Assert.AreEqual(appDbContext.Cells.Count(), 1);
            cellController.UpdateCell(1, cellToUpdate);
            Assert.AreEqual(appDbContext.Cells.Count(), 1, "Cell has not deleted or added, instead of updating");
            Assert.AreEqual(appDbContext.Cells.FirstOrDefault(x => x.Id == 1).Beds, 5, "The cell updated wrong value");
        }