public void Dispose_MailMonitorDispose_WasCalled()
        {
            var mockConfigReader   = new Mock <IConfigReader>();
            var mockConfigVerifier = new Mock <IConfigVerifier>();
            var mockMailMonitor    = new Mock <IMailMonitor>();

            var businessLogic = new MailBusinessLogic(mockConfigReader.Object, mockConfigVerifier.Object, mockMailMonitor.Object);

            businessLogic.Dispose();

            mockMailMonitor.Verify(x => x.Dispose(), Times.Once());
        }
        public async Task StartJob_CancellationRequested()
        {
            var mockConfigReader   = new Mock <IConfigReader>();
            var mockConfigVerifier = new Mock <IConfigVerifier>();
            var mockMailMonitor    = new Mock <IMailMonitor>();

            var businessLogic = new MailBusinessLogic(mockConfigReader.Object, mockConfigVerifier.Object, mockMailMonitor.Object);

            Cts.Cancel();
            await businessLogic.StartJob(Token);

            mockConfigReader.Verify(x => x.ReadConfig(), Times.Never);
            mockConfigVerifier.Verify(x => x.Verify(It.IsAny <List <ConfigEntity> >()), Times.Never);
            mockMailMonitor.Verify(x => x.StartMonitor(It.IsAny <List <ConfigEntity> >()), Times.Never);
        }
        public void StartJob_ConfEntitysNotCreated_ExceptionThrown_ZeroValues()
        {
            var mockConfigReader   = new Mock <IConfigReader>();
            var mockConfigVerifier = new Mock <IConfigVerifier>();
            var mockMailMonitor    = new Mock <IMailMonitor>();

            mockConfigReader
            .Setup(x => x.ReadConfig())
            .Returns(new List <ConfigEntity>());

            var    businessLogic = new MailBusinessLogic(mockConfigReader.Object, mockConfigVerifier.Object, mockMailMonitor.Object);
            string message       = "Файл конфигурации пуст!";
            var    ex            = Assert.ThrowsAsync <ArgumentException>(() => businessLogic.StartJob(Token));

            StringAssert.Contains(message, ex.Message);
        }
        public async Task StartJob_ReadConfig_Verify()
        {
            var mockConfigReader   = new Mock <IConfigReader>();
            var mockConfigVerifier = new Mock <IConfigVerifier>();
            var mockMailMonitor    = new Mock <IMailMonitor>();

            List <ConfigEntity> configEntityList = new List <ConfigEntity> {
                ConfigEntity
            };

            mockConfigReader
            .Setup(x => x.ReadConfig())
            .Returns(configEntityList);
            mockConfigVerifier
            .Setup(x => x.Verify(configEntityList))
            .Returns(true);

            var businessLogic = new MailBusinessLogic(mockConfigReader.Object, mockConfigVerifier.Object, mockMailMonitor.Object);
            await businessLogic.StartJob(Token);

            mockConfigReader.Verify();
        }
        public async Task StartJob_StartMonitor_WasCalled()
        {
            var mockConfigReader   = new Mock <IConfigReader>();
            var mockConfigVerifier = new Mock <IConfigVerifier>();
            var mockMailMonitor    = new Mock <IMailMonitor>();

            List <ConfigEntity> configEntityList = new List <ConfigEntity> {
                new ConfigEntity()
            };

            mockConfigReader
            .Setup(x => x.ReadConfig())
            .Returns(configEntityList);
            mockConfigVerifier
            .Setup(x => x.Verify(configEntityList))
            .Returns(true);

            var businessLogic = new MailBusinessLogic(mockConfigReader.Object, mockConfigVerifier.Object, mockMailMonitor.Object);
            await businessLogic.StartJob(Token);

            mockMailMonitor.Verify(x => x.StartMonitor(It.IsAny <List <ConfigEntity> >()), Times.Once());
        }
        public void StartJob_Verify_Config_ExceptionThrown_ReturnFalse()
        {
            var mockConfigReader   = new Mock <IConfigReader>();
            var mockConfigVerifier = new Mock <IConfigVerifier>();
            var mockMailMonitor    = new Mock <IMailMonitor>();

            List <ConfigEntity> configEntityList = new List <ConfigEntity> {
                ConfigEntity
            };

            mockConfigReader
            .Setup(x => x.ReadConfig())
            .Returns(configEntityList);
            mockConfigVerifier
            .Setup(x => x.Verify(configEntityList))
            .Returns(false);

            var    businessLogic = new MailBusinessLogic(mockConfigReader.Object, mockConfigVerifier.Object, mockMailMonitor.Object);
            string message       = "Проверка завершена с ошибкой!";
            var    ex            = Assert.ThrowsAsync <ArgumentException>(() => businessLogic.StartJob(Token));

            StringAssert.Contains(message, ex.Message);
        }