public async Task <IActionResult> Add(AddGoalRequest request)
        {
            if (!ModelState.IsValid)
            {
                return(Failure());
            }

            return(await _goalService.Add(request));
        }
        /// <summary>
        ///     Adds a goal to the database.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns>
        ///     The response object.
        /// </returns>
        public async Task <AddGoalResponse> AddGoal(AddGoalRequest request)
        {
            return(await Orchestrate(async delegate {
                var dataModel = assembler.NewGoalDataModel(request.Goal);
                var addedModel = await repository.AddGoal(dataModel);

                return assembler.NewAddGoalResponse(addedModel, request.RequestReference);
            }, request));
        }
Exemple #3
0
 public void TearDown()
 {
     orchestrator              = null;
     assembler                 = null;
     dataAccess                = null;
     validViewModel            = null;
     validAddGoalRequest       = null;
     validAddGoalResponse      = null;
     invalidAddGoalRequest     = null;
     invalidAddGoalResponse    = null;
     validDeleteGoalRequest    = null;
     validDeleteGoalResponse   = null;
     invalidDeleteGoalRequest  = null;
     invalidDeleteGoalResponse = null;
     validGetGoalRequest       = null;
     validGetGoalResponse      = null;
     invalidGetGoalRequest     = null;
     invalidGetGoalResponse    = null;
     validGoalProxy            = null;
     invalidGoalViewModel      = null;
 }
        public async Task <IActionResult> Add(AddGoalRequest request)
        {
            var userId = _jwtService.GetUserId();

            if (request.GoalAmount < 0)
            {
                return(Failure());
            }
            var goal = new Goal()
            {
                Name       = request.Name,
                UserId     = userId,
                GoalAmount = request.GoalAmount,
                CurrencyId = request.CurrencyId
            };

            _context.Goals.Add(goal);
            await _context.SaveChangesAsync();

            var addedGoal = _context.Goals.Where(i => i.Id == goal.Id).Include(i => i.Currency).FirstOrDefault();

            return(Success(ConvertToVM(addedGoal)));
        }
Exemple #5
0
        public void SetUp()
        {
            userId        = Guid.NewGuid();
            expenditureId = Guid.NewGuid();

            validData = new List <GoalDataModel>();

            invalidDeleteGoalRequest      = new DeleteGoalRequest();
            invalidEditGoalRequest        = new EditGoalRequest();
            invalidGetGoalsForUserRequest = new GetGoalsForUserRequest();
            invalidGetGoalRequest         = new GetGoalRequest();
            invalidAddGoalRequest         = new AddGoalRequest();

            validGoalDataModel = new GoalDataModel
            {
                Amount       = 1,
                CreationTime = DateTime.Now,
                Id           = Guid.NewGuid(),
                UserId       = Guid.NewGuid()
            };

            expenditureProxy = new GoalProxy {
                Amount = 1.0, Id = Guid.NewGuid(), UserId = Guid.NewGuid()
            };

            validDeleteGoalRequest = new DeleteGoalRequest {
                GoalId = Guid.NewGuid(), Username = "******"
            };

            validAddGoalRequest = new AddGoalRequest {
                Goal = expenditureProxy, Username = "******"
            };

            validGetGoalsForUserRequest = new GetGoalsForUserRequest {
                UserId = userId, Username = "******"
            };

            validGetGoalRequest = new GetGoalRequest {
                GoalId = expenditureId, Username = "******"
            };

            validEditGoalRequest = new EditGoalRequest {
                Goal = expenditureProxy, Username = "******"
            };

            validGetGoalsForUserResponse =
                new GetGoalsForUserResponse {
                Goals = new List <GoalProxy> {
                    expenditureProxy
                }
            };
            validGetGoalResponse = new GetGoalResponse {
                Goal = expenditureProxy
            };
            validAddGoalResponse = new AddGoalResponse {
                Goal = expenditureProxy
            };
            validEditGoalResponse = new EditGoalResponse {
                Goal = expenditureProxy
            };
            validDeleteGoalResponse = new DeleteGoalResponse {
                DeleteSuccess = true
            };

            assembler   = Substitute.For <IGoalAssembler>();
            repository  = Substitute.For <IGoalRepository>();
            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());

            repository.AddGoal(validGoalDataModel).Returns(validGoalDataModel);
            repository.AddGoal(null).Throws(new Exception("TEST"));

            repository.DeleteGoal(validDeleteGoalRequest.GoalId).Returns(true);
            repository.DeleteGoal(invalidDeleteGoalRequest.GoalId).Throws(new Exception("TEST"));

            repository.EditGoal(validGoalDataModel).Returns(validGoalDataModel);
            repository.EditGoal(null).Throws(new Exception("TEST"));

            repository.GetGoal(expenditureId).Returns(validGoalDataModel);
            repository.GetGoal(Guid.Empty).Throws(new Exception("TEST"));

            repository.GetGoalsForUser(validGetGoalsForUserRequest.UserId)
            .Returns(new List <GoalDataModel> {
                validGoalDataModel
            });
            repository.GetGoalsForUser(Guid.Empty).Throws(new Exception("TEST"));

            assembler.NewAddGoalResponse(validGoalDataModel, validAddGoalRequest.RequestReference)
            .Returns(validAddGoalResponse);

            assembler.NewDeleteGoalResponse(true, validDeleteGoalRequest.GoalId).Returns(validDeleteGoalResponse);

            assembler.NewEditGoalResponse(validGoalDataModel, validEditGoalRequest.RequestReference)
            .Returns(validEditGoalResponse);

            assembler.NewGoalDataModel(expenditureProxy).Returns(validGoalDataModel);

            assembler.NewGetGoalsForUserResponse(
                Arg.Any <List <GoalDataModel> >(),
                validGetGoalsForUserRequest.RequestReference)
            .Returns(validGetGoalsForUserResponse);

            assembler.NewDeleteGoalResponse(true, validDeleteGoalRequest.RequestReference)
            .Returns(validDeleteGoalResponse);

            assembler.NewGetGoalResponse(validGoalDataModel, validGetGoalRequest.RequestReference)
            .Returns(validGetGoalResponse);

            orchestrator = new GoalOrchestrator(assembler, repository, errorHelper);
        }
Exemple #6
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);
        }
 /// <summary>
 /// Sends an HTTP POST request to add a goal to the database.
 /// </summary>
 /// <param name="request">The request.</param>
 /// <returns>
 /// The response object.
 /// </returns>
 public async Task <AddGoalResponse> AddGoal(AddGoalRequest request)
 {
     return(await Post <AddGoalResponse>(request));
 }
Exemple #8
0
        public async Task <IHttpActionResult> AddGoal([FromBody] AddGoalRequest request)
        {
            var response = await orchestrator.AddGoal(request);

            return(Ok(response));
        }