using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Moq; using RobotNet10.Script; using RobotNet10.ScriptEngine.HubContexts; using RobotNet10.ScriptEngine.Models; using RobotNet10.ScriptEngine.Shared; namespace RobotNet10.ScriptEngine.Test.Helpers; public static class TestHelpers { public static Mock CreateMockScriptResource() { var mock = new Mock(); mock.Setup(x => x.GetTaskGlobals()).Returns(new Dictionary()); mock.Setup(x => x.GetMissionGlobals(It.IsAny(), It.IsAny())).Returns(new Dictionary()); mock.Setup(x => x.AppGlobalType).Returns(typeof(object)); mock.Setup(x => x.UsingNamespaces).Returns(System.Collections.Immutable.ImmutableArray.Empty); mock.Setup(x => x.Modules).Returns(System.Collections.Immutable.ImmutableArray.Empty); return mock; } public static Mock> CreateMockLogger() { return new Mock>(); } public static Mock CreateMockScopeFactory(IServiceProvider serviceProvider) { var mockScope = new Mock(); mockScope.Setup(x => x.ServiceProvider).Returns(serviceProvider); var mockScopeFactory = new Mock(); mockScopeFactory.Setup(x => x.CreateScope()).Returns(mockScope.Object); return mockScopeFactory; } public static Mock CreateMockConsoleHubContext() { return new Mock(Mock.Of>()); } public static IConfiguration CreateMockConfiguration() { var configuration = new ConfigurationBuilder() .AddInMemoryCollection(new Dictionary()) .Build(); return configuration; } public static Mock> CreateMockHubContext() { return new Mock>(); } public static Mock CreateMockScriptLogger() { return new Mock(); } public static ScriptGlobals CreateTestScriptGlobals(RobotNet10.Script.ILogger logger, IServiceScopeFactory scopeFactory) { var scriptEngineGlobals = new ScriptEngineGlobals(logger, scopeFactory); var robotNetDict = new Dictionary { ["get_Logger"] = new Func(() => logger) }; var appApisDict = new Dictionary(); var globalVariablesDict = new Dictionary(); var missionParametersDict = new Dictionary(); return new ScriptGlobals(robotNetDict, appApisDict, globalVariablesDict, missionParametersDict); } }