From 70ea2df33413fba59cca2a20abe64246ad1672c9 Mon Sep 17 00:00:00 2001 From: jtkech Date: Mon, 20 Jul 2015 02:11:49 +0200 Subject: [PATCH 1/3] Update ContentItem.cs --- src/Orchard/ContentManagement/ContentItem.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Orchard/ContentManagement/ContentItem.cs b/src/Orchard/ContentManagement/ContentItem.cs index 3441ff3e9..30dc1c34e 100644 --- a/src/Orchard/ContentManagement/ContentItem.cs +++ b/src/Orchard/ContentManagement/ContentItem.cs @@ -52,10 +52,11 @@ namespace Orchard.ContentManagement { return true; } } - return false; + result = null; + return true; } return true; } } -} \ No newline at end of file +} From 28643ae7b885850e69f247d1a76f2f2a096cf1bf Mon Sep 17 00:00:00 2001 From: jtkech Date: Mon, 20 Jul 2015 02:23:56 +0200 Subject: [PATCH 2/3] Update ContentPart.cs --- src/Orchard/ContentManagement/ContentPart.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Orchard/ContentManagement/ContentPart.cs b/src/Orchard/ContentManagement/ContentPart.cs index 241edfa55..cdb4bbfbe 100644 --- a/src/Orchard/ContentManagement/ContentPart.cs +++ b/src/Orchard/ContentManagement/ContentPart.cs @@ -74,7 +74,8 @@ namespace Orchard.ContentManagement { return true; } } - return false; + result = null; + return true; } return true; From e8111cef5e159bf479c0e2e6dbfb99b37db6825c Mon Sep 17 00:00:00 2001 From: jtkech Date: Fri, 24 Jul 2015 02:54:01 +0200 Subject: [PATCH 3/3] Update DynamicContentItemTests.cs Adds an unit test for null checking on dynamic ContentItem / ContentPart properties --- .../DynamicContentItemTests.cs | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/src/Orchard.Tests/ContentManagement/DynamicContentItemTests.cs b/src/Orchard.Tests/ContentManagement/DynamicContentItemTests.cs index ba90a629e..0c82d68e8 100644 --- a/src/Orchard.Tests/ContentManagement/DynamicContentItemTests.cs +++ b/src/Orchard.Tests/ContentManagement/DynamicContentItemTests.cs @@ -76,5 +76,39 @@ namespace Orchard.Tests.ContentManagement { Assert.That((object)testingPartDynamic, Is.AssignableTo>()); } + + + [Test] + public void NullCheckingCanBeDoneOnProperties() { + var contentItem = new ContentItem(); + var contentPart = new ContentPart { TypePartDefinition = new ContentTypePartDefinition(new ContentPartDefinition("FooPart"), new SettingsDictionary()) }; + var contentField = new ContentField { PartFieldDefinition = new ContentPartFieldDefinition(new ContentFieldDefinition("FooType"), "FooField", new SettingsDictionary()) }; + + dynamic item = contentItem; + dynamic part = contentPart; + + Assert.That(item.FooPart == null, Is.True); + Assert.That(item.FooPart != null, Is.False); + + contentItem.Weld(contentPart); + + Assert.That(item.FooPart == null, Is.False); + Assert.That(item.FooPart != null, Is.True); + Assert.That(item.FooPart, Is.SameAs(contentPart)); + + Assert.That(part.FooField == null, Is.True); + Assert.That(part.FooField != null, Is.False); + Assert.That(item.FooPart.FooField == null, Is.True); + Assert.That(item.FooPart.FooField != null, Is.False); + + contentPart.Weld(contentField); + + Assert.That(part.FooField == null, Is.False); + Assert.That(part.FooField != null, Is.True); + Assert.That(item.FooPart.FooField == null, Is.False); + Assert.That(item.FooPart.FooField != null, Is.True); + Assert.That(part.FooField, Is.SameAs(contentField)); + Assert.That(item.FooPart.FooField, Is.SameAs(contentField)); + } } }