From e57a2d7649284a945b63d883419a21292cd2de3d Mon Sep 17 00:00:00 2001 From: Vedant Koditkar Date: Sat, 16 Jul 2022 18:37:09 +0530 Subject: [PATCH 1/2] =?UTF-8?q?add=20ability=20to=20clear=20date=20propert?= =?UTF-8?q?y=20=E2=9C=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Src/Notion.Client/Models/PropertyValue/DatePropertyValue.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Src/Notion.Client/Models/PropertyValue/DatePropertyValue.cs b/Src/Notion.Client/Models/PropertyValue/DatePropertyValue.cs index cc0818ae..aeb3cd8e 100644 --- a/Src/Notion.Client/Models/PropertyValue/DatePropertyValue.cs +++ b/Src/Notion.Client/Models/PropertyValue/DatePropertyValue.cs @@ -13,7 +13,7 @@ public class DatePropertyValue : PropertyValue /// /// Date /// - [JsonProperty("date")] + [JsonProperty("date", NullValueHandling = NullValueHandling.Include)] public Date Date { get; set; } } From 2e9767c5a6daadf8fd5c8a2072c360fc456bb509 Mon Sep 17 00:00:00 2001 From: Vedant Koditkar Date: Sat, 16 Jul 2022 18:37:34 +0530 Subject: [PATCH 2/2] =?UTF-8?q?Add=20&=20refactor=20test=20cases=20?= =?UTF-8?q?=E2=9C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IPageClientTests.cs | 77 +++++++++++++++++-- 1 file changed, 72 insertions(+), 5 deletions(-) diff --git a/Test/Notion.IntegrationTests/IPageClientTests.cs b/Test/Notion.IntegrationTests/IPageClientTests.cs index ae1e317b..a2c73162 100644 --- a/Test/Notion.IntegrationTests/IPageClientTests.cs +++ b/Test/Notion.IntegrationTests/IPageClientTests.cs @@ -11,6 +11,7 @@ namespace Notion.IntegrationTests public class IPageClientTests { private readonly INotionClient _client; + private readonly string _databaseId; public IPageClientTests() { @@ -20,6 +21,7 @@ public IPageClientTests() }; _client = NotionClientFactory.Create(options); + _databaseId = Environment.GetEnvironmentVariable("DATABASE_ID") ?? "f86f2262-0751-40f2-8f63-e3f7a3c39fcb"; } [Fact] @@ -27,7 +29,7 @@ public async Task CreateAsync_CreatesANewPage() { PagesCreateParameters pagesCreateParameters = PagesCreateParametersBuilder.Create(new DatabaseParentInput { - DatabaseId = "f86f2262-0751-40f2-8f63-e3f7a3c39fcb" + DatabaseId = _databaseId }) .AddProperty("Name", new TitlePropertyValue { @@ -48,7 +50,7 @@ public async Task CreateAsync_CreatesANewPage() page.Should().NotBeNull(); page.Parent.Should().BeOfType().Which - .DatabaseId.Should().Be("f86f2262-0751-40f2-8f63-e3f7a3c39fcb"); + .DatabaseId.Should().Be(_databaseId); page.Properties.Should().ContainKey("Name"); page.Properties["Name"].Should().BeOfType().Which @@ -65,7 +67,7 @@ public async Task Bug_unable_to_create_page_with_select_property() { PagesCreateParameters pagesCreateParameters = PagesCreateParametersBuilder.Create(new DatabaseParentInput { - DatabaseId = "f86f2262-0751-40f2-8f63-e3f7a3c39fcb" + DatabaseId = _databaseId }) .AddProperty("Name", new TitlePropertyValue { @@ -93,7 +95,7 @@ public async Task Bug_unable_to_create_page_with_select_property() page.Should().NotBeNull(); page.Parent.Should().BeOfType().Which - .DatabaseId.Should().Be("f86f2262-0751-40f2-8f63-e3f7a3c39fcb"); + .DatabaseId.Should().Be(_databaseId); page.Properties.Should().ContainKey("Name"); page.Properties["Name"].Should().BeOfType().Which @@ -110,7 +112,7 @@ public async Task Test_RetrievePagePropertyItemAsync() { PagesCreateParameters pagesCreateParameters = PagesCreateParametersBuilder.Create(new DatabaseParentInput { - DatabaseId = "f86f2262-0751-40f2-8f63-e3f7a3c39fcb" + DatabaseId = _databaseId }) .AddProperty("Name", new TitlePropertyValue { @@ -155,5 +157,70 @@ public async Task Test_RetrievePagePropertyItemAsync() Archived = true }); } + + [Fact] + public async Task Test_UpdatePageProperty_with_date_as_null() + { + // setup - add property to db and create a page with the property having a date + + string datePropertyName = "Test Date Property"; + var updateDatabaseParameters = new DatabasesUpdateParameters(); + updateDatabaseParameters.Properties = new Dictionary + { + { "Name", new TitleUpdatePropertySchema { Title = new Dictionary() } }, + { "Test Date Property", new DateUpdatePropertySchema{ Date = new Dictionary() } } + }; + + PagesCreateParameters pagesCreateParameters = PagesCreateParametersBuilder.Create(new DatabaseParentInput + { + DatabaseId = _databaseId + }) + .AddProperty("Name", new TitlePropertyValue + { + Title = new List + { + new RichTextText + { + Text = new Text + { + Content = "Test Page Title" + } + } + } + }) + .AddProperty(datePropertyName, new DatePropertyValue + { + Date = new Date() + { + Start = Convert.ToDateTime("2020-12-08T12:00:00Z"), + End = Convert.ToDateTime("2025-12-08T12:00:00Z") + } + }) + .Build(); + + var updatedDb = await _client.Databases.UpdateAsync(_databaseId, updateDatabaseParameters); + + var page = await _client.Pages.CreateAsync(pagesCreateParameters); + + var setDate = page.Properties[datePropertyName] as DatePropertyValue; + + setDate?.Date?.Start.Should().Be(Convert.ToDateTime("2020-12-08T12:00:00Z")); + + // verify + IDictionary testProps = new Dictionary(); + testProps.Add(datePropertyName, new DatePropertyValue() { Date = null }); + + var updatedPage = await _client.Pages.UpdateAsync(page.Id, new PagesUpdateParameters + { + Properties = testProps + }); + + var verifyDate = updatedPage.Properties[datePropertyName] as DatePropertyValue; + + verifyDate?.Date.Should().BeNull(); + + //cleanup + await _client.Blocks.DeleteAsync(page.Id); + } } }