public void ApoDepartmentServiceReturnCorrectIdAndValueWhenCreateSuccess()
        {
            var service = new ApoDepartmentService(_apoDivisionRepository, _apoGroupRepository, _apoDepartmentRepository);

            var resource = new ApoDepartmentCreateOrEdit()
            {
                ApoDivisionId = 1,
                ApoGroupId    = 0,
                Name          = "New Dept"
            };

            var sut = service.Create(resource);

            var divisionName = _apoDivision.Single(x => x.Id == 1).Name;
            var groupName    = _apoGroup.Single(x => x.Id == 0).Name;

            var lastId = _apoDepartment.Where(x => x.DivisionId == 1 && x.GroupId == 0).Select(x => x.Id).Max() + 1;


            Assert.IsType <ApoDepartmentDto>(sut);
            Assert.Equal(sut.Id, lastId);
            Assert.Equal(sut.DivisionId, 1);
            Assert.Equal(sut.DivisionName, divisionName);
            Assert.Equal(sut.GroupId, 0);
            Assert.Equal(sut.GroupName, groupName);
            Assert.Equal(sut.Name, "New Dept");
        }
        public void ApoDepartmentServiceShouldReturnNullWhenNameNotMatched()
        {
            var service = new ApoDepartmentService(_apoDivisionRepository, _apoGroupRepository, _apoDepartmentRepository);

            var resource = new ApoDepartmentCreateOrEdit()
            {
                Name = "Beverssages"
            };

            var sut = service.GetByName(resource);


            Assert.Null(sut);
        }
        public void ApoDepartmentServiceReturnErrorWhenUpdateDuplicateValueToSameDivsionAndType()
        {
            var service = new ApoDepartmentService(_apoDivisionRepository, _apoGroupRepository, _apoDepartmentRepository);

            var resource = new ApoDepartmentCreateOrEdit()
            {
                ApoDivisionId = 1,
                ApoGroupId    = 0,
                Name          = "Beverages"
            };

            var exception = Record.Exception(() => service.Edit(2, resource));

            Assert.NotNull(exception);
            Assert.IsType <ArgumentException>(exception);
            Assert.True(exception.Message.Contains($"Name {resource.Name} is Already exist."));
        }
        public HttpResponseMessage Update(int id, [FromBody] ApoDepartmentCreateOrEdit apoDepartmentForCreateOrEdit)
        {
            try
            {
                var updateApo = _apoDepartmentService.Edit(id, apoDepartmentForCreateOrEdit);

                if (updateApo != null)
                {
                    return(Request.CreateResponse(HttpStatusCode.OK, updateApo));
                }

                return(Request.CreateResponse(HttpStatusCode.InternalServerError));
            }
            catch (ArgumentException e)
            {
                HttpError err = new HttpError(e.Message);
                return(Request.CreateResponse(HttpStatusCode.InternalServerError, err));
            }
        }
        public void ApoDepartmentShouldReturnCorrectValueWhenSearchMatched()
        {
            var service = new ApoDepartmentService(_apoDivisionRepository, _apoGroupRepository, _apoDepartmentRepository);

            var resource = new ApoDepartmentCreateOrEdit()
            {
                Name = "Beverages"
            };

            var selectedApo  = _apoDepartment.Single(x => x.Name.Equals("Beverages"));
            var divisionName = _apoDivision.Single(x => x.Id == selectedApo.DivisionId).Name;
            var groupName    = _apoGroup.Single(x => x.Id == selectedApo.GroupId).Name;

            var sut = service.GetByName(resource);


            Assert.Equal(sut.Name, "Beverages");
            Assert.Equal(sut.DivisionId, selectedApo.DivisionId);
            Assert.Equal(sut.DivisionName, divisionName);
            Assert.Equal(sut.GroupId, selectedApo.GroupId);
            Assert.Equal(sut.GroupName, groupName);
            Assert.Equal(sut.Id, selectedApo.Id);
        }
        public void ApoDepartmentServiceReturnCorrectUpdateValueWhenUpdateDuplicateNameButNotSameTypeAndDivision()
        {
            var service = new ApoDepartmentService(_apoDivisionRepository, _apoGroupRepository, _apoDepartmentRepository);

            var updateApo = new ApoDepartmentCreateOrEdit()
            {
                ApoDivisionId = 1,
                ApoGroupId    = 1,
                Name          = "Beverages"
            };
            var divisionName = _apoDivision.Single(x => x.Id == 1).Name;
            var groupName    = _apoGroup.Single(x => x.Id == 1).Name;


            var sut = service.Edit(3, updateApo);


            Assert.Equal(sut.Name, "Beverages");
            Assert.Equal(sut.DivisionId, 1);
            Assert.Equal(sut.DivisionName, divisionName);
            Assert.Equal(sut.GroupId, 1);
            Assert.Equal(sut.GroupName, groupName);
            Assert.Equal(sut.Id, 3);
        }
        public void ApoDepartmentServiceReturnUpdatedValueWhenUpdateSuccess()
        {
            var service = new ApoDepartmentService(_apoDivisionRepository, _apoGroupRepository, _apoDepartmentRepository);

            var updateApo = new ApoDepartmentCreateOrEdit()
            {
                ApoDivisionId = 1,
                ApoGroupId    = 0,
                Name          = "Beverages -- new"
            };

            var divisionName = _apoDivision.Single(x => x.Id == 1).Name;
            var groupName    = _apoGroup.Single(x => x.Id == 0).Name;


            var sut = service.Edit(1, updateApo);

            Assert.Equal(sut.Name, "Beverages -- new");
            Assert.Equal(sut.DivisionId, 1);
            Assert.Equal(sut.DivisionName, divisionName);
            Assert.Equal(sut.GroupId, 0);
            Assert.Equal(sut.GroupName, groupName);
            Assert.Equal(sut.Id, 1);
        }