using System; using System.Collections.Generic; using System.Text; using Gallio.Framework; using MbUnit.Framework; using MbUnit.Framework.ContractVerifiers; using Moq; using NzbDrone.Core.Providers; using NzbDrone.Core.Providers.Core; using NzbDrone.Core.Repository; using SubSonic.Repository; namespace NzbDrone.Core.Test { [TestFixture] // ReSharper disable InconsistentNaming public class DbConfigControllerTest { [Test] public void Overwrite_existing_value() { const string key = "MY_KEY"; const string value = "MY_VALUE"; //Arrange var repo = new Mock(); var config = new Config { Key = key, Value = value }; repo.Setup(r => r.Single(key)).Returns(config); var target = new ConfigProvider(repo.Object); //Act target.SetValue(key, value); //Assert repo.Verify(c => c.Update(config)); repo.Verify(c => c.Add(It.IsAny()), Times.Never()); } [Test] public void Add_new_value() { const string key = "MY_KEY"; const string value = "MY_VALUE"; //Arrange var repo = new Mock(); repo.Setup(r => r.Single(It.IsAny())).Returns(null).Verifiable(); var target = new ConfigProvider(repo.Object); //Act target.SetValue(key, value); //Assert repo.Verify(); repo.Verify(r => r.Update(It.IsAny()), Times.Never()); repo.Verify(r => r.Add(It.Is(c => c.Key == key && c.Value == value)), Times.Once()); } } }