예제 #1
0
        public async void Add_Loan_DAMAGED()
        {
            var memberSsn = 112233446;

            using (var context = GetContextWithData())
                using (var controller = new LoansController(context))
                {
                    var     itemId  = AddItem(context, ItemCondition.DAMAGED);
                    LoanAPI loanAPI = new LoanAPI()
                    {
                        ItemId = itemId, MemberSsn = memberSsn
                    };
                    var result = await controller.PostLoan(loanAPI);

                    var loans = await controller.GetLoans();

                    var loan = loans.Last();

                    output.WriteLine(loan.Item.RentStatus.ToString());
                    output.WriteLine(loan.Member.Ssn.ToString());

                    Assert.IsType <CreatedAtActionResult>(result);
                    Assert.True(loan is Loan);
                    Assert.Equal(RentStatus.UNAVAILABLE, loan.Item.RentStatus);
                }
        }
예제 #2
0
        public async void Add_Loan_DAMAGED_Wrong_LOANLIMIT()
        {
            var memberSsn = 112233446; // already has 4 loans


            using (var context = GetContextWithData())
                using (var controller = new LoansController(context))
                {
                    var     itemId1  = AddItem(context);
                    LoanAPI loanAPI1 = new LoanAPI()
                    {
                        ItemId = itemId1, MemberSsn = memberSsn
                    };
                    await controller.PostLoan(loanAPI1); // 5 loans LIMIT

                    var     itemId  = AddItem(context, ItemCondition.DAMAGED, RentStatus.AVAILABLE, ItemStatus.RENTABLE);
                    LoanAPI loanAPI = new LoanAPI()
                    {
                        ItemId = itemId, MemberSsn = memberSsn
                    };
                    var result = await controller.PostLoan(loanAPI);

                    Assert.IsType <BadRequestResult>(result);
                }
        }
예제 #3
0
 public LoansControllerTests()
 {
     mapperMock          = mockRepository.Create <IMapper>();
     calculatorMock      = mockRepository.Create <ILoanCalculator>();
     loansRepositoryMock = mockRepository.Create <ILoansRepository>();
     loansController     = new LoansController(calculatorMock.Object, mapperMock.Object, loansRepositoryMock.Object);
 }
예제 #4
0
        public async void Add_Unavailable_Loan()
        {
            var memberSsn  = 112233446;
            var memberSsn2 = 556677889;

            using (var context = GetContextWithData())
                using (var controller = new LoansController(context))
                {
                    var itemId  = context.Items.FirstOrDefault().Id;
                    var loanAPI = new LoanAPI()
                    {
                        ItemId = itemId, MemberSsn = memberSsn
                    };
                    var result = await controller.PostLoan(loanAPI);


                    var loanAPI2 = new LoanAPI()
                    {
                        ItemId = itemId, MemberSsn = memberSsn2
                    };
                    var result2 = await controller.PostLoan(loanAPI2);

                    var loans = await controller.GetLoans();

                    var loanz = loans.Where(l => l.Item.Id == itemId && l.IsReturned == false);

                    Assert.True(loanz.Count() == 1);
                }
        }
예제 #5
0
        public void Loan_Payment_ID()
        {
            LoansController controller = new LoansController(_context);

            int        id     = 1;
            ViewResult result = controller.Payment(id) as ViewResult;

            // Assert
            Assert.IsNotNull(result);
        }
예제 #6
0
        public async void Get_All_Loans()
        {
            using (var context = GetContextWithData())
                using (var controller = new LoansController(context))
                {
                    var result = await controller.GetLoans();

                    output.WriteLine(result.AsEnumerable().FirstOrDefault().StartDate.ToLongDateString());
                    Assert.True(result.Count() != 0);
                }
        }
예제 #7
0
        public void GetLoansForTomeTest()
        {
            int tomeId     = 2;
            var controller = new LoansController(_entityMock.Object);
            var result     = controller.GetLoansForTome(tomeId);

            var objectResult = Assert.IsType <OkObjectResult>(result);
            var model        = Assert.IsAssignableFrom <IEnumerable <LoanDTO> >(objectResult.Value);

            Assert.Equal(_loanDTOs.Where(l => l.TomeId == 2 && l.LastDay >= DateTime.Now).Select(l => l.Id), model.Select(l => l.Id));
        }
예제 #8
0
        public void GetLoansForBookTest2()
        {
            int bookId     = 1;
            var controller = new LoansController(_entityMock.Object);
            var result     = controller.GetLoansForBook(bookId);

            var objectResult = Assert.IsType <OkObjectResult>(result);
            var model        = Assert.IsAssignableFrom <IEnumerable <LoanDTO> >(objectResult.Value);

            Assert.Equal(_loanDTOs.Where(l => l.Tome.BookId == 1), model); //1 ilyen kölcsönzés van, és itt nem kell dátum miatt törölni
        }
예제 #9
0
        public async void Get_Loan()
        {
            using (var context = GetContextWithData())
                using (var controller = new LoansController(context))
                {
                    var loanId = context.Loans.FirstOrDefault().LoanID;
                    var result = await controller.GetLoan(loanId);

                    Assert.IsType <OkObjectResult>(result);
                }
        }
예제 #10
0
        public async void Get_Loan_Wrong_Id()
        {
            using (var context = GetContextWithData())
                using (var controller = new LoansController(context))
                {
                    var loanId = 99999;
                    var result = await controller.GetLoan(loanId);

                    Assert.IsType <NotFoundResult>(result);
                }
        }
        public async Task GetRecords_Return_BadRequest__With_Invalid_Filter_Type(string type)
        {
            var mockLogger           = GetMockLogger <LoansController>();
            var mockReportingService = new Mock <IReportingService>();
            var controller           = new LoansController(mockLogger, mockReportingService.Object);



            var result = await controller.GetRecords(type) as BadRequestResult;

            Assert.Equal((int)HttpStatusCode.BadRequest, result.StatusCode);
        }
예제 #12
0
        public void GetLoansForBookTest()
        {
            int bookId     = 2; // ehhez van egy kötet és arra van két kölcsönzés
            var controller = new LoansController(_entityMock.Object);
            var result     = controller.GetLoansForBook(bookId);

            var objectResult = Assert.IsType <OkObjectResult>(result);
            var model        = Assert.IsAssignableFrom <IEnumerable <LoanDTO> >(objectResult.Value);

            Assert.Equal(_loanDTOs.Where(l => l.Tome.BookId == 2).Count() - 1, model.Count());
            Assert.Equal(2, model.Count());
        }
        public async Task GetRecords_Return_OK_With_Valid_Filter_Type(string type)
        {
            var mockLogger           = GetMockLogger <LoansController>();
            var mockReportingService = new Mock <IReportingService>();

            mockReportingService.Setup(x => x.GetLoansReport(type)).ReturnsAsync(loansData);
            var controller = new LoansController(mockLogger, mockReportingService.Object);

            var result = await controller.GetRecords(type) as OkObjectResult;

            Assert.NotNull(result.Value);
            Assert.Equal((int)HttpStatusCode.OK, result.StatusCode);
        }
예제 #14
0
        public void GetLoansTest()
        {
            var controller = new LoansController(_entityMock.Object);
            var result     = controller.GetLoans();

            var objectResult = Assert.IsType <OkObjectResult>(result);
            var model        = Assert.IsAssignableFrom <IEnumerable <LoanDTO> >(objectResult.Value);

            var loanToDelete = _loanDTOs.Where(l => l.LastDay < DateTime.Now).FirstOrDefault(); //egyet töröl a controller is

            _loanDTOs.Remove(loanToDelete);

            Assert.Equal(_loanDTOs.Count(), model.Count());
        }
예제 #15
0
        public void GetLoansForTomeTest2()
        {
            int tomeId     = 3;
            var controller = new LoansController(_entityMock.Object);
            var result     = controller.GetLoansForTome(tomeId);

            var objectResult = Assert.IsType <OkObjectResult>(result);
            var model        = Assert.IsAssignableFrom <IEnumerable <LoanDTO> >(objectResult.Value);

            foreach (var loan in _loanDTOs)
            {
                Debug.WriteLine(loan.LastDay);
            }

            Assert.Equal(_loanDTOs.Where(l => l.TomeId == 3 && l.LastDay >= DateTime.Now).Select(l => l.Id).ToList(), model.Select(l => l.Id).ToList());
        }
예제 #16
0
        public async void Add_Loan_DAMAGED_Wrong_MemberSSN()
        {
            var memberSsn = 1122334466;

            using (var context = GetContextWithData())
                using (var controller = new LoansController(context))
                {
                    var     itemId  = AddItem(context, ItemCondition.DAMAGED, RentStatus.AVAILABLE, ItemStatus.NONRENTABLE);
                    LoanAPI loanAPI = new LoanAPI()
                    {
                        ItemId = itemId, MemberSsn = memberSsn
                    };
                    var result = await controller.PostLoan(loanAPI);

                    Assert.IsType <BadRequestResult>(result);
                }
        }
예제 #17
0
        public async void Add_Loan_OK_Wrong_ITEMID()
        {
            var memberSsn = 112233446;

            using (var context = GetContextWithData())
                using (var controller = new LoansController(context))
                {
                    var     itemId  = new Guid();
                    LoanAPI loanAPI = new LoanAPI()
                    {
                        ItemId = itemId, MemberSsn = memberSsn
                    };
                    var result = await controller.PostLoan(loanAPI);

                    Assert.IsType <BadRequestResult>(result);
                }
        }
예제 #18
0
        public void EditLoanTest()
        {
            var editedLoan = new LoanDTO
            {
                Id       = 2,
                TomeId   = _tomeDTOs.First().Id,
                Tome     = _tomeDTOs.First(),
                IsActive = true,
                FirstDay = new DateTime(2020, 06, 14),
                LastDay  = new DateTime(2020, 07, 01)
            };

            var controller = new LoansController(_entityMock.Object);
            var result     = controller.PutLoan(editedLoan);

            Assert.IsType <OkResult>(result);
            Assert.Equal(_tomeDTOs.Count, _entityMock.Object.Loans.Count());
        }
        public void LoanByAccountNoIsNotFound(int input)
        {
            var loansController = new LoansController(_loanService)
            {
                Request = new HttpRequestMessage
                {
                    Method     = HttpMethod.Get,
                    RequestUri = new Uri(ServiceBaseURL + "loans/" + input)
                }
            };

            loansController.Request.Properties.Add(HttpPropertyKeys.HttpConfigurationKey, new HttpConfiguration());
            _response = loansController.Get(input);

            var responseResult = JsonConvert.DeserializeObject <Loan>(_response.Content.ReadAsStringAsync().Result);

            Assert.AreEqual(HttpStatusCode.NotFound, _response.StatusCode);
            Assert.False(_loans.Any(a => a.AccountNo == input));
        }
예제 #20
0
        public void shouldRetrieveLoanFromRegistryWhenCalled()
        {
            //throw new NotImplementedException();
            var fakeLoanRepo = new FakeLoanRepository();

            /*Mock<ILoanRegistry> fakeLoanRepo = new Mock<ILoanRegistry>();
             * fakeLoanRepo.Setup(flr => flr.GetAll()).Returns(new List<Loan>
             * {
             *  new Loan { LoanId=2, Amount = 2500000, DurationInMonths=3, MemberId=2, DateRequested=System.DateTime.Now, IsActive=true },
             *  new Loan { LoanId=3, Amount = 400000, DurationInMonths=1, MemberId=4, DateRequested=System.DateTime.Now, IsActive=true  },
             *  new Loan { LoanId=1, Amount = 6000000, DurationInMonths=3, MemberId=1, DateRequested=System.DateTime.Now, IsActive=false }
             * });*/
            var _controller = new LoansController(fakeLoanRepo);
            // ACT - call our method under test
            var  result = (ObjectResult)_controller.GetById(1);
            Loan model  = result.Value as Loan;

            Assert.Equal(6000000, model.Amount);
            Assert.Equal(1, model.MemberId);
        }
        public void GetAllLoansTest()
        {
            var loansController = new LoansController(_loanService)
            {
                Request = new HttpRequestMessage
                {
                    Method     = HttpMethod.Get,
                    RequestUri = new Uri(ServiceBaseURL + "loans")
                }
            };

            loansController.Request.Properties.Add(HttpPropertyKeys.HttpConfigurationKey, new HttpConfiguration());

            _response = loansController.Get();

            var responseResult = JsonConvert.DeserializeObject <List <Loan> >(_response.Content.ReadAsStringAsync().Result);

            Assert.AreEqual(_response.StatusCode, HttpStatusCode.OK);
            Assert.AreEqual(responseResult.Any(), true);
        }
예제 #22
0
        public async void Add_Loan_Over_Limit(int books)
        {
            var memberSsn = 112233446; // already has 4 loans

            using (var context = GetContextWithData())
                using (var controller = new LoansController(context))
                {
                    for (int i = 0; i < books; i++)
                    {
                        var     itemId  = AddItem(context);
                        LoanAPI loanAPI = new LoanAPI()
                        {
                            ItemId = itemId, MemberSsn = memberSsn
                        };
                        await controller.PostLoan(loanAPI);
                    }

                    var loans = context.Members.FirstOrDefault(m => m.Ssn == memberSsn).Loans;
                    Assert.Equal(5, loans.Count);
                }
        }
예제 #23
0
        public async void Update_ItemStatus(ItemStatus status, ItemCondition condition)
        {
            var memberSsn = 112233446;

            using (var context = GetContextWithData())
                using (var controller = new LoansController(context))
                {
                    var     itemId  = context.Items.FirstOrDefault().Id;
                    LoanAPI loanAPI = new LoanAPI()
                    {
                        ItemId = itemId, MemberSsn = memberSsn
                    };
                    await controller.PostLoan(loanAPI);

                    await controller.ReturnLoan(loanAPI, (int)condition);

                    var loans = await controller.GetLoans();

                    var loan = loans.Where(l => l.Item.Id == itemId && l.Member.Ssn == memberSsn).FirstOrDefault();

                    Assert.Equal(status, loan.Item.ItemStatus);
                }
        }
예제 #24
0
        public async void Return_Loan(ItemCondition condition)
        {
            var memberSsn = 112233445;

            using (var context = GetContextWithData())
                using (var controller = new LoansController(context))
                {
                    var     itemId  = context.Items.FirstOrDefault().Id;
                    LoanAPI loanAPI = new LoanAPI()
                    {
                        ItemId = itemId, MemberSsn = memberSsn
                    };
                    await controller.PostLoan(loanAPI);

                    await controller.ReturnLoan(loanAPI, (int)condition);

                    var loans = await controller.GetLoans();

                    var loanz = loans.Where(l => l.Item.Id == itemId && l.Member.Ssn == memberSsn && l.IsReturned == false);

                    output.WriteLine(loanz.Count().ToString());
                    Assert.True(loanz.Count() == 0);
                }
        }
예제 #25
0
        public async Task LoanController_ThrowException_WithNullParam()
        {
            LoansController controller = new LoansController();

            await controller.GetNewLoans(null);
        }