/// <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);
        }
Example #2
0
        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);
        }