using Moq; using ScriptCs.Contracts; using Should; using Xunit; namespace ScriptCs.Tests { public class ScriptHostTests { public class TheGetMethod { private readonly Mock _mockContext = new Mock(); private readonly Mock _mockScriptPackManager = new Mock(); private readonly Mock _mockConsole = new Mock(); private readonly Mock _mockSerializer = new Mock(); private readonly ScriptHost _scriptHost; public TheGetMethod() { _scriptHost = new ScriptHost(_mockScriptPackManager.Object, new ScriptEnvironment(new string[0], _mockConsole.Object, new Printers(_mockSerializer.Object))); _mockScriptPackManager.Setup(s => s.Get()).Returns(_mockContext.Object); } [Fact] public void ShoulGetScriptPackFromScriptPackManagerWhenInvoked() { _scriptHost.Require(); _mockScriptPackManager.Verify(s => s.Get()); } } public class TheConstructor { private readonly Mock _mockConsole = new Mock(); private readonly Mock _mockSerializer = new Mock(); [Fact] public void ShouldSetScriptEnvironment() { var environment = new ScriptEnvironment(new string[0], _mockConsole.Object, new Printers(_mockSerializer.Object)); var scriptHost = new ScriptHost(new Mock().Object, environment); scriptHost.Env.ShouldEqual(environment); } } } }