public void Write_When_File_Is_Empty_Template()
        {
            // Arrange
            var xmlEditor = new XmlEditor(EmptyTemplatePath);

            // Act
            xmlEditor.Write(null);

            // Assert
            File.Exists(EmptyTemplatePath).ShouldBeTrue();
            var doc = XDocument.Load(EmptyTemplatePath);

            doc.Declaration.ShouldNotBeNull();
            doc.Root.HasElements.ShouldBeFalse();
            doc.Root.Name.ShouldBe(TagName.Library);
        }
        public void Write_When_Newspaper_Is_Added()
        {
            // Arrange
            var entities = new List <EntityBase>
            {
                _newspaper
            };

            var xmlEditor = new XmlEditor(NewspaperXmlPath);

            // Act
            xmlEditor.Write(entities);

            // Assert
            File.Exists(NewspaperXmlPath).ShouldBeTrue();
            var doc = XDocument.Load(NewspaperXmlPath);

            doc.Declaration.ShouldNotBeNull();
            doc.Root.HasElements.ShouldBeTrue();
            CheckExpectedNewspaperElement(doc.Root.Elements().First());
        }
        public void Write_Optional_Field_Works_As_Expected()
        {
            // Arrange
            _newspaper.Number = null;
            var entities = new List <EntityBase>
            {
                _newspaper
            };

            var xmlEditor = new XmlEditor(OptionalFieldNumberWritePath);

            // Act
            xmlEditor.Write(entities);

            // Assert
            File.Exists(OptionalFieldNumberWritePath).ShouldBeTrue();
            var doc = XDocument.Load(OptionalFieldNumberWritePath);

            doc.Declaration.ShouldNotBeNull();
            doc.Root.HasElements.ShouldBeTrue();
            doc.Root.Elements(TagName.Number).FirstOrDefault().ShouldBeNull();
        }
        public void Write_When_Different_Entities_Were_Added()
        {
            // Arrange
            var entities = new List <EntityBase>
            {
                _book, _newspaper, _patent
            };

            var xmlEditor = new XmlEditor(XmlPath);

            // Act
            xmlEditor.Write(entities);

            // Assert
            File.Exists(XmlPath).ShouldBeTrue();
            var doc = XDocument.Load(XmlPath);

            doc.Declaration.ShouldNotBeNull();
            doc.Root.Elements().Count().ShouldBe(3);
            CheckExpectedBookElement(doc.Root.Elements().First());
            CheckExpectedNewspaperElement(doc.Root.Elements().ElementAt(1));
            CheckExpectedPatentElement(doc.Root.Elements().Last());
        }