using Admin.Classes.Commands.Transaction; using Admin.Interfaces.Commands; using Admin.Interfaces.ModelBuilders; using Admin.Models.Transaction; using log4net; using Moq; using System; using System.Linq; using System.Reflection; using Controller = Admin.Controllers.TransactionController; using Dependencies = Admin.Controllers.TransactionControllerDependencies; namespace Admin.UnitTests.Controllers.Transaction { public class TestBase { protected Controller Controller; protected Mock MockLogger = new Mock(); protected Mock> MockListViewModelBuilder = new Mock>(); protected Mock> MockDetailsViewModelBuilder = new Mock>(); protected Mock> MockTransferViewModelBuilder = new Mock>(); protected Mock> MockRefundViewModelBuilder = new Mock>(); protected Mock> MockTransferCommand = new Mock>(); protected Mock> MockUndoTransferCommand = new Mock>(); protected Mock> MockRefundCommand = new Mock>(); protected Mock> MockEmailReceiptCommand = new Mock>(); protected Mock> MockCreateCsvFileForExportCommand = new Mock>(); protected void SetupController() { var dependencies = new Dependencies( MockLogger.Object, MockListViewModelBuilder.Object, MockDetailsViewModelBuilder.Object, MockTransferViewModelBuilder.Object, MockRefundViewModelBuilder.Object, MockTransferCommand.Object, MockUndoTransferCommand.Object, MockRefundCommand.Object, MockEmailReceiptCommand.Object, MockCreateCsvFileForExportCommand.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(); } } }