public TestController(
     ICardManager cardManager,
     IDoorReaderManager doorReaderManager)
 {
     _cardManager       = cardManager ?? throw new ArgumentNullException(nameof(cardManager));
     _doorReaderManager = doorReaderManager ?? throw new ArgumentNullException(nameof(doorReaderManager));
 }
 public PassageController(
     ICommitManager commitManager,
     ICardManager cardManager,
     IDoorReaderManager doorReaderManager,
     IDoorActionManager doorActionManager)
 {
     _commitManager     = commitManager ?? throw new ArgumentNullException(nameof(commitManager));
     _cardManager       = cardManager ?? throw new ArgumentNullException(nameof(cardManager));
     _doorReaderManager = doorReaderManager ?? throw new ArgumentNullException(nameof(doorReaderManager));
     _doorActionManager = doorActionManager ?? throw new ArgumentNullException(nameof(doorActionManager));
 }
        public DoorReaderManagerTests()
        {
            var serviceProvider = new ServiceCollection()
                                  .AddDbContext <ApplicationContext>(options =>
                                                                     options.UseInMemoryDatabase($"{nameof(DoorReaderManagerTests)}_Db")
                                                                     .UseInternalServiceProvider(
                                                                         new ServiceCollection()
                                                                         .AddEntityFrameworkInMemoryDatabase()
                                                                         .BuildServiceProvider()))
                                  .AddAutoMapper(Assembly.Load("Secure.SecurityDoors.Logic"))
                                  .BuildServiceProvider();

            _applicationContext = serviceProvider.GetRequiredService <ApplicationContext>();
            var mapper = serviceProvider.GetRequiredService <IMapper>();

            _doorReaderManager = new DoorReaderManager(
                mapper,
                _applicationContext);
        }