Beispiel #1
0
        public void PositiveTest_GetPayslip_ByCorrectId_CorrectTaxCalculation_4()
        {
            var employeeMock1 = new Mock <Employee>().As <ITaxableEmployee>();

            employeeMock1.Setup(emp => emp.FirstName).Returns("FirstName");
            employeeMock1.Setup(emp => emp.LastName).Returns("LastName");
            employeeMock1.Setup(emp => emp.PaymentStartDate).Returns(new DateTime(2018, 03, 01));
            employeeMock1.Setup(emp => emp.AnualSalary).Returns(200000);
            employeeMock1.Setup(emp => emp.SuperRate).Returns(11);

            List <ITaxableEmployee> taxableEmployees = new List <ITaxableEmployee>
            {
                employeeMock1.Object
            };

            var mockRepo = new Mock <IProxyRepo <ITaxableEmployee> >();

            mockRepo.Setup(x => x.Entities).Returns(taxableEmployees);
            var SUT = new PayslipController(mockRepo.Object);

            var getResponse = SUT.Get(0);
            var paySlip     = (getResponse as System.Web.Http.Results.JsonResult <IPayslip>).Content;

            Assert.IsNotNull(paySlip);
            Assert.AreEqual(16667, paySlip.GrossIncome);
            Assert.AreEqual(5269, paySlip.IncomeTax);
            Assert.AreEqual(11398, paySlip.NetIncome);
            Assert.AreEqual(1833, paySlip.SuperAmount);
        }
Beispiel #2
0
        public void PositiveTest_GetPayslip_WithNoId_APIReferenceStringReturned()
        {
            var SUT         = new PayslipController();
            var getResponse = SUT.Get();

            Assert.AreEqual("user api/Payslip/id to get payslip of Employee", (getResponse as System.Web.Http.Results.JsonResult <EmptyResult>).Content.Message);
        }
Beispiel #3
0
        public void Test_GetPayslip_3()
        {
            var payslipController = new PayslipController();

            payslipController.Request       = new HttpRequestMessage();
            payslipController.Configuration = new HttpConfiguration();
            var employee = new Employee()
            {
                FirstName    = "Uvika",
                LastName     = "Khatri",
                AnnualSalary = 10000,
                StartDate    = new DateTime(2018, 06, 30),
                SuperRate    = 0
            };

            Payslip paySlip;
            var     response = payslipController.CreatePaySlip(employee);

            Assert.AreEqual(response.StatusCode, HttpStatusCode.OK);
            Assert.IsTrue(response.TryGetContentValue <Payslip>(out paySlip));
            Assert.IsNotNull(paySlip);
            Assert.AreEqual(833, paySlip.GrossIncome);
            Assert.AreEqual(0, paySlip.IncomeTax);
            Assert.AreEqual(833, paySlip.NetIncome);
            Assert.AreEqual(0, paySlip.SuperAnnuation);
            Assert.AreEqual("01 Jun 2018-30 Jun 2018", paySlip.PayPeriod);
        }
Beispiel #4
0
        public void PositiveTest_GetPayslip_ByCorrectId_CorrectTaxCalculation_4()
        {
            var employee1 = new Employee()
            {
                FirstName        = "FirstName1",
                LastName         = "LastName1",
                AnualSalary      = 200000,
                PaymentStartDate = new DateTime(2018, 03, 31),
                SuperRate        = 11
            };

            var employeeControllerSUT = new EmployeeController();
            var id = (employeeControllerSUT.Post(employee1).Result as OkNegotiatedContentResult <int>).Content;

            var SUT = new PayslipController();

            var getResponse = SUT.Get(id);
            var paySlip     = (getResponse as OkNegotiatedContentResult <IPayslip>).Content;

            Assert.IsNotNull(paySlip);
            Assert.AreEqual(16667, paySlip.GrossIncome);
            Assert.AreEqual(5269, paySlip.IncomeTax);
            Assert.AreEqual(11398, paySlip.NetIncome);
            Assert.AreEqual(1833, paySlip.SuperAmount);
        }
Beispiel #5
0
        public void Upload_NoFilesUploaded_ReturnBadRequest()
        {
            //Arrange
            var file = new StreamContent(new MemoryStream(new Byte[100]));

            file.Headers.ContentType                 = new MediaTypeHeaderValue("image/jpeg");
            file.Headers.ContentDisposition          = new ContentDispositionHeaderValue("form-data");
            file.Headers.ContentDisposition.FileName = "image.jpeg";

            var content = new MultipartFormDataContent();

            content.Add(file);

            var requestMsg = new HttpRequestMessage();

            requestMsg.Content = content;

            var mockMemoryStreamHelper = new Mock <IMemoryStreamHelper>();

            mockMemoryStreamHelper.Setup(ms => ms.LoadFileInfo(It.IsAny <HttpContent>())).Returns((List <MultipartFileInfo>)null);
            var mockTaxCalculator = new Mock <IPayslipService>();

            //Act
            var controller = new PayslipController(mockTaxCalculator.Object, mockMemoryStreamHelper.Object);

            controller.Request = requestMsg;
            var response = controller.Upload();

            //Assert
            Assert.AreEqual(HttpStatusCode.BadRequest, response.StatusCode);
            Assert.AreEqual("Method only acccepts 1 csv file", response.Content.ReadAsStringAsync().Result);
        }
Beispiel #6
0
        public void Test_GetPayslip_1()
        {
            var payslipController = new PayslipController();

            var employee = new Employee()
            {
                FirstName    = "Uvika",
                LastName     = "Khatri",
                AnnualSalary = 60050,
                StartDate    = new DateTime(2018, 03, 01),
                SuperRate    = 9
            };



            payslipController.Request       = new HttpRequestMessage();
            payslipController.Configuration = new HttpConfiguration();

            Payslip paySlip;
            var     response = payslipController.CreatePaySlip(employee);

            Assert.IsTrue(response.TryGetContentValue <Payslip>(out paySlip));
            Assert.IsNotNull(paySlip);
            Assert.AreEqual(5004, paySlip.GrossIncome);
            Assert.AreEqual(922, paySlip.IncomeTax);
            Assert.AreEqual(4082, paySlip.NetIncome);
            Assert.AreEqual(450, paySlip.SuperAnnuation);
            Assert.AreEqual("01 Mar 2018-31 Mar 2018", paySlip.PayPeriod);
        }
Beispiel #7
0
        public void PositiveTest_GetPayslip_WithNoId_APIReferenceStringReturned()
        {
            var SUT         = new PayslipController();
            var getResponse = SUT.Get();

            Assert.AreEqual("user api/Payslip/id to get payslip of Employee", (getResponse as OkNegotiatedContentResult <string>).Content);
        }
Beispiel #8
0
        public void NegativeTest_GetPayslip1()
        {
            var payslipController = new PayslipController();
            var result            = (payslipController.CreatePaySlip(null));

            // Assert
            Assert.IsInstanceOfType(result, typeof(NotFoundResult));
        }
Beispiel #9
0
        public void PayslipInValidInputTest()
        {
            var payslipController = new PayslipController(_payslipService);
            var result            = payslipController.Generatepayslip("David,Rudd,6,,dsf,0050,9%,01 March – 31 March");

            Assert.IsNotNull(result);
            Assert.IsInstanceOf <BadRequestObjectResult>(result);
        }
Beispiel #10
0
        public void PayslipController_API_Request()
        {
            var employee = new Employee {
                FirstName = "Ram", LastName = "Kumar", AnnualSalary = 10, PaymentStartDate = "sd", SuperRate = 0
            };

            var target = new PayslipController(_mockTax.Object);
            var result = target.Post(employee);
        }
Beispiel #11
0
        public void NegativeTest_GetPayslip1()
        {
            var payslipController = new PayslipController();

            payslipController.Request       = new HttpRequestMessage();
            payslipController.Configuration = new HttpConfiguration();
            var response = (payslipController.CreatePaySlip(null));

            // Assert
            Assert.AreEqual(response.StatusCode, HttpStatusCode.NotFound);
        }
Beispiel #12
0
        public void PayslipValidInputTest()
        {
            var payslipController = new PayslipController(_payslipService);
            var result            = payslipController.Generatepayslip("David,Rudd,60050,9%,01 March – 31 March");

            Assert.IsNotNull(result);
            Assert.IsInstanceOf <OkObjectResult>(result);
            var response = result as OkObjectResult;

            Assert.AreEqual("David Rudd,01 March – 31 March,5004,922,4082,450", response.Value);
        }
Beispiel #13
0
        public new void Setup()
        {
            base.SetUp();

            var mockPayslipManager = new Mock <IPayslipManager>();

            mockPayslipManager.Setup(x => x.GeneratePayslip(EmployeeDetails)).Returns(new PayslipDetails()
            {
                Name        = EmployeeDetails.FirstName + " " + EmployeeDetails.LastName,
                Super       = 450,
                GrossIncome = 5004,
                IncomeTax   = 922,
                PayPeriod   = EmployeeDetails.PaymentStartDate
            });
            _payslipManager = mockPayslipManager.Object;

            var mockEmpCsvDal = new Mock <ICsvDal <EmployeeDetails> >();

            mockEmpCsvDal.Setup(x => x.ReadCsv(It.IsAny <IFormFile>())).Returns(new List <EmployeeDetails>()
            {
                EmployeeDetails,
                new EmployeeDetails()
                {
                    FirstName        = EmployeeDetails.FirstName,
                    LastName         = EmployeeDetails.LastName,
                    AnnualSalary     = 120000,
                    SuperRate        = 10,
                    PaymentStartDate = EmployeeDetails.PaymentStartDate
                }
            });
            _empCsvDal = mockEmpCsvDal.Object;

            var mockPayCsvDal = new Mock <ICsvDal <PayslipDetails> >();

            mockPayCsvDal.Setup(x => x.WriteCsv(It.IsAny <IEnumerable <PayslipDetails> >())).Returns(new byte[10]);
            _payCsvDal = mockPayCsvDal.Object;

            var fileMock = new Mock <IFormFile>();

            _file = fileMock.Object;

            _payslipController = new PayslipController(_payslipManager, _empCsvDal, _payCsvDal);
            var objectValidator = new Mock <IObjectModelValidator>();

            objectValidator.Setup(o => o.Validate(It.IsAny <ActionContext>(),
                                                  It.IsAny <ValidationStateDictionary>(),
                                                  It.IsAny <string>(),
                                                  It.IsAny <object>()));
            _payslipController.ObjectValidator = objectValidator.Object;
        }
Beispiel #14
0
        public void Upload_UnsupportedMediaType_Throw_HttpResponseException()
        {
            //Arrange
            var requestMsg = new HttpRequestMessage();

            requestMsg.Content = new StringContent("plain string");

            //Act
            var mockMemoryStreamHelper = new Mock <IMemoryStreamHelper>();
            var mockTaxCalculator      = new Mock <IPayslipService>();
            var controller             = new PayslipController(mockTaxCalculator.Object, mockMemoryStreamHelper.Object);

            controller.Request = requestMsg;

            //Assert
            controller.Upload();
        }
Beispiel #15
0
        public void NegativeTest_GetPayslip2()
        {
            var payslipController = new PayslipController();

            var employee = new Employee()
            {
                FirstName    = "Uvika",
                LastName     = "Khatri",
                AnnualSalary = -200,
                StartDate    = new DateTime(2018, 06, 30),
                SuperRate    = -3
            };

            var result = (payslipController.CreatePaySlip(employee));

            // Assert
            Assert.IsInstanceOfType(result, typeof(NotFoundResult));
        }
Beispiel #16
0
        public void Upload_CsvFileWith1DataRow_ReturnsCsv()
        {
            //Arrange
            var file = new StreamContent(new MemoryStream(new Byte[100]));

            file.Headers.ContentType                 = new MediaTypeHeaderValue("image/jpeg");
            file.Headers.ContentDisposition          = new ContentDispositionHeaderValue("form-data");
            file.Headers.ContentDisposition.FileName = "image.jpeg";

            var content = new MultipartFormDataContent();

            content.Add(file);

            var requestMsg = new HttpRequestMessage();

            requestMsg.Content = content;

            var mockMemoryStreamHelper = new Mock <IMemoryStreamHelper>();
            var stream = new MemoryStream(Encoding.UTF8.GetBytes(@"first name,last name,annual salary,super rate (%),payment start date
David,Rudd,60050,9%,01 March - 31 March"));

            mockMemoryStreamHelper.Setup(ms => ms.LoadFileInfo(It.IsAny <HttpContent>())).Returns(new List <MultipartFileInfo>()
            {
                new MultipartFileInfo()
                {
                    FileName = "info.csv", Stream = stream
                }
            });

            var mockPayslipService = new Mock <IPayslipService>();

            mockPayslipService.Setup(ps => ps.GeneratePayslipForEmployee(It.IsAny <EmployeeInformation>())).Returns(new PayslipInfo());

            //Act
            var controller = new PayslipController(mockPayslipService.Object, mockMemoryStreamHelper.Object);

            controller.Request = requestMsg;
            var response = controller.Upload();

            //Assert
            Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
            Assert.AreEqual("text/csv", response.Content.Headers.ContentType.MediaType.ToString());
        }
Beispiel #17
0
        public void NegativeTest_GetPayslip2()
        {
            var payslipController = new PayslipController();

            payslipController.Request       = new HttpRequestMessage();
            payslipController.Configuration = new HttpConfiguration();
            var employee = new Employee()
            {
                FirstName    = "Uvika",
                LastName     = "Khatri",
                AnnualSalary = -200,
                StartDate    = new DateTime(2018, 06, 30),
                SuperRate    = -3
            };

            var response = (payslipController.CreatePaySlip(employee));

            // Assert
            Assert.AreEqual(response.StatusCode, HttpStatusCode.BadRequest);
        }
Beispiel #18
0
        public void NegativeTest_GetPayslip_ByWrongId_CorrectTaxCalculation()
        {
            var employee1 = new Employee()
            {
                FirstName        = "FirstName1",
                LastName         = "LastName1",
                AnualSalary      = 60050,
                PaymentStartDate = new DateTime(2018, 03, 31),
                SuperRate        = 9
            };

            var employeeControllerSUT = new EmployeeController();
            var id = (employeeControllerSUT.Post(employee1).Result as OkNegotiatedContentResult <int>).Content;

            var SUT = new PayslipController();

            var getResponse = SUT.Get(499999);

            Assert.IsInstanceOfType(getResponse, typeof(NotFoundResult));
        }
Beispiel #19
0
        public void Upload_CsvFileWithBadData_ReturnsBadRequest()
        {
            //Arrange
            var file = new StreamContent(new MemoryStream(new Byte[100]));

            file.Headers.ContentType                 = new MediaTypeHeaderValue("image/jpeg");
            file.Headers.ContentDisposition          = new ContentDispositionHeaderValue("form-data");
            file.Headers.ContentDisposition.FileName = "image.jpeg";

            var content = new MultipartFormDataContent();

            content.Add(file);

            var requestMsg = new HttpRequestMessage();

            requestMsg.Content = content;

            var mockMemoryStreamHelper = new Mock <IMemoryStreamHelper>();
            var stream = new MemoryStream(Encoding.UTF8.GetBytes(@"first name,last name,annual salary,,payment start date
David,Rudd,60050,9%"));

            mockMemoryStreamHelper.Setup(ms => ms.LoadFileInfo(It.IsAny <HttpContent>())).Returns(new List <MultipartFileInfo>()
            {
                new MultipartFileInfo()
                {
                    FileName = "info.csv", Stream = stream
                }
            });
            var mockTaxCalculator = new Mock <IPayslipService>();

            //Act
            var controller = new PayslipController(mockTaxCalculator.Object, mockMemoryStreamHelper.Object);

            controller.Request = requestMsg;
            var response = controller.Upload();

            //Assert
            Assert.AreEqual(HttpStatusCode.BadRequest, response.StatusCode);
            Assert.IsTrue(response.Content.ReadAsStringAsync().Result.StartsWith("The CSV appears to be corrupt"));
        }
Beispiel #20
0
        public void GenerateBulkPayslipInValidInputTest()
        {
            var fileMock = new Mock <IFormFile>();
            var content  = "David,Rudd,60050,9%,,,,01 March – 31 March\nRyan,Chen,120000,10 %,,,01 March – 31 March";
            var fileName = "validinput.csv";

            using (var ms = new MemoryStream())
                using (var writer = new StreamWriter(ms))
                {
                    writer.Write(content);
                    writer.Flush();
                    ms.Position = 0;
                    fileMock.Setup(_ => _.OpenReadStream()).Returns(ms);
                    fileMock.Setup(_ => _.FileName).Returns(fileName);
                    fileMock.Setup(_ => _.Length).Returns(ms.Length);
                    var file = fileMock.Object;
                    var payslipController = new PayslipController(_payslipService);
                    var result            = payslipController.GenerateBulkPayslip(file);
                    Assert.IsNotNull(result);
                    Assert.IsInstanceOf <BadRequestObjectResult>(result);
                }
        }
Beispiel #21
0
        public void Test_GetPayslip_1()
        {
            var payslipController = new PayslipController();

            var employee = new Employee()
            {
                FirstName    = "Uvika",
                LastName     = "Khatri",
                AnnualSalary = 60050,
                StartDate    = new DateTime(2018, 03, 01),
                SuperRate    = 9
            };

            var paySlip = (payslipController.CreatePaySlip(employee) as OkNegotiatedContentResult <Payslip>).Content;

            Assert.IsNotNull(paySlip);
            Assert.AreEqual(5004, paySlip.GrossIncome);
            Assert.AreEqual(922, paySlip.IncomeTax);
            Assert.AreEqual(4082, paySlip.NetIncome);
            Assert.AreEqual(450, paySlip.SuperAnnuation);
            Assert.AreEqual("01 Mar 2018-31 Mar 2018", paySlip.PayPeriod);
        }
Beispiel #22
0
        public void Test_GetPayslip_4()
        {
            var payslipController = new PayslipController();

            var employee = new Employee()
            {
                FirstName    = "Uvika",
                LastName     = "Khatri",
                AnnualSalary = 20000,
                StartDate    = new DateTime(2018, 06, 30),
                SuperRate    = 3
            };

            var paySlip = (payslipController.CreatePaySlip(employee) as OkNegotiatedContentResult <Payslip>).Content;

            Assert.IsNotNull(paySlip);
            Assert.AreEqual(1667, paySlip.GrossIncome);
            Assert.AreEqual(28, paySlip.IncomeTax);
            Assert.AreEqual(1639, paySlip.NetIncome);
            Assert.AreEqual(50, paySlip.SuperAnnuation);
            Assert.AreEqual("01 Jun 2018-30 Jun 2018", paySlip.PayPeriod);
        }
        public void GeneratePayslips()
        {
            var controller        = new PayslipController();
            var payslips          = controller.GeneratePayslip(_employees) as JsonResult;
            var payslipViewModels = payslips?.Data as List <PayslipViewModel>;

            var davidPayslips = payslipViewModels?.Single(x => x.Name == "David Rudd");
            var ryanPayslips  = payslipViewModels?.Single(x => x.Name == "Ryan Chen");

            Assert.IsNotNull(payslipViewModels);

            //
            Assert.AreEqual(davidPayslips?.GrossIncome, 5004);
            Assert.AreEqual(davidPayslips?.IncomeTax, 922);
            Assert.AreEqual(davidPayslips?.NetIncome, 4082);
            Assert.AreEqual(davidPayslips?.Super, 450);

            //
            Assert.AreEqual(ryanPayslips?.GrossIncome, 10000);
            Assert.AreEqual(ryanPayslips?.IncomeTax, 2696);
            Assert.AreEqual(ryanPayslips?.NetIncome, 7304);
            Assert.AreEqual(ryanPayslips?.Super, 1000);
        }
Beispiel #24
0
        public void NegativeTest_GetPayslip_ByWrongId_CorrectTaxCalculation()
        {
            var employeeMock1 = new Mock <Employee>().As <ITaxableEmployee>();

            employeeMock1.Setup(emp => emp.FirstName).Returns("FirstName");
            employeeMock1.Setup(emp => emp.LastName).Returns("LastName");
            employeeMock1.Setup(emp => emp.PaymentStartDate).Returns(new DateTime(2018, 03, 01));
            employeeMock1.Setup(emp => emp.AnualSalary).Returns(60050);
            employeeMock1.Setup(emp => emp.SuperRate).Returns(9);

            List <ITaxableEmployee> taxableEmployees = new List <ITaxableEmployee>();

            taxableEmployees.Add(employeeMock1.Object);

            var mockRepo = new Mock <SalaryWebApp.Models.IProxyRepo <ITaxableEmployee> >();

            mockRepo.Setup(x => x.Entities).Returns(taxableEmployees);
            var SUT = new PayslipController(mockRepo.Object);

            var getResponse = SUT.Get(1);

            Assert.AreEqual("No such employee", (getResponse as System.Web.Http.Results.JsonResult <EmptyResult>).Content.Message);
        }