public void SetUp() { assembler = new GoalAssembler(); validDataModel = new GoalDataModel { CreationTime = DateTime.Now, Id = Guid.NewGuid(), Amount = 1, Complete = true, EndDate = DateTime.Now, Name = "TEST", StartDate = DateTime.Now, UserId = Guid.NewGuid() }; validGoals = new List <GoalDataModel> { validDataModel }; validGoalProxy = new GoalProxy { Amount = 1.0, Complete = true, EndDate = DateTime.Now, Id = Guid.NewGuid(), Name = "TEST", StartDate = DateTime.Now, UserId = Guid.NewGuid() }; validGuid = Guid.NewGuid(); }
/// <summary> /// Converts an instance of the <see cref="GoalDataModel"/> class, to a <see cref="GoalProxy"/> instance. /// </summary> /// <param name="dataModel">The data model.</param> /// <returns>The proxy.</returns> private static GoalProxy DataModelToProxy(GoalDataModel dataModel) { return(new GoalProxy { Amount = dataModel.Amount, Complete = dataModel.Complete, UserId = dataModel.UserId, EndDate = dataModel.EndDate, Name = dataModel.Name, Id = dataModel.Id, StartDate = dataModel.StartDate }); }
/// <summary> /// Adds a goal to the database. /// </summary> /// <param name="model">The model.</param> /// <returns> /// The newly added goal. /// </returns> public async Task <GoalDataModel> AddGoal(GoalDataModel model) { using (var context = new DatabaseContext()) { model.Id = Guid.NewGuid(); model.CreationTime = DateTime.Now; context.Goals.Add(model); var rows = await context.SaveChangesAsync(); return(rows > 0 ? model : null); } }
/// <summary> /// Creates a new instance of the <see cref="AddGoalResponse" /> class. /// </summary> /// <param name="addedModel">The added model.</param> /// <param name="requestReference">The request reference.</param> /// <returns> /// The response object /// </returns> /// <exception cref="System.ArgumentNullException"> /// Exception thrown if the data model or request reference are null or empty. /// </exception> public AddGoalResponse NewAddGoalResponse(GoalDataModel addedModel, Guid requestReference) { if (addedModel == null) { throw new ArgumentNullException(nameof(addedModel)); } if (requestReference.Equals(Guid.Empty)) { throw new ArgumentNullException(nameof(requestReference)); } return(new AddGoalResponse { Goal = DataModelToProxy(addedModel), RequestReference = requestReference }); }
/// <summary> /// Updates a goal in the database. /// </summary> /// <param name="model">The updated model.</param> /// <returns> /// The updated data model. /// </returns> /// <exception cref="System.Exception"> /// Exception thrown if the requested goal cannot be found. /// </exception> public async Task <GoalDataModel> EditGoal(GoalDataModel model) { using (var context = new DatabaseContext()) { var toEdit = await GetGoal(model.Id); if (toEdit == null) { throw new Exception(Goal.Error_CouldNotFindGoal); } model.Id = toEdit.Id; model.CreationTime = toEdit.CreationTime; context.Goals.Attach(model); context.Entry(model).State = EntityState.Modified; var rows = await context.SaveChangesAsync(); return(rows > 0 ? model : null); } }
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); }
public void TearDown() { assembler = null; validDataModel = null; validGoals = null; }