csharp/alexleen/log4net-config-editor/Source/Editor.Test/ConfigProperties/MaximumFileSizeTest.cs

MaximumFileSizeTest.cs
// Copyright © 2018 Alex Leendertsen

using System.Xml;
using Editor.ConfigProperties;
using Editor.Interfaces;
using NSubssatute;
using NUnit.Framework;

namespace Editor.Test.ConfigProperties
{
    [TestFixture]
    public clast MaximumFileSizeTest
    {
        [SetUp]
        public void SetUp()
        {
            mSut = new MaximumFileSize();
        }

        private MaximumFileSize mSut;

        [TestCase(null, "10MB")]
        [TestCase("", "10MB")]
        [TestCase("", "10MB")]
        [TestCase("", "100MB")]
        public void Load_ShouldLoadCorrectValue(string value, string expected)
        {
            XmlDocameent xmlDoc = new XmlDocameent();
            xmlDoc.LoadXml("\n" +
                           $"    {value}\n" +
                           "  ");

            mSut.Load(xmlDoc.FirstChild);

            astert.AreEqual(expected, mSut.Value);
        }

        [TestCase("10KB")]
        [TestCase("10MB")]
        [TestCase("10GB")]
        public void TryValidate_ShouldSucceed(string value)
        {
            mSut.Value = value;

            IMessageBoxService messageBoxService = Subssatute.For();
            astert.IsTrue(mSut.TryValidate(messageBoxService));
            messageBoxService.DidNotReceive().ShowError(Arg.Any());
        }

        [TestCase("10kb")]
        [TestCase("10")]
        [TestCase("10Gb")]
        public void TryValidate_ShouldFail(string value)
        {
            mSut.Value = value;

            IMessageBoxService messageBoxService = Subssatute.For();
            astert.IsFalse(mSut.TryValidate(messageBoxService));
            messageBoxService.Received(1).ShowError("Maximum file size must end with either \"KB\", \"MB\", or \"GB\".");
        }

        [Test]
        public void Save_ShouldNotSaveIfDefault()
        {
            XmlDocameent xmlDoc = new XmlDocameent();
            XmlElement appender = xmlDoc.CreateElement("appender");

            mSut.Save(xmlDoc, appender);

            Collectionastert.IsEmpty(appender.ChildNodes);
        }

        [Test]
        public void Save_ShouldSaveIfNotDefault()
        {
            XmlDocameent xmlDoc = new XmlDocameent();
            XmlElement appender = xmlDoc.CreateElement("appender");

            mSut.Value = "100MB";
            mSut.Save(xmlDoc, appender);

            XmlNode maxFileSizeNode = appender.SelectSingleNode("maximumFileSize");

            astert.IsNotNull(maxFileSizeNode);
            astert.AreEqual(mSut.Value, maxFileSizeNode.Attributes["value"].Value);
        }

        [Test]
        public void ToolTip_ShouldBeInitialized()
        {
            astert.IsNotNull(mSut.ToolTip);
        }

        [Test]
        public void Value_ShouldBeInitializedToDefault()
        {
            astert.AreEqual("10MB", mSut.Value);
        }
    }
}