Esempio n. 1
0
        public void ShouldBeAbleToSaveProjectWithStatusChanges()
        {
            var model = new ProjectModel
            {
                PersistanceDirectory = ProjectDir
            };

            model.AddProject("Fairy Tales");
            model.AddStory("FT", "First");
            var active = model.GetActiveProject();

            active.Stories[0].Start(DateTime.Today);
            active.Stories[0].Importance = 42;
            active.Stories[0].MarkAsDone(DateTime.Today);

            model.SaveActiveProject();

            model = new ProjectModel
            {
                PersistanceDirectory = ProjectDir
            };
            model.Load();
            active = model.GetActiveProject();
            Assert.AreEqual("Fairy Tales", active.Name);
            Assert.AreEqual("FT", active.Abbreviation);
            Assert.AreEqual(1, active.Stories.Length);
            Assert.IsTrue(active.Stories[0].IsDone);
        }
Esempio n. 2
0
        public void ModelShouldBeAbleToStoreStoryDataWhenSaving()
        {
            const string projectName = "Fairy Tales";

            var model = new ProjectModel();

            model.AddProject(projectName);
            model.AddStory("FT", "Model should be able to store story data when saving");

            model.PersistanceDirectory = ProjectDir;
            model.SaveActiveProject();

            var file = new FileInfo(ProjectDir + "/" + projectName + "/FT.xml");

            var serializer = new XmlSerializer(typeof(Project));

            var reader      = new StreamReader(file.OpenRead());
            var fileContent = reader.ReadToEnd();

            reader.Close();

            var project             = model.GetProject("FT");
            var deserializedProject = (Project)serializer.Deserialize(new StringReader(fileContent));

            Assert.AreEqual(project.Name, deserializedProject.Name);
            Assert.AreEqual(project.Abbreviation, deserializedProject.Abbreviation);

            Assert.AreEqual(project.Stories.Length, deserializedProject.Stories.Length);
            for (var i = 0; i < project.Stories.Length; ++i)
            {
                Assert.AreEqual(project.Stories[i].Name, deserializedProject.Stories[i].Name);
                Assert.AreEqual(project.Stories[i].Abbreviation, deserializedProject.Stories[i].Abbreviation);
            }
        }
Esempio n. 3
0
        public void ShouldConstraintStoryTitlesToXCharactersInStoryList()
        {
            var view  = new NullView();
            var model = new ProjectModel();

            model.AddProject("Fairy Tales");
            model.AddStory("FT", "A story with quite long title that should be abbreviated when presented.");
            var presenter = new BacklogPresenter(view, model, new TitleAbbreviator(35));

            presenter.Present();

            var story = view.ActiveProject.Stories[0];

            Assert.That(story.Name, Is.EqualTo("A story with quite long title that ..."));
        }
Esempio n. 4
0
        public void ModelShouldBeAbleToAddAStoryToAProject()
        {
            var model = new ProjectModel();

            model.AddProject("Fairy Tales");

            model.AddStory("FT", "Add Story Story");
            Project fairyTales = model.GetProject("FT");

            Story[] stories = fairyTales.Stories;
            Assert.AreEqual(1, stories.Length);

            Assert.AreEqual("FT-1", stories[0].Abbreviation);
            Assert.AreEqual("Add Story Story", stories[0].Name);
        }
Esempio n. 5
0
        public void ModelShouldBeAbleToAddStoriesToDifferentProjects()
        {
            var model = new ProjectModel();

            model.AddProject("Fairy Tales");
            model.AddProject("Route Builder");

            model.AddStory("RB", "Add Route");
            model.AddStory("FT", "Add Stories To Different Projects");
            model.AddStory("RB", "Add Route Description");

            Project[] projects = model.ListProjects();

            Assert.AreEqual(2, projects.Length);

            Story[] stories = projects[0].Stories;
            Assert.AreEqual(1, stories.Length);
            Assert.AreEqual("FT-1", stories[0].Abbreviation);

            stories = projects[1].Stories;
            Assert.AreEqual(2, stories.Length);
            Assert.AreEqual("RB-1", stories[0].Abbreviation);
            Assert.AreEqual("RB-2", stories[1].Abbreviation);
        }
Esempio n. 6
0
        public void StoriesCanBeRemovedFromAProject()
        {
            var model = new ProjectModel();

            model.AddProject("Fairy Tales");
            model.AddStory("FT", "Delete Story Story");

            Project fairyTales = model.GetProject("FT");
            Story   story      = fairyTales.Stories[0];

            model.Delete(fairyTales.Abbreviation, story);

            fairyTales = model.GetProject("FT");
            Assert.AreEqual(0, fairyTales.Stories.Length);
        }
Esempio n. 7
0
        public void ShouldOnlyFilterSpecifiedStories()
        {
            var model = new ProjectModel();

            model.AddProject("Fairy Tales");
            model.AddStory("FT", "Don't Filter Me!");

            var filter = new StoryFilter();

            filter.AddStoryFilter <StoryDone>();

            model.AddStoryFilter(filter);
            var activeProject = model.GetActiveProject();

            Assert.AreEqual(1, activeProject.Stories.Length);
        }
Esempio n. 8
0
        public void ShouldBeAbleToFilterOutStories()
        {
            var model = new ProjectModel();

            model.AddProject("Fairy Tales");
            model.AddStory("FT", "Filter Me!");

            var filter = new StoryFilter();

            filter.AddStoryFilter <StoryNotStarted>();

            model.AddStoryFilter(filter);
            var activeProject = model.GetActiveProject();

            Assert.AreEqual(0, activeProject.Stories.Length);
        }
Esempio n. 9
0
        public void StoryNamesShouldBeUpdateable()
        {
            var model = new ProjectModel();

            model.AddProject("Fairy Tales");
            model.AddStory("FT", "Foo Bar Story");

            Project fairyTales = model.GetProject("FT");
            Story   story      = fairyTales.Stories[0];

            story.Name = "Update Story Story";

            model.Update(fairyTales.Abbreviation, story);

            story = fairyTales.Stories[0];
            Assert.AreEqual("Update Story Story", story.Name);
        }
Esempio n. 10
0
        public void ModelShouldBeAbleToLoadProjectsFromPersistance()
        {
            var model = new ProjectModel {
                PersistanceDirectory = ProjectDir
            };

            model.AddProject("Fairy Tales");
            model.AddStory("FT", "Load from persistance story");
            model.SaveActiveProject();

            model = new ProjectModel {
                PersistanceDirectory = ProjectDir
            };
            model.Load();

            var project = model.GetActiveProject();

            Assert.AreEqual("Fairy Tales", project.Name);
            Assert.AreEqual(1, project.Stories.Length);
        }
Esempio n. 11
0
        public void ModelShouldTrunkateFileWhenSerailizeing()
        {
            var model = new ProjectModel();

            model.AddProject("Fairy Tales");
            model.AddStory("FT", "Delete Story");

            model.PersistanceDirectory = ProjectDir;
            model.SaveActiveProject();

            var active = model.GetActiveProject();

            active.Delete("FT-1");

            model.SaveActiveProject();

            model.Load();
            active = model.GetActiveProject();
            Assert.AreEqual(0, active.Stories.Length);
        }
Esempio n. 12
0
        public void ShouldNotFilterOnSave()
        {
            var model = new ProjectModel();

            model.AddProject("Fairy Tales");
            model.AddStory("FT", "Not Started");
            var filter = new StoryFilter();

            filter.AddStoryFilter <StoryNotStarted>();
            model.AddStoryFilter(filter);

            model.PersistanceDirectory = ProjectDir;
            model.SaveActiveProject();

            model = new ProjectModel {
                PersistanceDirectory = ProjectDir
            };
            model.Load();

            var active = model.GetActiveProject();

            Assert.AreEqual(1, active.Stories.Length);
        }
Esempio n. 13
0
        public void NoStoryShouldBeAddedIfNoProjectIsFound()
        {
            var model = new ProjectModel();

            model.AddStory("Foo", "Story");
        }