public void FixModel_ApplyFix()
        {
            // Arrange
            DummyFixModel dummy = InitializeDummyFixModel();

            // Act
            dummy.ApplyFix(dummy);

            // Assert
            byte[] actual   = dummy.FileSystem.ReadAllBytes("index.html");
            byte[] expected = File.ReadAllBytes(@"TestData\FixModel\index_fixed.html");
            actual.Should().Equal(expected);

            dummy.FixLedger.Count.Should().Be(1);
            SortedList <int, int> offsets = dummy.FixLedger[dummy.FileChanges[0].FilePath.ToLower()].Offsets;

            offsets.Count.Should().Be(3);

            offsets.Keys[0].Should().Be(191);
            offsets.Keys[1].Should().Be(199);
            offsets.Keys[2].Should().Be(233);

            offsets[191].Should().Be(1);
            offsets[199].Should().Be(1);
            offsets[233].Should().Be(0);
        }
        private DummyFixModel InitializeDummyFixModel()
        {
            var fileSystem = new DummyFileSystem();

            fileSystem.WriteAllBytes("index.html", File.ReadAllBytes(@"TestData\FixModel\index.html"));

            var fixModel = new DummyFixModel("Test dummy", fileSystem);

            var replacements = new List <ReplacementModel>();

            replacements.Add(new ReplacementModel()
            {
                Offset = 191, DeletedLength = 0, InsertedString = "\""
            });
            replacements.Add(new ReplacementModel()
            {
                Offset = 199, DeletedLength = 0, InsertedString = "\""
            });
            replacements.Add(new ReplacementModel()
            {
                Offset = 233, DeletedLength = 3, InsertedString = "img"
            });
            replacements.ForEach(rm => rm.InsertedBytes = Encoding.UTF8.GetBytes(rm.InsertedString));

            var changeModel = new FileChangeModel()
            {
                FilePath = @"C:\source\index.html"
            };

            replacements.ForEach(r => changeModel.Replacements.Add(r));
            fixModel.FileChanges.Add(changeModel);

            return(fixModel);
        }