initial design of domain
All checks were successful
Log every push / log-push (push) Successful in 2s
All checks were successful
Log every push / log-push (push) Successful in 2s
This commit is contained in:
133
theInterfacePro/UnitTests/ProjectClassTests.cs
Normal file
133
theInterfacePro/UnitTests/ProjectClassTests.cs
Normal file
@@ -0,0 +1,133 @@
|
||||
using Code;
|
||||
using Code.Core;
|
||||
|
||||
namespace UnitTests;
|
||||
|
||||
public class ProjectClassTests
|
||||
{
|
||||
|
||||
// 1. projektu se da ima, eventualno opis i ostale informacije recimo datum početka
|
||||
// 2. projektu se dodaju zadaci iz bekloga, tako da se napuni zadacima i spreman je za sprint
|
||||
// 3. projektu se otvori prvi sprint, u sprint se upiše datum početka, upiše se broj sprinta
|
||||
// 4. nakon toga aktivnom sprintu mogu da se dodele user stories.
|
||||
|
||||
[Test]
|
||||
public void StartProjectWithoutStoriesInBacklog_ShouldThrowException()
|
||||
{
|
||||
var (project, story) = SetProjectAndStoryHelperMethod();
|
||||
var expectedException = Assert.Throws<InvalidOperationException>(() => project.Start());
|
||||
Assert.That(expectedException.Message, Is.EqualTo("Project must contain at least one task in backlog to be started."));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void AssignStoryToCurrentSprint_WhenStoryExistsInBacklog_ShouldRemoveStoryFromBacklog()
|
||||
{
|
||||
var (project, story) = SetProjectAndStoryHelperMethod();
|
||||
project.AddToBacklog(story);
|
||||
project.Start(); //projkat zapocet - ali i pre toga mogu da se dodaju taskovi u backlog
|
||||
project.AssignStoryToCurrentSprint(story); //medjutim assignStory ne moze pre zvanicnog starovanja projekta
|
||||
Assert.That(project.Backlog.Any(x => x.Title == story.Title), Is.False);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void AssignStoryToCurrentSprint_WhenStoryExistsInBacklog_ShouldAddStoryToActiveSprint()
|
||||
{
|
||||
var (project, story) = SetProjectAndStoryHelperMethod();
|
||||
project.AddToBacklog(story);
|
||||
project.Start();
|
||||
project.AssignStoryToCurrentSprint(story);
|
||||
var activeSprint = project.Sprints.Single(x => x.IsActive);
|
||||
Assert.That(activeSprint.UserStories.Any(x => x.Title == story.Title), Is.True);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Project_EndSprint_IfNoSprintsExceptionMustBeThrown()
|
||||
{
|
||||
var (project, story) = SetProjectAndStoryHelperMethod();
|
||||
|
||||
var expectedException = Assert.Throws<InvalidOperationException>(() => project.EndSprint());
|
||||
Assert.That(expectedException.Message, Is.EqualTo("No sprints to be ended."));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Project_EndSprint_WhenEndingOldSprintOldMustBeInactiveAndNewOneMustBeCreatedAndActivated()
|
||||
{
|
||||
var (project, story) = SetProjectAndStoryHelperMethod();
|
||||
project.AddToBacklog(story);
|
||||
project.Start();
|
||||
project.AssignStoryToCurrentSprint(story);
|
||||
project.EndSprint();
|
||||
project.AddToBacklog(story);
|
||||
project.AssignStoryToCurrentSprint(story);
|
||||
|
||||
foreach(var sprint in project.Sprints)
|
||||
Console.WriteLine(sprint.IsActive + " " + sprint.SprintNumber);
|
||||
Assert.That(project.Sprints.Count, Is.EqualTo(2));
|
||||
Assert.That(project.Sprints[1].IsActive, Is.True);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void ShouldThrowExceptionIfUserTryToEndEndedSprint()
|
||||
{
|
||||
var (project, story) = SetProjectAndStoryHelperMethod();
|
||||
var expectedException = Assert.Throws<InvalidOperationException>(() => project.EndSprint());
|
||||
Assert.That(expectedException.Message, Is.EqualTo("No sprints to be ended."));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void EndProject_WhenNoAvailableStoriesNewSprintShouldNotBeStarted()
|
||||
{
|
||||
var (project, story) = SetProjectAndStoryHelperMethod();
|
||||
story.IsComplete = true;
|
||||
project.AddToBacklog(story);
|
||||
// project.CreateNewSprint() //cant access to this method so test passes
|
||||
Assert.Pass();
|
||||
}
|
||||
|
||||
public void WhenOneSprintEndsAnotherAutomaticlyStarts()
|
||||
{
|
||||
// var (project, story) = SetProjectAndStoryHelperMethod();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void StartProject_ShouldCreateFirstActiveSprint()
|
||||
{
|
||||
var (project, story) = SetProjectAndStoryHelperMethod();
|
||||
project.AddToBacklog(story);
|
||||
project.Start();
|
||||
|
||||
// Assert
|
||||
Assert.That(project.Sprints.Count, Is.EqualTo(1));
|
||||
Assert.That(project.Sprints[0].SprintNumber, Is.EqualTo(1));
|
||||
Assert.That(project.Sprints[0].IsActive, Is.True);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void StartProject_WhenProjectAlreadyHasActiveSprint_ShouldThrowException()
|
||||
{
|
||||
// Arrange
|
||||
var (project, _) = SetProjectAndStoryHelperMethod();
|
||||
project.AddToBacklog(new UserStory() {Title = "Create project dashboard"});
|
||||
project.Start();
|
||||
|
||||
// Act + Assert
|
||||
var exception = Assert.Throws<InvalidOperationException>(() => project.Start());
|
||||
Assert.That(exception!.Message, Does.Contain("Project already started and has active sprint."));
|
||||
}
|
||||
|
||||
public (Project, UserStory) SetProjectAndStoryHelperMethod()
|
||||
{
|
||||
// Arrange
|
||||
var project = new Project(
|
||||
name: "My Platform",
|
||||
description: "Test project",
|
||||
sourceCodeRootPath: "/src");
|
||||
|
||||
var story = new UserStory
|
||||
{
|
||||
Title = "Create project dashboard"
|
||||
};
|
||||
|
||||
return (project, story);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user