/// <summary> /// Adds a goal to the database. /// </summary> /// <param name="model">The model.</param> /// <param name="username">The username.</param> /// <returns> /// The response object. /// </returns> public async Task <OrchestratorResponseWrapper <GoalViewModel> > AddGoal(GoalViewModel model, string username) { var response = new OrchestratorResponseWrapper <GoalViewModel>(); try { var request = assembler.NewAddGoalRequest(model, username); var apiResponse = await dataAccess.AddGoal(request); if (!apiResponse.Success) { response.AddErrors(apiResponse.Errors); } else { response.Model = assembler.ProxyToViewModel(apiResponse.Goal); } response.AddWarnings(apiResponse.Warnings); } catch (Exception ex) { var err = errorHelper.Create(ex, username, GetType(), "AddGoal"); response.AddError(err); } return(response); }
public void SetUp() { validViewModel = new GoalViewModel { Amount = 10, Id = Guid.NewGuid(), UserId = Guid.NewGuid() }; validGoalProxy = new GoalProxy { Amount = 10, Id = Guid.NewGuid(), UserId = Guid.NewGuid() }; validManageGoalsViewModel = new ManageGoalsViewModel(); validDeleteGoalRequest = new DeleteGoalRequest { GoalId = validGoalProxy.Id }; validDeleteGoalResponse = new DeleteGoalResponse { DeleteSuccess = true }; validAddGoalRequest = new AddGoalRequest { Goal = validGoalProxy }; validAddGoalResponse = new AddGoalResponse { Goal = validGoalProxy }; validGetGoalRequest = new GetGoalRequest { GoalId = validGoalProxy.Id }; validGetGoalResponse = new GetGoalResponse { Goal = validGoalProxy }; validGetGoalsForUserRequest = new GetGoalsForUserRequest { UserId = validGoalProxy.Id }; validGetGoalsForUserResponse = new GetGoalsForUserResponse { Goals = new List <GoalProxy> { validGoalProxy } }; validEditGoalRequest = new EditGoalRequest { Goal = validGoalProxy }; validEditGoalResponse = new EditGoalResponse { Goal = validGoalProxy }; invalidGoalViewModel = new GoalViewModel { Id = Guid.NewGuid() }; invalidAddGoalRequest = new AddGoalRequest(); invalidAddGoalResponse = new AddGoalResponse { Errors = { new ResponseErrorWrapper() } }; invalidGetGoalRequest = new GetGoalRequest(); invalidGetGoalResponse = new GetGoalResponse { Errors = { new ResponseErrorWrapper() } }; invalidDeleteGoalRequest = new DeleteGoalRequest(); invalidDeleteGoalResponse = new DeleteGoalResponse { Errors = { new ResponseErrorWrapper() } }; invalidGetGoalsForUserRequest = new GetGoalsForUserRequest(); invalidGetGoalsForUserResponse = new GetGoalsForUserResponse { Errors = { new ResponseErrorWrapper() } }; invalidEditGoalRequest = new EditGoalRequest(); invalidEditGoalResponse = new EditGoalResponse { Errors = { new ResponseErrorWrapper() } }; assembler = Substitute.For <IGoalAssembler>(); dataAccess = Substitute.For <IGoalDataAccess>(); assembler.NewAddGoalRequest(validViewModel, validUsername).Returns(validAddGoalRequest); assembler.NewAddGoalRequest(invalidGoalViewModel, validUsername).Returns(invalidAddGoalRequest); assembler.NewAddGoalRequest(null, validUsername).Throws(new Exception("TEST EXCEPTION")); assembler.NewDeleteGoalRequest(validViewModel.Id, validUsername).Returns(validDeleteGoalRequest); assembler.NewDeleteGoalRequest(invalidGoalViewModel.Id, validUsername).Returns(invalidDeleteGoalRequest); assembler.NewDeleteGoalRequest(Guid.Empty, validUsername).Throws(new Exception("TEST EXCEPTION")); assembler.NewGetGoalRequest(validViewModel.Id, validUsername).Returns(validGetGoalRequest); assembler.NewGetGoalRequest(invalidGoalViewModel.Id, validUsername).Returns(invalidGetGoalRequest); assembler.NewGetGoalRequest(Guid.Empty, validUsername).Throws(new Exception("TEST EXCEPTION")); assembler.NewGetGoalsForUserRequest(validViewModel.Id, validUsername).Returns(validGetGoalsForUserRequest); assembler.NewGetGoalsForUserRequest(invalidGoalViewModel.Id, validUsername) .Returns(invalidGetGoalsForUserRequest); assembler.NewGetGoalsForUserRequest(Guid.Empty, validUsername).Throws(new Exception("TEST EXCEPTION")); assembler.NewEditGoalRequest(validViewModel, validUsername).Returns(validEditGoalRequest); assembler.NewEditGoalRequest(invalidGoalViewModel, validUsername).Returns(invalidEditGoalRequest); assembler.NewEditGoalRequest(null, validUsername).Throws(new Exception("TEST EXCEPTION")); assembler.NewManageGoalsViewModel(new List <GoalProxy> { validGoalProxy }) .Returns(validManageGoalsViewModel); dataAccess.AddGoal(validAddGoalRequest).Returns(validAddGoalResponse); dataAccess.AddGoal(invalidAddGoalRequest).Returns(invalidAddGoalResponse); dataAccess.DeleteGoal(validDeleteGoalRequest).Returns(validDeleteGoalResponse); dataAccess.DeleteGoal(invalidDeleteGoalRequest).Returns(invalidDeleteGoalResponse); dataAccess.GetGoal(validGetGoalRequest).Returns(validGetGoalResponse); dataAccess.GetGoal(invalidGetGoalRequest).Returns(invalidGetGoalResponse); dataAccess.GetGoalsForUser(validGetGoalsForUserRequest).Returns(validGetGoalsForUserResponse); dataAccess.GetGoalsForUser(invalidGetGoalsForUserRequest).Returns(invalidGetGoalsForUserResponse); dataAccess.EditGoal(validEditGoalRequest).Returns(validEditGoalResponse); dataAccess.EditGoal(invalidEditGoalRequest).Returns(invalidEditGoalResponse); 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 GoalOrchestrator(dataAccess, assembler, errorHelper); }