public void Start_Should_Return_The_Return_Value_Of_ProcessStarter_Start() { // ARRANGE const string location = @"c:\mongo\bin\mongod.exe"; var options = new MongodExeOptions(27017, @"c:\temp\radom-path"); var exeLocatorMock = new Mock <IMongoExeLocator>(); exeLocatorMock.Setup(l => l.Locate()).Returns(() => location); var processMock = new Mock <IProcess>(); processMock.SetupAllProperties(); var processStarterMock = new Mock <IProcessStarter>(); processStarterMock.Setup(starter => starter.Start(It.IsAny <ProcessStartInfo>())) .Returns <ProcessStartInfo>(info => processMock.Object); var exeFacade = new MongodExeFacade(exeLocatorMock.Object, processStarterMock.Object); // ACT IProcess process = exeFacade.Start(options); // ASSERT processStarterMock.Verify(starter => starter.Start(It.IsAny <ProcessStartInfo>()), Times.Once()); Assert.True(ReferenceEquals(process, processMock.Object)); }
public void Start_Should_Call_ProcessStarter_With_Correct_Parameters() { // ARRANGE const string location = @"c:\mongo\bin\mongod.exe"; var options = new MongodExeOptions(27017, @"c:\temp\radom-path"); var exeLocatorMock = new Mock <IMongoExeLocator>(); exeLocatorMock.Setup(l => l.Locate()).Returns(() => location); var processStarterMock = new Mock <IProcessStarter>(); processStarterMock.Setup(starter => starter.Start(It.IsAny <ProcessStartInfo>())) .Returns <ProcessStartInfo>(info => { var processMock = new Mock <IProcess>(); processMock.Setup(p => p.StartInfo).Returns(info); return(processMock.Object); }); var exeFacade = new MongodExeFacade(exeLocatorMock.Object, processStarterMock.Object); // ACT IProcess process = exeFacade.Start(options); // ASSERT processStarterMock.Verify(starter => starter.Start(It.IsAny <ProcessStartInfo>()), Times.Once()); Assert.Equal(options.ToString(), process.StartInfo.Arguments); Assert.Equal(location, process.StartInfo.FileName); }
public IProcess Start(MongodExeOptions options) { if (options == null) { throw new ArgumentNullException("options"); } string exeLocation = _exeLocator.Locate(); string exeArgs = options.ToString(); var processStartInfo = new ProcessStartInfo(exeLocation, exeArgs) { CreateNoWindow = true, UseShellExecute = false, RedirectStandardOutput = true, RedirectStandardError = true }; return(_processStarter.Start(processStartInfo)); }
internal static MongoTestServer Start(UInt16 port, IMongoExeLocator mongoExeLocator, IProcessStarter processStarter, IFileSystem fileSystem) { if (mongoExeLocator == null) { throw new ArgumentNullException(nameof(mongoExeLocator)); } if (processStarter == null) { throw new ArgumentNullException(nameof(processStarter)); } if (fileSystem == null) { throw new ArgumentNullException(nameof(fileSystem)); } var exeFacade = new MongodExeFacade(mongoExeLocator, processStarter); string dbPath = fileSystem.CreateTempFolder(); var mongodExeOptions = new MongodExeOptions(port, dbPath); IProcess process = exeFacade.Start(mongodExeOptions); return(new MongoTestServer(port, process, fileSystem, dbPath)); }