Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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);
}
}
}