public async Task ProviderTest_ThrowsErrorIfFileDoesntExists()
        {
            // ARRANGE
            ILogger <FileQrProvider> logger = new Logger <FileQrProvider>(new NullLoggerFactory());
            IQrProvider provider            = new FileQrProvider(logger);
            string      path = Path.Combine(Directory.GetCurrentDirectory(), "file_which_doesnt_exists.png");

            // ACT
            Func <Task> task = async() =>
            {
                await provider.ProvideQrAsync(path);
            };

            // ASSERT
            await Assert.ThrowsExceptionAsync <ApplicationException>(task);
        }
        public async Task ProviderTest_FileExists()
        {
            // ARRANGE
            ILogger <FileQrProvider> logger = new Logger <FileQrProvider>(new NullLoggerFactory());
            IQrProvider provider            = new FileQrProvider(logger);
            string      fileName            = "code.png";
            string      path = Path.Combine(Directory.GetCurrentDirectory(), fileName);

            // ACT
            var result = await provider.ProvideQrAsync(path);

            // ASSERT
            Assert.IsNotNull(result);
            Assert.AreEqual(fileName, result.Name);
            Assert.IsTrue(result.Content.Length > 0);
        }
        public async Task ProviderTest_ThrowsErrorIfArgumentIsNull()
        {
            // ARRANGE
            ILogger <FileQrProvider> logger = new Logger <FileQrProvider>(new NullLoggerFactory());
            IQrProvider provider            = new FileQrProvider(logger);
            string      path = null;

            // ACT
            Func <Task> task = async() =>
            {
                await provider.ProvideQrAsync(path);
            };

            // ASSERT
            await Assert.ThrowsExceptionAsync <ApplicationException>(task);
        }