public ActionResult AddTask(int projectId, int storyId, string description, string initials) { var task = new Task { Description = description, ParentStoryId = storyId, ProjectId = projectId }; task.Description = AddInitialsToDescription(task, initials); Service.AddNewTask (task); return GetStory (storyId, projectId); }
public void Complete_Doesnt_Save_Task_If_No_Change() { var mockery = new MockRepository(); var projectId = 3; var storyId = 4; var id = 5; var completed = true; var description = "Doin work"; var task = new Task { Description = description, Id = id, ParentStoryId = storyId, ProjectId = projectId, Complete = true }; var storyService = mockery.StrictMock<IStoryService>(); using (mockery.Record()) using (mockery.Ordered()) { Expect.Call(storyService.GetTask(projectId, storyId, id)).Return(task); } using (mockery.Playback()) { var controller = new TaskController(storyService); var result = controller.Complete(id, storyId, projectId, completed); var viewResult = result as PartialViewResult; Assert.NotNull(viewResult); Assert.AreEqual("TaskDetails", viewResult.ViewName); Assert.IsInstanceOf<TaskViewModel>(viewResult.Model); Assert.AreEqual(task, (viewResult.Model as TaskViewModel).Task); } }
public Task AddNewTask(Task task) { var request = BuildPostRequest(); request.Resource = string.Format(SaveNewTaskEndpoint, task.ProjectId, task.ParentStoryId, task.Description); var response = RestClient.Execute<Task>(request); return response.Data; }
public void ActivityProcessingTest() { int storyId; { var story = new Story { Name = "Nouvelle histoire", RequestedById = Constants.UserId, StoryType = StoryType.Feature, Description = "bla bla bla and more bla", ProjectId = Constants.ProjectId }; var savedStory = this.storyService.AddNewStory(Constants.ProjectId, story); var task1 = new Task { Description = "stuff stuff stuff", StoryId = savedStory.Id, ProjectId = Constants.ProjectId }; var task2 = new Task { Description = "stuff stuff stuff", StoryId = savedStory.Id, ProjectId = Constants.ProjectId }; var savedTask1 = this.storyService.AddNewTask(task1); savedStory.Labels = new List<Label>() { "Label1", "Label2" }; savedStory.Estimate = 3; savedStory = this.storyService.UpdateStory(Constants.ProjectId, savedStory); var savedTask2 = this.storyService.AddNewTask(task2); this.storyService.AddComment(savedStory.ProjectId, savedStory.Id, "Comment 1"); this.storyService.AddComment(savedStory.ProjectId, savedStory.Id, "Comment 2"); savedStory.Name = "New story"; savedStory.Deadline = DateTimeOffset.Now.AddDays(10); savedStory.Estimate = 3; savedStory = this.storyService.UpdateStory(Constants.ProjectId, savedStory); storyId = savedStory.Id; } var activities = this.storyService.GetStoryActivity(Constants.ProjectId, storyId); activities = activities.OrderBy(a => a.OccurredAt).ToList(); var accumulatedStoryValues = new Dictionary<string, object>(); var accumulatedTasksValues = new Dictionary<int, Dictionary<string, object>>(); var accumulatedCommentValues = new Dictionary<int, Dictionary<string, object>>(); var accumulatedLabelValues = new Dictionary<int, Dictionary<string, object>>(); var deserializer = new DictionaryDeserializer(); var foundObjects = new List<object>(); foreach (var activity in activities) { foreach (var change in activity.Changes) { if (change.NewValues != null && change.NewValues.Count == 1 && change.NewValues.ContainsKey("updated_at")) continue; // Skip story changes without any significat changes switch (change.Kind) { case ResourceKind.Story: { if (change.NewValues != null) change.NewValues.ToList().ForEach(kp => accumulatedStoryValues[kp.Key] = kp.Value); else if (change.OriginalValues != null) change.OriginalValues.ToList().ForEach(kp => accumulatedStoryValues[kp.Key] = kp.Value); var story = deserializer.Deserialize<Story>(accumulatedStoryValues); if (activity.OccurredAt != DateTimeOffset.MinValue || (change.NewValues != null && !change.NewValues.ContainsKey("updated_at"))) { story.UpdatedAt = activity.OccurredAt; } foundObjects.Add(story); break; } case ResourceKind.Comment: { Dictionary<string, object> values; if (!accumulatedTasksValues.TryGetValue(change.Id, out values)) { values = accumulatedTasksValues[change.Id] = new Dictionary<string, object>(); } if (change.NewValues != null) change.NewValues.ToList().ForEach(kp => values[kp.Key] = kp.Value); else if (change.OriginalValues != null) change.OriginalValues.ToList().ForEach(kp => values[kp.Key] = kp.Value); var comment = deserializer.Deserialize<Comment>(values); if (activity.OccurredAt != DateTimeOffset.MinValue || (change.NewValues != null && !change.NewValues.ContainsKey("updated_at"))) { comment.UpdatedAt = activity.OccurredAt; } foundObjects.Add(comment); break; } case ResourceKind.Task: { Dictionary<string, object> values; if (!accumulatedCommentValues.TryGetValue(change.Id, out values)) { values = accumulatedCommentValues[change.Id] = new Dictionary<string, object>(); } if (change.NewValues != null) change.NewValues.ToList().ForEach(kp => values[kp.Key] = kp.Value); else if (change.OriginalValues != null) change.OriginalValues.ToList().ForEach(kp => values[kp.Key] = kp.Value); var task = deserializer.Deserialize<Task>(values); if (activity.OccurredAt != DateTimeOffset.MinValue || (change.NewValues != null && !change.NewValues.ContainsKey("updated_at"))) { task.UpdatedAt = activity.OccurredAt; } foundObjects.Add(task); break; } case ResourceKind.Label: { Dictionary<string, object> values; if (!accumulatedLabelValues.TryGetValue(change.Id, out values)) { values = accumulatedLabelValues[change.Id] = new Dictionary<string, object>(); } if (change.NewValues != null) change.NewValues.ToList().ForEach(kp => values[kp.Key] = kp.Value); else if (change.OriginalValues != null) change.OriginalValues.ToList().ForEach(kp => values[kp.Key] = kp.Value); var label = deserializer.Deserialize<Label>(values); if (activity.OccurredAt != DateTimeOffset.MinValue || (change.NewValues != null && !change.NewValues.ContainsKey("updated_at"))) { label.UpdatedAt = activity.OccurredAt; } foundObjects.Add(label); break; } default: throw new Exception("Unhandled resource kind: " + change.Kind); } } } Assert.IsNotEmpty(foundObjects); Assert.AreEqual(4, foundObjects.Where(o => o is Story).Count()); Assert.AreEqual(2, foundObjects.Where(o => o is Comment).Count()); Assert.AreEqual(2, foundObjects.Where(o => o is Task).Count()); Assert.AreEqual(2, foundObjects.Where(o => o is Label).Count()); }
public void CanAddGetAndDeleteNewTasks() { var story = new Story { Name = "Nouvelle histoire", RequestedById = Constants.UserId, StoryType = StoryType.Feature, Description = "bla bla bla and more bla", ProjectId = Constants.ProjectId }; var savedStory = this.storyService.AddNewStory(Constants.ProjectId, story); var task = new Task { Description = "stuff stuff stuff", StoryId = savedStory.Id, ProjectId = Constants.ProjectId }; var savedTask = this.storyService.AddNewTask(task); Assert.AreEqual(task.Description, savedTask.Description); var retrievedTask = this.storyService.GetTask(Constants.ProjectId, savedTask.StoryId, savedTask.Id); Assert.NotNull(retrievedTask); Assert.IsTrue(this.storyService.RemoveTask(retrievedTask.ProjectId, task.StoryId, retrievedTask.Id)); }
public void SignUp_No_Initials_Clears_Existing() { var mockery = new MockRepository(); var projectId = 3; var storyId = 4; var id = 5; var initials = ""; var description = "Doin work (AA/FF)"; var task = new Task { Description = description, Id = id, ParentStoryId = storyId, ProjectId = projectId }; var storyService = mockery.StrictMock<IStoryService>(); using (mockery.Record()) using (mockery.Ordered()) { Expect.Call(storyService.GetTask(projectId, storyId, id)).Return(task); storyService.SaveTask(task); } using (mockery.Playback()) { var controller = new TaskController(storyService); var result = controller.SignUp(initials, new[] { string.Format("{0}-{1}-{2}", projectId, storyId, id) }); var viewResult = result as RedirectToRouteResult; Assert.NotNull(viewResult); Assert.False(task.Description.Contains("(AA/FF)")); } }
public void SignUp_Multiple() { var mockery = new MockRepository(); var projectId = 3; var storyId = 4; var id = 5; var id2 = 6; var initials = "NN/GZ"; var description = "Doin work"; var task = new Task { Description = description, Id = id, ParentStoryId = storyId, ProjectId = projectId }; var task2 = new Task { Description = description, Id = id2, ParentStoryId = storyId, ProjectId = projectId }; var storyService = mockery.StrictMock<IStoryService>(); using (mockery.Record()) using (mockery.Ordered()) { Expect.Call(storyService.GetTask(projectId, storyId, id)).Return(task); storyService.SaveTask(task); Expect.Call(storyService.GetTask(projectId, storyId, id2)).Return(task2); storyService.SaveTask(task2); } using (mockery.Playback()) { var controller = new TaskController(storyService); var result = controller.SignUp(initials, new[] { string.Format("{0}-{1}-{2}", projectId, storyId, id), string.Format("{0}-{1}-{2}", projectId, storyId, id2), }); var redirectResult = result as RedirectToRouteResult; Assert.NotNull(redirectResult); //Assert.AreEqual("Get", redirectResult.RouteName); } }
public void SignUp_Lowercase_Initials() { var mockery = new MockRepository(); var projectId = 3; var storyId = 4; var id = 5; var initials = "nn/gz"; var description = "Doin work"; var task = new Task { Description = description, Id = id, ParentStoryId = storyId, ProjectId = projectId }; var storyService = mockery.StrictMock<IStoryService>(); using (mockery.Record()) using (mockery.Ordered()) { Expect.Call(storyService.GetTask(projectId, storyId, id)).Return(task); storyService.SaveTask(task); } using (mockery.Playback()) { var controller = new TaskController(storyService); var result = controller.SignUp(initials, new[] { string.Format("{0}-{1}-{2}", projectId, storyId, id) }); var redirectResult = result as RedirectToRouteResult; Assert.NotNull(redirectResult); Assert.True(task.Description.EndsWith("(NN/GZ)")); } }
private string AddInitialsToDescription(Task task, string initials) { return new TaskViewModel(task).GetDescriptionWithoutOwners() + (string.IsNullOrEmpty(initials) ? "" : (" (" + initials.ToUpper() + ")")); }
public TaskViewModel(Task task) { Task = task; }
public Task AddNewTask(Task task) { var request = BuildPostRequest(); request.Resource = string.Format(TaskEndpoint, task.ProjectId, task.StoryId); request.AddParameter("application/json", task.ToJson(), ParameterType.RequestBody); var savedTask = RestClient.ExecuteRequestWithChecks<Task>(request); savedTask.ProjectId = task.ProjectId; return savedTask; }
public Task AddNewTask(Task task) { var request = BuildPostRequest(); request.Resource = string.Format(SaveNewTaskEndpoint, task.ProjectId, task.ParentStoryId, task.Description); //request.AddParameter("application/xml", toBeSaved.ToXml(), ParameterType.RequestBody); var response = RestClient.Execute<Task>(request); var savedTask = response.Data; savedTask.ParentStoryId = task.ParentStoryId; savedTask.ProjectId = task.ProjectId; return savedTask; }
public void SaveTask(Task task) { var request = BuildPutRequest(); request.Resource = string.Format(TaskEndpoint + "/{2}?task[description]={3}&task[complete]={4}&task[position]={5}", task.ProjectId, task.ParentStoryId, task.Id, HttpUtility.UrlEncode(task.Description), task.Complete.ToString().ToLower(), task.Position); RestClient.Execute(request); }