public void DoesNotThrowOnValidCkan()
        {
            // Arrange
            var sut  = new IsCkanModuleValidator();
            var json = (JObject)ValidCkan.DeepClone();

            // Act
            TestDelegate act = () => sut.Validate(new Metadata(json));

            // Assert
            Assert.That(act, Throws.Nothing,
                        "IsCkanModuleValidator should not throw when passed valid metadata."
                        );
        }
        public void DoesThrowWhenMissingProperty(string propertyName)
        {
            // Arrange
            var sut  = new IsCkanModuleValidator();
            var json = (JObject)ValidCkan.DeepClone();

            json.Remove(propertyName);

            // Act
            TestDelegate act = () => sut.Validate(new Metadata(json));

            // Assert
            Assert.That(act, Throws.Exception,
                        string.Format("IsCkanModuleValidator should throw when {0} is missing.", propertyName)
                        );
        }