public Story AddNewStory(long projectId, Story toBeSaved) { toBeSaved.ProjectId = projectId; toBeSaved.CreatedBy = UserId; var response = m_storyRepository.Save(toBeSaved); return response.HasSucceeded ? response.Object : null; }
public void CanAddNewStoryFails() { var story = new Story(); var storyRepo = new Mock<IStoryRepository>(MockBehavior.Strict); storyRepo.Setup(repo => repo.Save(It.Is<Story>(e => e.ProjectId == projectId))) .Returns(new DatabaseOperationResponse()); Assert.IsNull(new CharcoalStoryProvider("stuff",storyRepo.Object, Mock.Of<ITaskRepository>()).AddNewStory(projectId, story)); storyRepo.Verify(); }
public StoryViewModel(Story story) { Id = story.Id; Title = story.Title; Description = story.Description; Estimate = story.Estimate; IterationType = story.IterationType; StoryType = story.StoryType; Status = story.Status; ProjectId = story.ProjectId; Tasks = story.Tasks != null ? story.Tasks.Select(e => new TaskViewModel(e)) : new List<TaskViewModel>(); }
public void CanDeleteExistingStory() { var story = new Story(); story.Title = "My New story"; story.Description = "loooooooo"; story.Status = StoryStatus.Started; story.CreatedBy = m_database.Users.All().ToList<dynamic>()[0].Id; story.ProjectId = m_database.Projects.All().ToList<dynamic>()[0].Id; DatabaseOperationResponse response = m_repository.Save(story); Assert.IsTrue(response.HasSucceeded); Story retrievedStory = m_database.Stories.All().ToList<Story>()[0]; response = m_repository.Delete(retrievedStory.Id); Assert.IsTrue(response.HasSucceeded); var stories = m_database.Stories.All().ToList<Story>(); Assert.AreEqual(0, stories.Count); }
public void CanFindAll() { var story = new Story(); story.Title = "My New story"; story.Description = "loooooooo"; story.Status = StoryStatus.Started; story.CreatedBy = m_database.Users.All().ToList<dynamic>()[0].Id; story.ProjectId = m_database.Projects.All().ToList<dynamic>()[0].Id; DatabaseOperationResponse response = m_repository.Save(story); Assert.IsTrue(response.HasSucceeded); var repository = new TaskRepository(DatabaseHelper.GetConnectionString()); var task = new Task(); task.Description = "Im a task"; task.Assignees = "Dude1, Dude2"; task.IsCompleted = true; task.StoryId = m_database.Stories.All().ToList<dynamic>()[0].Id; response = repository.Save(task); Assert.IsTrue(response.HasSucceeded, response.Description); var task2 = new Task(); task2.Description = "Yes I am a taks"; task2.Assignees = "Dude1, Dude2"; task2.IsCompleted = true; task2.StoryId = m_database.Stories.All().ToList<dynamic>()[0].Id; response = repository.Save(task2); Assert.IsTrue(response.HasSucceeded, response.Description); var stories = m_repository.FindAll(); Assert.AreEqual(1, stories.Count); Assert.AreEqual(2, stories[0].Tasks.Count); Assert.NotNull(stories[0].Project); Assert.AreEqual(story.ProjectId, stories[0].Project.Id); }
public void CanAnalyzeProject_UnplannedStoriesNotFound() { var storyProvider = new Mock<IStoryProvider>(MockBehavior.Strict); var unplannedFeature = new Story { Estimate = 1, Status = StoryStatus.Delivered, StoryType = StoryType.Feature, }; var project = new { Id = 212, Velocity = 3 }; storyProvider.Setup(e => e.GetAllStories(project.Id)).Returns(new List<Story> { unplannedFeature }); var result = new AnalyticsProvider(storyProvider.Object, project.Velocity) .AnalyzeProject(project.Id, j => j.Description.Equals("mcjawn")); Assert.AreEqual(0, result.UnplannedStoriesPoints); storyProvider.Verify(); }
public void CanAnalyzeProjectLabel() { var storyProvider = new Mock<IStoryProvider>(MockBehavior.Strict); var feature1 = new Story { Estimate = 2, Status = StoryStatus.Accepted, StoryType = StoryType.Feature, Tag = "tag" }; var project = new { Id = 212, Velocity = 3 }; storyProvider.Setup(e => e.GetAllStoriesByTag(project.Id, feature1.Tag)).Returns(new List<Story> { feature1}); var result = new AnalyticsProvider(storyProvider.Object, project.Velocity) .AnalyzeStoryTag(project.Id, feature1.Tag, j => j.Description.Equals("mcjawn")); Assert.AreEqual(project.Velocity, result.Velocity.Value); Assert.AreEqual(1, result.FeaturesCount); Assert.AreEqual(2, result.TotalPointsCompleted); storyProvider.Verify(); }
public void GetStories() { var story = new Story {IterationType = IterationType.Backlog}; var storyRepo = new Mock<IStoryRepository>(MockBehavior.Strict); storyRepo.Setup(repo => repo.FindAllByIterationType(projectId,(int)IterationType.Backlog )) .Returns(new List<dynamic>{story}); new CharcoalStoryProvider("stuff",storyRepo.Object, Mock.Of<ITaskRepository>()).GetStories(projectId, IterationType.Backlog); storyRepo.Verify(); }
static bool IsInRange(Story story, DateTime iterationStart, TimeSpan span) { var iterationEnd = iterationStart + span; return (InRange(story.CreatedOn, iterationStart, iterationEnd) || (story.AcceptedOn.HasValue && InRange(story.AcceptedOn.Value, iterationStart, iterationEnd))); }
public void CanUpdateStoryIterationType() { var story = new Story(); story.Title = "My New story"; story.Description = "loooooooo"; story.Status = StoryStatus.Started; story.IterationType= IterationType.Current; story.CreatedBy = m_database.Users.All().ToList<dynamic>()[0].Id; story.ProjectId = m_database.Projects.All().ToList<dynamic>()[0].Id; DatabaseOperationResponse response = m_repository.Save(story); Assert.IsTrue(response.HasSucceeded); Story retrievedStory = response.Object; var storyStatus = StoryStatus.Accepted; Story updatedStory = m_repository.UpdateStoryStatus(retrievedStory.Id, (int)storyStatus); Assert.AreEqual(storyStatus,updatedStory.Status); }
public void CanUpdateExistingStory() { var story = new Story(); story.Title = "My New story"; story.Description = "loooooooo"; story.Status = StoryStatus.Started; story.CreatedBy = m_database.Users.All().ToList<dynamic>()[0].Id; story.ProjectId = m_database.Projects.All().ToList<dynamic>()[0].Id; DatabaseOperationResponse response = m_repository.Save(story); Assert.IsTrue(response.HasSucceeded); Story retrievedStory = m_database.Stories.All().ToList<dynamic>()[0]; retrievedStory.Title = "New Title"; retrievedStory.AcceptedOn= new DateTime(2002,2,2); retrievedStory.Tag = "llol"; retrievedStory.TransitionedOn=new DateTime(2009,8,9); response = m_repository.Update(retrievedStory); Assert.IsTrue(response.HasSucceeded); var stories = m_database.Stories.All().ToList<Story>(); Assert.AreEqual(1, stories.Count); VerifyStory(retrievedStory, stories[0]); }
public void CanSaveStory() { var story = new Story(); story.Title = "My New story"; story.Description = "loooooooo"; story.Status = StoryStatus.Started; story.CreatedBy = m_database.Users.All().ToList<dynamic>()[0].Id; story.ProjectId = m_database.Projects.All().ToList<dynamic>()[0].Id; DatabaseOperationResponse response = m_repository.Save(story); Assert.IsTrue(response.HasSucceeded); var stories = m_database.Stories.All().ToList<Story>(); Assert.AreEqual(1, stories.Count); VerifyStory(story, stories[0]); var responseObject = (Story) response.Object; VerifyStory(responseObject, stories[0]); Assert.IsTrue(responseObject.Id >0); }
public void CannotUpdateNonExisitingStory() { var story = new Story(); story.Title = "My New story"; story.Description = "loooooooo"; story.Status = StoryStatus.Started; story.CreatedBy = m_database.Users.All().ToList<dynamic>()[0].Id; story.ProjectId = m_database.Projects.All().ToList<dynamic>()[0].Id; DatabaseOperationResponse response = m_repository.Update(story); Assert.IsFalse(response.HasSucceeded); }
public bool UpdateStory(Story toStory) { toStory.LastEditedOn = DateTime.UtcNow; toStory.CreatedBy = UserId; return m_storyRepository.Update(toStory).HasSucceeded; }
public void CanAnalyzeProject() { var storyProvider = new Mock<IStoryProvider>(MockBehavior.Strict); var feature1 = new Story { Estimate = 2, Status = StoryStatus.Accepted, StoryType = StoryType.Feature }; var feature2 = new Story { Estimate = 2, Status = StoryStatus.Finished, StoryType = StoryType.Feature }; var feature3 = new Story { Estimate = 2, Status = StoryStatus.Delivered, StoryType = StoryType.Feature }; var bug1 = new Story { Estimate = 2, Status = StoryStatus.Accepted, StoryType = StoryType.Bug }; var bug2 = new Story { Estimate = -1, Status = StoryStatus.UnScheduled, StoryType = StoryType.Bug }; var unschedueldFeature = new Story { Estimate = 2, Status = StoryStatus.UnScheduled, StoryType = StoryType.Feature }; var rejectedFeature = new Story { Estimate = 100, Status = StoryStatus.Rejected, StoryType = StoryType.Feature }; var unplannedFeature = new Story { Estimate = 1, Status = StoryStatus.Delivered, StoryType = StoryType.Feature, Description = "mcjawn" }; var rejectedBug = new Story { Estimate = 100, Status = StoryStatus.Rejected, StoryType = StoryType.Bug }; var chore = new Story { Estimate = 100, Status = StoryStatus.Finished, StoryType = StoryType.Chore }; var stories = new[] { feature1, feature2, feature3, bug1,bug2, unschedueldFeature,unplannedFeature, rejectedBug, rejectedFeature, chore } .ToList(); var project = new {Id = 212, Velocity = 3}; storyProvider.Setup(e => e.GetAllStories(project.Id)).Returns(stories); var result = new AnalyticsProvider(storyProvider.Object, project.Velocity) .AnalyzeProject(project.Id, j => j.Description.Equals("mcjawn")); Assert.AreEqual(project.Velocity,result.Velocity.Value); Assert.AreEqual(6, result.FeaturesCount); Assert.AreEqual(9,result.TotalPointsCompleted); Assert.AreEqual(202, result.TotalPointsLeft); Assert.AreEqual(1, result.UnestimatedStoriesCount); Assert.AreEqual(1, result.UnplannedStoriesPoints); Assert.AreEqual(3, result.TotalBugsCount); Assert.AreEqual(2, result.RemainingBugsCount); storyProvider.Verify(); }
static void VerifyStory(Story expected, Story actual) { Assert.AreEqual(expected.Title, actual.Title); Assert.AreEqual(expected.Description, actual.Description); Assert.AreEqual(expected.Status, actual.Status); Assert.AreEqual(expected.AcceptedOn, actual.AcceptedOn); Assert.AreEqual(expected.Tag, actual.Tag); Assert.AreEqual(expected.TransitionedOn, actual.TransitionedOn); }
static IEnumerable<Story> CreateStories(DateTime date) { var feature1 = new Story { AcceptedOn = date, CreatedOn = date.AddDays(-1), Estimate = 1, StoryType = StoryType.Feature, Status = StoryStatus.Accepted }; var feature2 = new Story { CreatedOn = date.AddDays(-1), Estimate = 1, StoryType = StoryType.Feature, Status = StoryStatus.Finished }; var feature3 = new Story { AcceptedOn = date, CreatedOn = date.AddDays(1), Estimate = 1, StoryType = StoryType.Feature, Status = StoryStatus.Accepted }; var bug1 = new Story { AcceptedOn = date, CreatedOn = date.AddDays(-1), Estimate = 1, StoryType = StoryType.Bug, Status = StoryStatus.Accepted }; var bug2 = new Story { CreatedOn = date.AddDays(-1), Estimate = 1, StoryType = StoryType.Bug, Status = StoryStatus.Finished }; var bug3 = new Story { AcceptedOn = date, CreatedOn = date.AddDays(1), Estimate = 1, StoryType = StoryType.Bug, Status = StoryStatus.Accepted }; return new []{feature1, feature2, feature3, bug1, bug2, bug3}; }
private static bool IsEstimated(Story e) { return e.Estimate.HasValue && e.Estimate >= 0; }