public void SaveShouldInvalidateCache(string message1, string expected)
        {
            var fileStore = new MessageStore(new DirectoryInfo(Environment.CurrentDirectory));

            fileStore.Save(56, message1);
            fileStore.Read(56);
            fileStore.Save(56, expected);

            var actual = fileStore.Read(56);

            Assert.Equal(expected, actual.Single());
        }
        public void ReadExistingMessageLogsCorrectDebugInformation(string message)
        {
            var fileStore = new MessageStore(new DirectoryInfo(Environment.CurrentDirectory));

            fileStore.Save(53, message);
            var spy = new SpySink();

            Log.Logger = new LoggerConfiguration().WriteTo.Sink(spy).MinimumLevel.Debug().CreateLogger();

            fileStore.Read(53);

            Assert.True(spy.Events
                        .Where(le => le.MessageTemplate.Text == "Reading message {id}.")
                        .SelectMany(le => le.Properties)
                        .Where(kvp => kvp.Key == "id")
                        .Select(kvp => kvp.Value)
                        .OfType <ScalarValue>()
                        .Any(sv => sv.Value.Equals(53)));
            Assert.True(spy.Events
                        .Where(le => le.MessageTemplate.Text == "Returning message {id}.")
                        .SelectMany(le => le.Properties)
                        .Where(kvp => kvp.Key == "id")
                        .Select(kvp => kvp.Value)
                        .OfType <ScalarValue>()
                        .Any(sv => sv.Value.Equals(53)));
        }
        public void ReadUsageExample(string expected)
        {
            var fileStore = new MessageStore(new DirectoryInfo(Environment.CurrentDirectory));

            fileStore.Save(49, expected);

            var message = fileStore.Read(49).DefaultIfEmpty("").Single();

            Assert.Equal(expected, message);
        }
        public void ReadReturnsMessage(string expected)
        {
            var fileStore = new MessageStore(new DirectoryInfo(Environment.CurrentDirectory));

            fileStore.Save(44, expected);

            var actual = fileStore.Read(44);

            Assert.Equal(expected, actual.Single());
        }
        public void ReadExistingFileReturnsTrue(string expected)
        {
            var fileStore = new MessageStore(new DirectoryInfo(Environment.CurrentDirectory));

            fileStore.Save(50, expected);

            var actual = fileStore.Read(50);

            Assert.True(actual.Any());
            Assert.Equal(expected, actual.Single());
        }
        public void SaveLogsInformation(string message)
        {
            var spy = new SpySink();

            Log.Logger = new LoggerConfiguration().WriteTo.Sink(spy).CreateLogger();
            var fileStore = new MessageStore(new DirectoryInfo(Environment.CurrentDirectory));

            fileStore.Save(52, message);

            Assert.True(spy.Events
                        .SelectMany(le => le.Properties)
                        .Where(kvp => kvp.Key == "id")
                        .Select(kvp => kvp.Value)
                        .OfType <ScalarValue>()
                        .Any(sv => sv.Value.Equals(52)));
        }
        public void ReadReadsFromCache(
            string shouldBeCached,
            string backDoorMessage)
        {
            var fileStore = new MessageStore(new DirectoryInfo(Environment.CurrentDirectory));

            fileStore.Save(55, shouldBeCached);
            fileStore.Read(55);
            var file = fileStore.GetFileInfo(55);

            File.WriteAllText(file.FullName, backDoorMessage);

            var actual = fileStore.Read(55);

            Assert.Equal(shouldBeCached, actual.Single());
        }