AzureSiteReplicator.Data.ConfigFile.Save C# (CSharp) Method

Save() public method

public Save ( ) : void
return void
        public void Save()
        {
            XDocument doc = new XDocument();
            XElement root = new XElement("config");

            IEnumerable<SkipRule> skips = SkipRules;
            XElement skipFiles = new XElement("skipRules");
            foreach (SkipRule skip in skips)
            {
                XElement skipRule =
                    new XElement("skipRule", new XAttribute("IsDirectory", skip.IsDirectory), skip.Expression);
                skipFiles.Add(skipRule);
            }

            if (skipFiles.HasElements)
            {
                root.Add(skipFiles);
            }

            doc.Add(root);

            using (Stream stream =
                FileHelper.FileSystem.File.Open(
                    _filePath,
                    FileMode.Create,
                    FileAccess.ReadWrite,
                    FileShare.Read))
            {
                doc.Save(stream);
            }
        }

Usage Example

        public void SaveConfigTest()
        {
            var tests = new[]{
                new List<SkipRule>(),
                new List<SkipRule>(){ new SkipRule(){ Expression ="skip1"}},
                new List<SkipRule>(){new SkipRule(){ Expression = "skip1", IsDirectory = true},
                    new SkipRule(){Expression = "skip2", IsDirectory = false}}
            };

            System.IO.Abstractions.FileBase MockFile = FileHelper.FileSystem.File;

            for (int i = 0; i < tests.Length; i++)
            {
                ConfigFile config = new ConfigFile();
                config.SetSkips(tests[i]);
                config.Save();

                Assert.IsTrue(MockFile.Exists(@"c:\config.xml"));

                config = new ConfigFile();
                config.LoadOrCreate();

                VerifySkipEnumerables(tests[i].AsEnumerable(), config.SkipRules);
            }
        }