public void WhenDeletingNonExistingProduct_ThenReturnsFalse()
        {
            var manager = Mocks.Of <IPatternManager>().First(x => x.Products == new IProduct[0] && x.IsOpen == true);

            var result = PatternManagerExtensions.Delete(manager, "foo");

            Assert.False(result);
        }
        public void WhenFindingWithAClosedManager_ThenDoesNotFindElements()
        {
            var manager = new Mock <IPatternManager>();

            PatternManagerExtensions.Find(manager.Object, "foo");

            manager.Verify(x => x.Products, Times.Never());
        }
        public void WhenDeletingExistingProduct_ThenDeletesInstanceFromManager()
        {
            var product = Mocks.Of <IProduct>().First(x => x.InstanceName == "Foo");
            var manager = Mocks.Of <IPatternManager>().First(x => x.Products == new[] { product } && x.IsOpen == true);

            PatternManagerExtensions.Delete(manager, "Foo");

            Mock.Get(manager).Verify(x => x.DeleteProduct(product));
        }
        public void WhenFindingExistingProduct_ThenFindsItCaseInsensitively()
        {
            var product = Mocks.Of <IProduct>().First(x => x.InstanceName == "Foo");
            var manager = Mocks.Of <IPatternManager>().First(x => x.Products == new[] { product } && x.IsOpen == true);

            var found = PatternManagerExtensions.Find(manager, "foo");

            Assert.NotNull(found);
        }
 public void WhenDeleteWithEmptyProductName_ThenThrowsArgumentOutOfRangeException()
 {
     Assert.Throws <ArgumentOutOfRangeException>(() => PatternManagerExtensions.Delete(new Mock <IPatternManager>().Object, string.Empty));
 }
 public void WhenDeletingWithNullProductName_ThenThrowsArgumentNullException()
 {
     Assert.Throws <ArgumentNullException>(() => PatternManagerExtensions.Delete(new Mock <IPatternManager>().Object, null));
 }
 public void WhenDeletingWithNullManager_ThenThrowsArgumentNullException()
 {
     Assert.Throws <ArgumentNullException>(() => PatternManagerExtensions.Delete(null, "foo"));
 }