/// <summary> /// Obtains the bill category chart data from the database. /// </summary> /// <param name="request">The request.</param> /// <returns> /// The response object. /// </returns> public async Task <GetBillCategoryChartDataResponse> GetBillCategoryChartData( GetBillCategoryChartDataRequest request) { return(await Orchestrate(async delegate { var bills = await billRepository.GetBillsForUser(request.UserId); var data = billDataTransformer.GetBillCategoryChartData(bills); return assembler.NewGetBillCategoryChartDataResponse(data, request.RequestReference); }, request)); }
public void SetUp() { errorHelper = Substitute.For <IErrorHelper>(); assembler = Substitute.For <IChartAssembler>(); billRepository = Substitute.For <IBillRepository>(); billDataTransformer = Substitute.For <IBillDataTransformer>(); expenditureRepository = Substitute.For <IExpenditureRepository>(); expenditureDataTransformer = Substitute.For <IExpenditureDataTransformer>(); validGetBillCategoryChartDataRequest = new GetBillCategoryChartDataRequest { UserId = Guid.NewGuid(), Username = "******" }; validGetBillPeriodChartDataRequest = new GetBillPeriodChartDataRequest { UserId = Guid.NewGuid(), Username = "******" }; validGetExpenditureChartDataRequest = new GetExpenditureChartDataRequest { Month = 1, UserId = Guid.NewGuid(), Username = "******" }; validBills = new List <BillDataModel>(); validExpenditure = new List <ExpenditureDataModel>(); invalidGetBillPeriodChartDataRequest = new GetBillPeriodChartDataRequest(); invalidGetBillCategoryChartDataRequest = new GetBillCategoryChartDataRequest(); invalidGetExpenditureChartDataRequest = new GetExpenditureChartDataRequest(); billRepository.GetBillsForUser(validGetBillCategoryChartDataRequest.UserId).Returns(validBills); billRepository.GetBillsForUser(validGetBillPeriodChartDataRequest.UserId).Returns(validBills); billRepository.GetBillsForUser(Guid.Empty).Throws(new Exception("TEST")); expenditureRepository.GetExpenditureForUserForMonth(validGetExpenditureChartDataRequest.UserId) .Returns(validExpenditure); expenditureRepository.GetExpenditureForUserForMonth(Guid.Empty).Throws(new Exception("TEST")); validData = new List <KeyValuePair <string, int> > { new KeyValuePair <string, int>("TEST", 1) }; billDataTransformer.GetBillCategoryChartData(validBills).Returns(validData); billDataTransformer.GetBillPeriodChartData(validBills).Returns(validData); expenditureDataTransformer.GetRollingExpenditureSum(validExpenditure) .Returns( new List <KeyValuePair <DateTime, double> > { new KeyValuePair <DateTime, double>(DateTime.Now, 1.0) }); validGetBillPeriodChartDataResponse = new GetBillPeriodChartDataResponse { Data = validData }; validGetBillCategoryChartDataResponse = new GetBillCategoryChartDataResponse { Data = validData }; validGetExpenditureChartDataResponse = new GetExpenditureChartDataResponse { Data = new List <KeyValuePair <DateTime, double> > { new KeyValuePair <DateTime, double>(DateTime.Now, 1.0) } }; assembler.NewGetExpenditureChartDataResponse(Arg.Any <IList <KeyValuePair <DateTime, double> > >(), Arg.Any <Guid>()).Returns(validGetExpenditureChartDataResponse); assembler.NewGetBillCategoryChartDataResponse(validData, Arg.Any <Guid>()).Returns(validGetBillCategoryChartDataResponse); assembler.NewGetBillPeriodChartDataResponse(validData, Arg.Any <Guid>()).Returns(validGetBillPeriodChartDataResponse); errorHelper.Create(Arg.Any <Exception>(), Arg.Any <string>(), Arg.Any <Type>(), Arg.Any <string>()) .Returns(new ResponseErrorWrapper()); errorHelper.Create(Arg.Any <string>(), Arg.Any <string>(), Arg.Any <Type>(), Arg.Any <string>()) .Returns(new ResponseErrorWrapper()); orchestrator = new ChartOrchestrator( assembler, billRepository, billDataTransformer, expenditureRepository, expenditureDataTransformer, errorHelper); }
public void SetUp() { userId = Guid.NewGuid(); expenditureId = Guid.NewGuid(); validData = new List <BillDataModel>(); invalidDeleteBillRequest = new DeleteBillRequest(); invalidEditBillRequest = new EditBillRequest(); invalidGetBillsForUserForMonthRequest = new GetBillsForUserForMonthRequest(); invalidGetBillsForUserRequest = new GetBillsForUserRequest(); invalidGetBillRequest = new GetBillRequest(); invalidAddBillRequest = new AddBillRequest(); validBillDataModel = new BillDataModel { Amount = 1, Category = new CategoryDataModel { CreationTime = DateTime.Now, Id = Guid.NewGuid(), Name = "TEST" }, CreationTime = DateTime.Now, CategoryId = Guid.NewGuid(), Id = Guid.NewGuid(), UserId = Guid.NewGuid() }; expenditureProxy = new BillProxy { Amount = 1.0, Category = new CategoryProxy { Id = Guid.NewGuid(), Name = "TEST" }, CategoryId = Guid.NewGuid(), Id = Guid.NewGuid(), UserId = Guid.NewGuid() }; validDeleteBillRequest = new DeleteBillRequest { BillId = Guid.NewGuid(), Username = "******" }; validGetBillsForUserForMonthRequest = new GetBillsForUserForMonthRequest { MonthNumber = 1, UserId = userId, Username = "******" }; validAddBillRequest = new AddBillRequest { Bill = expenditureProxy, Username = "******" }; validGetBillsForUserRequest = new GetBillsForUserRequest { UserId = userId, Username = "******" }; validGetBillRequest = new GetBillRequest { BillId = expenditureId, Username = "******" }; validEditBillRequest = new EditBillRequest { Bill = expenditureProxy, Username = "******" }; validGetBillsForUserResponse = new GetBillsForUserResponse { Bills = new List <BillProxy> { expenditureProxy } }; validGetBillResponse = new GetBillResponse { Bill = expenditureProxy }; validAddBillResponse = new AddBillResponse { Bill = expenditureProxy }; validEditBillResponse = new EditBillResponse { Bill = expenditureProxy }; validDeleteBillResponse = new DeleteBillResponse { DeleteSuccess = true }; validGetBillsForUserForMonthResponse = new GetBillsForUserForMonthResponse { Data = new List <KeyValuePair <DateTime, double> > { new KeyValuePair <DateTime, double>(DateTime.Now, 1.0) } }; assembler = Substitute.For <IBillAssembler>(); repository = Substitute.For <IBillRepository>(); dataTransformer = Substitute.For <IBillDataTransformer>(); repository.AddBill(validBillDataModel).Returns(validBillDataModel); repository.AddBill(null).Throws(new Exception("TEST")); repository.DeleteBill(validDeleteBillRequest.BillId).Returns(true); repository.DeleteBill(invalidDeleteBillRequest.BillId).Throws(new Exception("TEST")); repository.EditBill(validBillDataModel).Returns(validBillDataModel); repository.EditBill(null).Throws(new Exception("TEST")); repository.GetBill(expenditureId).Returns(validBillDataModel); repository.GetBill(Guid.Empty).Throws(new Exception("TEST")); repository.GetBillsForUser(validGetBillsForUserRequest.UserId) .Returns(new List <BillDataModel> { validBillDataModel }); repository.GetBillsForUser(Guid.Empty).Throws(new Exception("TEST")); dataTransformer.GetOutgoingBillsForMonth(Arg.Any <int>(), Arg.Any <List <BillDataModel> >()) .Returns( new List <KeyValuePair <DateTime, double> > { new KeyValuePair <DateTime, double>(DateTime.Now, 1.0) }); dataTransformer.GetBillCategoryChartData(Arg.Any <List <BillDataModel> >()) .Returns(new List <KeyValuePair <string, int> > { new KeyValuePair <string, int>() }); assembler.NewAddBillResponse(validBillDataModel, validAddBillRequest.RequestReference) .Returns(validAddBillResponse); assembler.NewDeleteBillResponse(true, validDeleteBillRequest.BillId) .Returns(validDeleteBillResponse); assembler.NewEditBillResponse( validBillDataModel, validEditBillRequest.RequestReference) .Returns(validEditBillResponse); assembler.NewBillDataModel(expenditureProxy).Returns(validBillDataModel); assembler.NewGetBillsForUserForMonthResponse( Arg.Any <List <KeyValuePair <DateTime, double> > >(), validGetBillsForUserForMonthRequest.RequestReference) .Returns(validGetBillsForUserForMonthResponse); assembler.NewGetBillsForUserResponse( Arg.Any <List <BillDataModel> >(), validGetBillsForUserRequest.RequestReference) .Returns(validGetBillsForUserResponse); assembler.NewDeleteBillResponse(true, validDeleteBillRequest.RequestReference) .Returns(validDeleteBillResponse); assembler.NewGetBillResponse(validBillDataModel, validGetBillRequest.RequestReference) .Returns(validGetBillResponse); errorHelper = Substitute.For <IErrorHelper>(); errorHelper.Create(Arg.Any <Exception>(), Arg.Any <string>(), Arg.Any <Type>(), Arg.Any <string>()) .Returns(new ResponseErrorWrapper()); errorHelper.Create(Arg.Any <string>(), Arg.Any <string>(), Arg.Any <Type>(), Arg.Any <string>()) .Returns(new ResponseErrorWrapper()); orchestrator = new BillOrchestrator(assembler, repository, dataTransformer, errorHelper); }