public void StartNewStartsANewContext()
 {
     var path = Path.Combine(
         Environment.CurrentDirectory,
         "Test",
         "20100101120101");
     var writerMock = new Mock<XmlWriter>(MockBehavior.Strict);
     writerMock.Setup(w => w.WriteStartElement(null, "project", null)).Verifiable();
     writerMock.MockWriteAttributeString("name", "Test");
     writerMock.MockWriteElementString("start", "2010-01-01T12:01:01");
     var clockMock = new Mock<IClock>(MockBehavior.Strict);
     clockMock.Setup(c => c.Now).Returns(new DateTime(2010, 1, 1, 12, 1, 1));
     var fileSystemMock = new Mock<IFileSystem>(MockBehavior.Strict);
     fileSystemMock.Setup(fs => fs.EnsureFolderExists(path));
     fileSystemMock.Setup(fs => fs.CreateXmlWriter(Path.Combine(path, "build.log"))).Returns(writerMock.Object);
     var factory = new TaskExecutionFactory
                       {
                           Clock = clockMock.Object,
                           FileSystem = fileSystemMock.Object
                       };
     var project = new Project("Test");
     var request = new IntegrationRequest("Testing");
     var actual = factory.StartNew(project, request);
     Assert.IsNotNull(actual);
     Assert.AreSame(project, actual.Project);
     Assert.AreSame(request, actual.Request);
     writerMock.Verify();
 }
 public void StartChildStartsANewChildContext()
 {
     var writerMock = new Mock<XmlWriter>(MockBehavior.Strict);
     writerMock.Setup(w => w.WriteStartElement(null, "task", null)).Verifiable();
     writerMock.MockWriteAttributeString("name", "TestComment");
     writerMock.MockWriteAttributeString("type", "Comment");
     writerMock.MockWriteElementString("start", "2010-01-01T12:01:01");
     var clockMock = new Mock<IClock>(MockBehavior.Strict);
     clockMock.Setup(c => c.Now).Returns(new DateTime(2010, 1, 1, 12, 1, 1));
     var task = new Comment("TestComment");
     var context = new TaskExecutionContext(
         new TaskExecutionParameters
             {
                 XmlWriter = writerMock.Object,
                 Clock = clockMock.Object
             });
     var child = context.StartChild(task);
     Assert.IsNotNull(child);
     Assert.AreSame(context, child.Parent);
     Assert.AreSame(context.ModificationSets, child.ModificationSets);
     writerMock.Verify();
 }
 public void ImportFileMovesFile()
 {
     var source = "C:\\data.tst";
     var destination = Path.Combine(
         Environment.CurrentDirectory,
         "Test",
         "20100101120101",
         Path.GetFileName(source));
     var writerMock = new Mock<XmlWriter>(MockBehavior.Strict);
     writerMock.Setup(w => w.WriteStartElement(null, "file", null)).Verifiable();
     writerMock.MockWriteAttributeString("time", "2010-01-01T12:01:01");
     writerMock.Setup(w => w.WriteString(Path.GetFileName(destination))).Verifiable();
     writerMock.Setup(w => w.WriteEndElement()).Verifiable();
     var fileSystemMock = new Mock<IFileSystem>(MockBehavior.Strict);
     fileSystemMock.Setup(fs => fs.MoveFile(source, destination)).Verifiable();
     var clockMock = new Mock<IClock>(MockBehavior.Strict);
     clockMock.Setup(c => c.Now).Returns(new DateTime(2010, 1, 1, 12, 1, 1));
     var context = new TaskExecutionContext(
         new TaskExecutionParameters
             {
                 XmlWriter = writerMock.Object,
                 FileSystem = fileSystemMock.Object,
                 Clock = clockMock.Object,
                 Project = new Project("Test"),
                 BuildName = "20100101120101"
             });
     context.ImportFile(source, true);
     writerMock.Verify();
     fileSystemMock.Verify();
 }
 public void StartOutputStreamStartsANewStream()
 {
     var source = "data.tst";
     var destination = Path.Combine(
         Environment.CurrentDirectory,
         "Test",
         "20100101120101",
         source);
     var writerMock = new Mock<XmlWriter>(MockBehavior.Strict);
     writerMock.Setup(w => w.WriteStartElement(null, "file", null)).Verifiable();
     writerMock.MockWriteAttributeString("time", "2010-01-01T12:01:01");
     writerMock.Setup(w => w.WriteString(source)).Verifiable();
     writerMock.Setup(w => w.WriteEndElement()).Verifiable();
     var fileSystemMock = new Mock<IFileSystem>(MockBehavior.Strict);
     var expected = new MemoryStream();
     fileSystemMock.Setup(fs => fs.OpenFileForWrite(destination)).Returns(expected).Verifiable();
     var clockMock = new Mock<IClock>(MockBehavior.Strict);
     clockMock.Setup(c => c.Now).Returns(new DateTime(2010, 1, 1, 12, 1, 1));
     var context = new TaskExecutionContext(
         new TaskExecutionParameters
             {
                 XmlWriter = writerMock.Object,
                 FileSystem = fileSystemMock.Object,
                 Clock = clockMock.Object,
                 Project = new Project("Test"),
                 BuildName = "20100101120101"
             });
     var actual = context.StartOutputStream(source);
     writerMock.Verify();
     fileSystemMock.Verify();
     Assert.AreSame(expected, actual);
 }
 public void AddEntryToBuildLogAddsElement()
 {
     var writerMock = new Mock<XmlWriter>(MockBehavior.Strict);
     writerMock.Setup(w => w.WriteStartElement(null, "entry", null)).Verifiable();
     writerMock.MockWriteAttributeString("time", "2010-01-01T12:01:01");
     writerMock.Setup(w => w.WriteString("This is a test")).Verifiable();
     writerMock.Setup(w => w.WriteEndElement()).Verifiable();
     var clockMock = new Mock<IClock>(MockBehavior.Strict);
     clockMock.Setup(c => c.Now).Returns(new DateTime(2010, 1, 1, 12, 1, 1));
     var context = new TaskExecutionContext(
         new TaskExecutionParameters
             {
                 XmlWriter = writerMock.Object,
                 Clock = clockMock.Object
             });
     context.AddEntryToBuildLog("This is a test");
     writerMock.Verify();
 }