예제 #1
0
        public async Task Details_WhenIdIsNotNullAndDivisionFound_ShouldReturnDivisionDetailsView()
        {
            // Arrange
            var divisionsIndexViewModel   = A.Fake <IDivisionsIndexViewModel>();
            var divisionsDetailsViewModel = A.Fake <IDivisionsDetailsViewModel>();

            var      divisionRepository = A.Fake <IDivisionRepository>();
            Division?division           = new Division();

            A.CallTo(() => divisionRepository.GetDivisionAsync(A <int> .Ignored)).Returns(division);

            var sharedRepository = A.Fake <ISharedRepository>();
            var testController   = new DivisionsController(divisionsIndexViewModel, divisionsDetailsViewModel,
                                                           divisionRepository, sharedRepository);

            int?id = 0;

            // Act
            var result = await testController.Details(id);

            // Assert
            A.CallTo(() => divisionRepository.GetDivisionAsync(id.Value)).MustHaveHappenedOnceExactly();
            divisionsDetailsViewModel.Division.ShouldBe(division);
            result.ShouldBeOfType <ViewResult>();
            ((ViewResult)result).Model.ShouldBe(divisionsDetailsViewModel);
        }
예제 #2
0
        public async Task SubDivisionShouldBeCreated()
        {
            using (var context = await NewParkSharkInMemoryTestContext())
            {
                var divisionService = new DivisionService(context.ParkSharkDbContext);

                var controller = new DivisionsController(context.Mapper, divisionService);
                var division   = GetResult <DivisionDto>(await controller.CreateSubDivision(new CreateSubDivisionDto
                {
                    Name             = "Test",
                    Director         = "Dir",
                    OriginalName     = "Te",
                    ParentDivisionId = 1
                }));

                var divisionInDb = await context.ParkSharkDbContext.Divisions.FindAsync(division.Id);

                Assert.AreEqual("Test", division.Name);
                Assert.AreEqual("Dir", division.Director);
                Assert.AreEqual("Te", division.OriginalName);
                Assert.AreNotEqual(default(int), division.Id);
                Assert.AreEqual(division.Id, divisionInDb.Id);
                Assert.AreEqual(1, divisionInDb.ParentDivisionId);
            }
        }
예제 #3
0
        public async Task EditPost_WhenIdEqualsDivisionIdAndModelStateIsValidAndDbUpdateConcurrencyExceptionIsCaughtAndDivisionWithIdExists_ShouldRethrowException()
        {
            // Arrange
            var divisionsIndexViewModel   = A.Fake <IDivisionsIndexViewModel>();
            var divisionsDetailsViewModel = A.Fake <IDivisionsDetailsViewModel>();

            var divisionRepository = A.Fake <IDivisionRepository>();

            A.CallTo(() => divisionRepository.Update(A <Division> .Ignored)).Throws <DbUpdateConcurrencyException>();
            A.CallTo(() => divisionRepository.DivisionExists(A <int> .Ignored)).Returns(true);

            var sharedRepository = A.Fake <ISharedRepository>();
            var testController   = new DivisionsController(divisionsIndexViewModel, divisionsDetailsViewModel,
                                                           divisionRepository, sharedRepository);

            int id       = 1;
            var division = new Division
            {
                ID = 1
            };

            // Act
            var func = new Func <Task <IActionResult> >(async() => await testController.Edit(id, division));

            // Assert
            await func.ShouldThrowAsync <DbUpdateConcurrencyException>();
        }
예제 #4
0
        public async Task EditPost_WhenIdEqualsDivisionIdAndModelStateIsNotValid_ShouldReturnDivisionEditView()
        {
            // Arrange
            var divisionsIndexViewModel   = A.Fake <IDivisionsIndexViewModel>();
            var divisionsDetailsViewModel = A.Fake <IDivisionsDetailsViewModel>();
            var divisionRepository        = A.Fake <IDivisionRepository>();
            var sharedRepository          = A.Fake <ISharedRepository>();
            var testController            = new DivisionsController(divisionsIndexViewModel, divisionsDetailsViewModel,
                                                                    divisionRepository, sharedRepository);

            int id       = 1;
            var division = new Division
            {
                ID = 1
            };

            testController.ModelState.AddModelError("LongName", "Please enter a long name.");

            // Act
            var result = await testController.Edit(id, division);

            // Assert
            A.CallTo(() => divisionRepository.Update(A <Division> .Ignored)).MustNotHaveHappened();
            A.CallTo(() => sharedRepository.SaveChangesAsync()).MustNotHaveHappened();
            result.ShouldBeOfType <ViewResult>();
            ((ViewResult)result).Model.ShouldBe(division);
        }
예제 #5
0
        public async Task EditPost_WhenIdEqualsDivisionIdAndModelStateIsValidAndDbUpdateConcurrencyExceptionIsNotCaught_ShouldUpdateDivisionInDataStoreAndRedirectToIndexView()
        {
            // Arrange
            var divisionsIndexViewModel   = A.Fake <IDivisionsIndexViewModel>();
            var divisionsDetailsViewModel = A.Fake <IDivisionsDetailsViewModel>();
            var divisionRepository        = A.Fake <IDivisionRepository>();
            var sharedRepository          = A.Fake <ISharedRepository>();
            var testController            = new DivisionsController(divisionsIndexViewModel, divisionsDetailsViewModel,
                                                                    divisionRepository, sharedRepository);

            int id       = 1;
            var division = new Division
            {
                ID = 1
            };

            // Act
            var result = await testController.Edit(id, division);

            // Assert
            A.CallTo(() => divisionRepository.Update(division)).MustHaveHappenedOnceExactly();
            A.CallTo(() => sharedRepository.SaveChangesAsync()).MustHaveHappenedOnceExactly();
            result.ShouldBeOfType <RedirectToActionResult>();
            ((RedirectToActionResult)result).ActionName.ShouldBe <string>(nameof(testController.Index));
        }
예제 #6
0
        public async Task EditPost_WhenIdEqualsDivisionIdAndModelStateIsValidAndDbUpdateConcurrencyExceptionIsCaughtAndDivisionWithIdDoesNotExist_ShouldReturnNotFound()
        {
            // Arrange
            var divisionsIndexViewModel   = A.Fake <IDivisionsIndexViewModel>();
            var divisionsDetailsViewModel = A.Fake <IDivisionsDetailsViewModel>();

            var divisionRepository = A.Fake <IDivisionRepository>();

            A.CallTo(() => divisionRepository.Update(A <Division> .Ignored)).Throws <DbUpdateConcurrencyException>();
            A.CallTo(() => divisionRepository.DivisionExists(A <int> .Ignored)).Returns(false);

            var sharedRepository = A.Fake <ISharedRepository>();
            var testController   = new DivisionsController(divisionsIndexViewModel, divisionsDetailsViewModel,
                                                           divisionRepository, sharedRepository);

            int id       = 1;
            var division = new Division
            {
                ID = 1
            };

            // Act
            var result = await testController.Edit(id, division);

            // Assert
            result.ShouldBeOfType <NotFoundResult>();
        }
예제 #7
0
        public DivisionsControllerTest()
        {
            var diServiceBuilder = new DIServiceBuilder();

            _controller = diServiceBuilder.GetService <DivisionsController>();
            _creators   = new Creators();
        }
예제 #8
0
        public async Task DivisionsController_TotalCount()
        {
            //Arrange
            var controller = new DivisionsController(_vrsContext);

            int expectedCount = DIVISIONS_TOTALCOUNT;

            // Act
            var _list = await controller.All();

            // Assert
            Assert.Equal(_list.Count, expectedCount);
        }
예제 #9
0
        public void CreateGet_ShouldReturnDivisionCreateView()
        {
            // Arrange
            var divisionsIndexViewModel   = A.Fake <IDivisionsIndexViewModel>();
            var divisionsDetailsViewModel = A.Fake <IDivisionsDetailsViewModel>();
            var divisionRepository        = A.Fake <IDivisionRepository>();
            var sharedRepository          = A.Fake <ISharedRepository>();
            var testController            = new DivisionsController(divisionsIndexViewModel, divisionsDetailsViewModel,
                                                                    divisionRepository, sharedRepository);

            // Act
            var result = testController.Create();

            // Assert
            result.ShouldBeOfType <ViewResult>();
        }
예제 #10
0
        public async Task Details_WhenIdIsNull_ShouldReturnNotFound()
        {
            // Arrange
            var divisionsIndexViewModel   = A.Fake <IDivisionsIndexViewModel>();
            var divisionsDetailsViewModel = A.Fake <IDivisionsDetailsViewModel>();
            var divisionRepository        = A.Fake <IDivisionRepository>();
            var sharedRepository          = A.Fake <ISharedRepository>();
            var testController            = new DivisionsController(divisionsIndexViewModel, divisionsDetailsViewModel,
                                                                    divisionRepository, sharedRepository);

            int?id = null;

            // Act
            var result = await testController.Details(id);

            // Assert
            result.ShouldBeOfType <NotFoundResult>();
        }
예제 #11
0
        public async Task CreatePost_WhenModelStateIsValid_ShouldAddDivisionToDataStoreAndRedirectToIndexView()
        {
            // Arrange
            var divisionsIndexViewModel   = A.Fake <IDivisionsIndexViewModel>();
            var divisionsDetailsViewModel = A.Fake <IDivisionsDetailsViewModel>();
            var divisionRepository        = A.Fake <IDivisionRepository>();
            var sharedRepository          = A.Fake <ISharedRepository>();
            var testController            = new DivisionsController(divisionsIndexViewModel, divisionsDetailsViewModel,
                                                                    divisionRepository, sharedRepository);

            var division = new Division();

            // Act
            var result = await testController.Create(division);

            // Assert
            A.CallTo(() => divisionRepository.AddAsync(division)).MustHaveHappenedOnceExactly();
            A.CallTo(() => sharedRepository.SaveChangesAsync()).MustHaveHappenedOnceExactly();
            result.ShouldBeOfType <RedirectToActionResult>();
            ((RedirectToActionResult)result).ActionName.ShouldBe <string>(nameof(testController.Index));
        }
예제 #12
0
        public async Task DeleteConfirmed_ShouldDeleteDivisionFromDataStoreAndRedirectToIndexView()
        {
            // Arrange
            var divisionsIndexViewModel   = A.Fake <IDivisionsIndexViewModel>();
            var divisionsDetailsViewModel = A.Fake <IDivisionsDetailsViewModel>();
            var divisionRepository        = A.Fake <IDivisionRepository>();
            var sharedRepository          = A.Fake <ISharedRepository>();
            var testController            = new DivisionsController(divisionsIndexViewModel, divisionsDetailsViewModel,
                                                                    divisionRepository, sharedRepository);

            int id = 1;

            // Act
            var result = await testController.DeleteConfirmed(id);

            // Assert
            A.CallTo(() => divisionRepository.DeleteAsync(id)).MustHaveHappenedOnceExactly();
            A.CallTo(() => sharedRepository.SaveChangesAsync()).MustHaveHappenedOnceExactly();
            result.ShouldBeOfType <RedirectToActionResult>();
            ((RedirectToActionResult)result).ActionName.ShouldBe <string>(nameof(testController.Index));
        }
예제 #13
0
        public async Task EditPost_WhenIdDoesNotEqualDivisionId_ShouldReturnNotFound()
        {
            // Arrange
            var divisionsIndexViewModel   = A.Fake <IDivisionsIndexViewModel>();
            var divisionsDetailsViewModel = A.Fake <IDivisionsDetailsViewModel>();
            var divisionRepository        = A.Fake <IDivisionRepository>();
            var sharedRepository          = A.Fake <ISharedRepository>();
            var testController            = new DivisionsController(divisionsIndexViewModel, divisionsDetailsViewModel,
                                                                    divisionRepository, sharedRepository);

            int id       = 0;
            var division = new Division
            {
                ID = 1
            };

            // Act
            var result = await testController.Edit(id, division);

            // Assert
            result.ShouldBeOfType <NotFoundResult>();
        }
예제 #14
0
        public async Task DivisionShouldBeReturned()
        {
            using (var context = await NewParkSharkInMemoryTestContext())
            {
                //Setup test data
                await context.ParkSharkDbContext.Divisions.AddAsync(new Division("Apple", "Apple Computer", "Steve Jobs"));

                await context.ParkSharkDbContext.SaveChangesAsync();

                var steveJobsDivision = context.ParkSharkDbContext.Divisions.FirstOrDefault(d => d.Name == "Apple");

                var divisionService = new DivisionService(context.ParkSharkDbContext);

                var controller = new DivisionsController(context.Mapper, divisionService);
                var division   = GetResult <DivisionDto>((await controller.GetDivision(steveJobsDivision.Id)));

                Assert.AreEqual("Apple", division.Name);
                Assert.AreEqual("Steve Jobs", division.Director);
                Assert.AreEqual("Apple Computer", division.OriginalName);
                Assert.AreEqual(steveJobsDivision.Id, division.Id);
            }
        }
예제 #15
0
        public async Task DivisionsShouldBeReturned()
        {
            using (var context = await NewParkSharkInMemoryTestContext())
            {
                //Setup test data
                await context.ParkSharkDbContext.Divisions.AddAsync(new Division("Apple", "Apple Computer", "Steve Jobs"));

                await context.ParkSharkDbContext.Divisions.AddAsync(new Division("International Brol Machinekes", "IBM", "Steve Flops"));

                await context.ParkSharkDbContext.SaveChangesAsync();

                var divisionService = new DivisionService(context.ParkSharkDbContext);

                var controller = new DivisionsController(context.Mapper, divisionService);
                var divisions  = GetResult <IEnumerable <DivisionDto> >((await controller.GetDivisions()));

                var jobsDivision  = divisions.FirstOrDefault(d => d.Director == "Steve Jobs");
                var flopsDivision = divisions.FirstOrDefault(d => d.Director == "Steve Flops");
                Assert.AreEqual("Apple", jobsDivision.Name);
                Assert.AreEqual("International Brol Machinekes", flopsDivision.Name);
            }
        }
예제 #16
0
        public async Task DivisionsController_GetById_1()
        {
            //Arrange
            string expectedTitle = DIVISION_NAME;
            int    ID            = DIVISION_ID;

            var controller = new DivisionsController(_vrsContext);

            // Act
            IActionResult actionResult = await controller.GetById(ID);

            // Assert
            Assert.NotNull(actionResult);

            OkObjectResult result = actionResult as OkObjectResult;

            Assert.NotNull(result);

            var _Division = result.Value as tblDivisions;

            Assert.Equal(expectedTitle, _Division.Name);
        }
예제 #17
0
        public async Task DivisionsWithSubDivisionsShouldBeReturned()
        {
            using (var context = await NewParkSharkInMemoryTestContext())
            {
                //Setup test data
                var parentDivision = new Division("Parent", "Parent", "Steve Jobs");
                await context.ParkSharkDbContext.Divisions.AddAsync(parentDivision);

                await context.ParkSharkDbContext.Divisions.AddAsync(new Division("Child1", "Child1", "Steve Jobs", parentDivision.Id));

                await context.ParkSharkDbContext.Divisions.AddAsync(new Division("Child2", "Child2", "Steve Jobs", parentDivision.Id));

                await context.ParkSharkDbContext.SaveChangesAsync();

                var divisionService = new DivisionService(context.ParkSharkDbContext);

                var controller = new DivisionsController(context.Mapper, divisionService);
                var division   = GetResult <DivisionDto>((await controller.GetDivision(parentDivision.Id)));

                Assert.AreEqual(2, division.SubDivisions.Count);
            }
        }
예제 #18
0
        protected DivisionsController GetController(DivisionService service)
        {
            var user   = new Mock <ClaimsPrincipal>();
            var claims = new Claim[]
            {
                new Claim("username", "unittestusername")
            };

            user.Setup(u => u.Claims).Returns(claims);

            DivisionsController controller = new DivisionsController(service);

            controller.ControllerContext = new ControllerContext()
            {
                HttpContext = new DefaultHttpContext()
                {
                    User = user.Object
                }
            };
            controller.ControllerContext.HttpContext.Request.Headers["Authorization"] = "Bearer unittesttoken";
            controller.ControllerContext.HttpContext.Request.Path = new PathString("/v1/unit-test");
            return(controller);
        }
예제 #19
0
        public async Task CreatePost_WhenModelStateIsNotValid_ShouldReturnDivisionCreateView()
        {
            // Arrange
            var divisionsIndexViewModel   = A.Fake <IDivisionsIndexViewModel>();
            var divisionsDetailsViewModel = A.Fake <IDivisionsDetailsViewModel>();
            var divisionRepository        = A.Fake <IDivisionRepository>();
            var sharedRepository          = A.Fake <ISharedRepository>();
            var testController            = new DivisionsController(divisionsIndexViewModel, divisionsDetailsViewModel,
                                                                    divisionRepository, sharedRepository);

            var division = new Division();

            testController.ModelState.AddModelError("LongName", "Please enter a long name.");

            // Act
            var result = await testController.Create(division);

            // Assert
            A.CallTo(() => divisionRepository.AddAsync(division)).MustNotHaveHappened();
            A.CallTo(() => sharedRepository.SaveChangesAsync()).MustNotHaveHappened();
            result.ShouldBeOfType <ViewResult>();
            ((ViewResult)result).Model.ShouldBe(division);
        }
예제 #20
0
        public async Task Index_ShouldReturnDivisionsIndexView()
        {
            // Arrange
            var divisionsIndexViewModel   = A.Fake <IDivisionsIndexViewModel>();
            var divisionsDetailsViewModel = A.Fake <IDivisionsDetailsViewModel>();

            var divisionRepository = A.Fake <IDivisionRepository>();
            var divisions          = new List <Division>();

            A.CallTo(() => divisionRepository.GetDivisionsAsync()).Returns(divisions);

            var sharedRepository = A.Fake <ISharedRepository>();
            var testController   = new DivisionsController(divisionsIndexViewModel, divisionsDetailsViewModel,
                                                           divisionRepository, sharedRepository);

            // Act
            var result = await testController.Index();

            // Assert
            A.CallTo(() => divisionRepository.GetDivisionsAsync()).MustHaveHappenedOnceExactly();
            divisionsIndexViewModel.Divisions.ShouldBe(divisions);
            result.ShouldBeOfType <ViewResult>();
            ((ViewResult)result).Model.ShouldBe(divisionsIndexViewModel);
        }