Skip to content

Commit

Permalink
Merge pull request #273 from notion-dotnet/237-add-ability-to-clear-d…
Browse files Browse the repository at this point in the history
…ate-property

Add ability to clear date property 💖
  • Loading branch information
KoditkarVedant authored Jul 16, 2022
2 parents db8700c + 2e9767c commit 5de4799
Show file tree
Hide file tree
Showing 2 changed files with 73 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ public class DatePropertyValue : PropertyValue
/// <summary>
/// Date
/// </summary>
[JsonProperty("date")]
[JsonProperty("date", NullValueHandling = NullValueHandling.Include)]
public Date Date { get; set; }
}

Expand Down
77 changes: 72 additions & 5 deletions Test/Notion.IntegrationTests/IPageClientTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ namespace Notion.IntegrationTests
public class IPageClientTests
{
private readonly INotionClient _client;
private readonly string _databaseId;

public IPageClientTests()
{
Expand All @@ -20,14 +21,15 @@ public IPageClientTests()
};

_client = NotionClientFactory.Create(options);
_databaseId = Environment.GetEnvironmentVariable("DATABASE_ID") ?? "f86f2262-0751-40f2-8f63-e3f7a3c39fcb";
}

[Fact]
public async Task CreateAsync_CreatesANewPage()
{
PagesCreateParameters pagesCreateParameters = PagesCreateParametersBuilder.Create(new DatabaseParentInput
{
DatabaseId = "f86f2262-0751-40f2-8f63-e3f7a3c39fcb"
DatabaseId = _databaseId
})
.AddProperty("Name", new TitlePropertyValue
{
Expand All @@ -48,7 +50,7 @@ public async Task CreateAsync_CreatesANewPage()

page.Should().NotBeNull();
page.Parent.Should().BeOfType<DatabaseParent>().Which
.DatabaseId.Should().Be("f86f2262-0751-40f2-8f63-e3f7a3c39fcb");
.DatabaseId.Should().Be(_databaseId);

page.Properties.Should().ContainKey("Name");
page.Properties["Name"].Should().BeOfType<TitlePropertyValue>().Which
Expand All @@ -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
{
Expand Down Expand Up @@ -93,7 +95,7 @@ public async Task Bug_unable_to_create_page_with_select_property()

page.Should().NotBeNull();
page.Parent.Should().BeOfType<DatabaseParent>().Which
.DatabaseId.Should().Be("f86f2262-0751-40f2-8f63-e3f7a3c39fcb");
.DatabaseId.Should().Be(_databaseId);

page.Properties.Should().ContainKey("Name");
page.Properties["Name"].Should().BeOfType<TitlePropertyValue>().Which
Expand All @@ -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
{
Expand Down Expand Up @@ -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<string, IUpdatePropertySchema>
{
{ "Name", new TitleUpdatePropertySchema { Title = new Dictionary<string, object>() } },
{ "Test Date Property", new DateUpdatePropertySchema{ Date = new Dictionary<string, object>() } }
};

PagesCreateParameters pagesCreateParameters = PagesCreateParametersBuilder.Create(new DatabaseParentInput
{
DatabaseId = _databaseId
})
.AddProperty("Name", new TitlePropertyValue
{
Title = new List<RichTextBase>
{
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<string, PropertyValue> testProps = new Dictionary<string, PropertyValue>();
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);
}
}
}

0 comments on commit 5de4799

Please sign in to comment.