1- using System . IO ;
1+ using System . Collections . Generic ;
2+ using System . IO ;
23using System . Threading . Tasks ;
34using FluentAssertions ;
45using Notion . Client ;
@@ -16,29 +17,106 @@ public DatabasesClientTests()
1617 _client = new DatabasesClient ( new RestClient ( ClientOptions ) ) ;
1718 }
1819
19- [ Fact ( Skip = "Internal Testing Purpose" ) ]
20+ [ Fact ]
2021 public async Task ListDatabasesAsync ( )
2122 {
22- var databasesList = await _client . ListAsync ( ) ;
23- Assert . NotNull ( databasesList ) ;
23+ var path = ApiEndpoints . DatabasesApiUrls . List ( ) ;
24+ var jsonData = await File . ReadAllTextAsync ( "data/databases/DatabasesListResponse.json" ) ;
25+ 26+ Server . Given ( CreateGetRequestBuilder ( path ) )
27+ . RespondWith (
28+ Response . Create ( )
29+ . WithStatusCode ( 200 )
30+ . WithBody ( jsonData )
31+ ) ;
32+ 33+ var databases = await _client . ListAsync ( ) ;
34+ 35+ databases . Results . Should ( ) . HaveCount ( 3 ) ;
36+ 37+ foreach ( var database in databases . Results )
38+ {
39+ database . Parent . Should ( ) . BeAssignableTo < IDatabaseParent > ( ) ;
40+ foreach ( var property in database . Properties )
41+ {
42+ property . Key . Should ( ) . Be ( property . Value . Name ) ;
43+ }
44+ }
2445 }
2546
26- [ Fact ( Skip = "Internal Testing Purpose" ) ]
27- public async Task RetrieveDatabaseAsync ( )
47+ [ Fact ]
48+ public async Task QueryAsync ( )
2849 {
29- var databaseId = "" ;
30- var database = await _client . RetrieveAsync ( databaseId ) ;
31- Assert . NotNull ( database ) ;
50+ var databaseId = "f0212efc-caf6-4afc-87f6-1c06f1dfc8a1" ;
51+ var path = ApiEndpoints . DatabasesApiUrls . Query ( databaseId ) ;
52+ var jsonData = await File . ReadAllTextAsync ( "data/databases/DatabasesQueryResponse.json" ) ;
53+ 54+ Server . Given ( CreatePostRequestBuilder ( path ) )
55+ . RespondWith (
56+ Response . Create ( )
57+ . WithStatusCode ( 200 )
58+ . WithBody ( jsonData )
59+ ) ;
60+ 61+ var databasesQueryParams = new DatabasesQueryParameters
62+ {
63+ Filter = new CompoundFilter
64+ {
65+ Or = new List < Filter > {
66+ new CheckboxFilter (
67+ "In stock" ,
68+ true
69+ ) ,
70+ new NumberFilter (
71+ "Cost of next trip" ,
72+ greaterThanOrEqualTo : 2
73+ )
74+ } ,
75+ } ,
76+ Sorts = new List < Sort >
77+ {
78+ new Sort
79+ {
80+ Property = "Last ordered" ,
81+ Direction = Direction . Ascending
82+ }
83+ }
84+ } ;
85+ 86+ var pagesPaginatedList = await _client . QueryAsync ( databaseId , databasesQueryParams ) ;
87+ 88+ pagesPaginatedList . Results . Should ( ) . ContainSingle ( ) ;
89+ 90+ foreach ( var page in pagesPaginatedList . Results )
91+ {
92+ page . Parent . Should ( ) . BeAssignableTo < IPageParent > ( ) ;
93+ page . Object . Should ( ) . Be ( ObjectType . Page ) ;
94+ }
3295 }
3396
34- [ Fact ( Skip = "Internal Testing Purpose" ) ]
35- public async Task QueryAsync ( )
97+ [ Fact ]
98+ public async Task RetrieveDatabaseAsync ( )
3699 {
37- var databaseId = "" ;
38- var databasesQueryParameters = new DatabasesQueryParameters { } ;
39- var pagesList = await _client . QueryAsync ( databaseId , databasesQueryParameters ) ;
100+ var databaseId = "f0212efc-caf6-4afc-87f6-1c06f1dfc8a1" ;
101+ var path = ApiEndpoints . DatabasesApiUrls . Retrieve ( databaseId ) ;
102+ var jsonData = await File . ReadAllTextAsync ( "data/databases/DatabaseRetrieveResponse.json" ) ;
103+ 104+ Server . Given ( CreateGetRequestBuilder ( path ) )
105+ . RespondWith (
106+ Response . Create ( )
107+ . WithStatusCode ( 200 )
108+ . WithBody ( jsonData )
109+ ) ;
40110
41- Assert . NotNull ( pagesList ) ;
111+ var database = await _client . RetrieveAsync ( databaseId ) ;
112+ 113+ database . Parent . Type . Should ( ) . Be ( ParentType . PageId ) ;
114+ database . Parent . Should ( ) . BeOfType < PageParent > ( ) ;
115+ ( ( PageParent ) database . Parent ) . PageId . Should ( ) . Be ( "649089db-8984-4051-98fb-a03593b852d8" ) ;
116+ foreach ( var property in database . Properties )
117+ {
118+ property . Key . Should ( ) . Be ( property . Value . Name ) ;
119+ }
42120 }
43121
44122 [ Fact ]
0 commit comments