using Admin.Interfaces.Commands; using Admin.Interfaces.ModelBuilders; using Admin.Models.EReturn; using log4net; using Moq; using System; using System.Linq; using System.Reflection; using Controller = Admin.Controllers.EReturnController; using Dependencies = Admin.Controllers.EReturnControllerDependencies; namespace Admin.UnitTests.Controllers.EReturn { public class TestBase { protected Controller Controller; protected readonly Mock MockLogger = new Mock(); protected readonly Mock> MockListViewModelBuilder = new Mock>(); protected readonly Mock> MockCreateViewModelBuilder = new Mock>(); protected readonly Mock> MockDetailsViewModelBuilder = new Mock>(); protected readonly Mock> MockEditViewModelBuilder = new Mock>(); protected readonly Mock> MockCreateCommand = new Mock>(); protected readonly Mock> MockEditCommand = new Mock>(); protected readonly Mock> MockApproveCommand = new Mock>(); protected readonly Mock> MockDeleteCommand = new Mock>(); protected readonly Mock> MockSubmitCommand = new Mock>(); protected readonly Mock> MockAuthoriseCommand = new Mock>(); protected void SetupController() { var dependencies = new Dependencies( MockLogger.Object, MockListViewModelBuilder.Object, MockCreateViewModelBuilder.Object, MockDetailsViewModelBuilder.Object, MockEditViewModelBuilder.Object, MockCreateCommand.Object, MockEditCommand.Object, MockApproveCommand.Object, MockDeleteCommand.Object, MockSubmitCommand.Object, MockAuthoriseCommand.Object); Controller = new Controller(dependencies); } protected MethodInfo GetMethod(Type attributeType, string name) { return typeof(Controller).GetMethods() .Where(x => x.CustomAttributes.Any(y => y.AttributeType == attributeType)) .Where(x => x.Name == name) .FirstOrDefault(); } } }