99using databricks::test::MockHttpClient;
1010using ::testing::_;
1111using ::testing::HasSubstr;
12+ using ::testing::Eq;
1213using ::testing::NiceMock;
1314using ::testing::Return;
1415using ::testing::Throw;
@@ -67,7 +68,7 @@ TEST_F(WorkspaceTest, MultipleValidWorkspaceClient) {
6768// ============================================================================
6869
6970// Test: List Workspace Objects
70- TEST_F (WorkspaceApiTest, SuccessfulListWorkspaceObjects ) {
71+ TEST_F (WorkspaceApiTest, ListWorkspaceObjectsSuccess ) {
7172 std::string mock_list_response = R"( {
7273 "objects": [
7374 {
@@ -112,7 +113,8 @@ TEST_F(WorkspaceApiTest, SuccessfulListWorkspaceObjects) {
112113 EXPECT_EQ (response[1 ].object_id , 67890 );
113114}
114115
115- TEST_F (WorkspaceApiTest, SuccessfulListEmptyWorkspaceObjects) {
116+ // Test: List Empty Workspace Objects
117+ TEST_F (WorkspaceApiTest, ListEmptyWorkspaceObjectsSuccess) {
116118 const std::string& mock_empty_list_response = R"( {
117119 "objects": []
118120 })" ;
@@ -126,4 +128,65 @@ TEST_F(WorkspaceApiTest, SuccessfulListEmptyWorkspaceObjects) {
126128
127129 // Verify we got 0 objects back
128130 ASSERT_EQ (response.size (), 0 );
129- }
131+ }
132+
133+ // Test: Fail to list Workspace Objects with an empty path
134+ TEST_F (WorkspaceApiTest, ListWorkspaceObjectThrowsInvalidArgument) {
135+ databricks::Workspace workspace (mock_client_);
136+ const std::string& empty_path = " " ;
137+
138+ EXPECT_THROW (workspace.list (empty_path), std::invalid_argument);
139+ }
140+
141+ // Test: Create a Mock Directory
142+ TEST_F (WorkspaceApiTest, CreateDirectorySuccess) {
143+ EXPECT_CALL (*mock_client_, post (" /workspace/mkdirs" , Eq (R"( {"path":"/test/path"})" )))
144+ .WillOnce (Return (MockHttpClient::success_response (" " )));
145+
146+ databricks::Workspace workspace (mock_client_);
147+ const std::string& mock_path = " /test/path" ;
148+ workspace.mkdirs (mock_path);
149+ }
150+
151+ // Test: Fail to create an empty Mock Directory
152+ TEST_F (WorkspaceApiTest, CreateEmptyDirectoryThrowsInvalidArgument) {
153+ databricks::Workspace workspace (mock_client_);
154+ const std::string& empty_path = " " ;
155+
156+ EXPECT_THROW (workspace.mkdirs (empty_path), std::invalid_argument);
157+ }
158+
159+ // Test: Get Status for a Workspace object
160+ TEST_F (WorkspaceApiTest, GetStatusSuccess) {
161+ std::string mock_status_response = R"( {
162+ "path": "/test/notebook",
163+ "object_type": "NOTEBOOK",
164+ "object_id": 12345,
165+ "language": "PYTHON",
166+ "size": 2048,
167+ "created_at": 1609459200000,
168+ "modified_at": 1609545600000
169+ })" ;
170+
171+ EXPECT_CALL (*mock_client_, get (" /workspace/get-status?path=/test/notebook" ))
172+ .WillOnce (Return (MockHttpClient::success_response (mock_status_response)));
173+
174+ databricks::Workspace workspace (mock_client_);
175+ const std::string& mock_path = " /test/notebook" ;
176+ auto response = workspace.get_status (mock_path);
177+
178+ // Verify object status
179+ EXPECT_EQ (response.path , " /test/notebook" );
180+ EXPECT_EQ (response.object_type , databricks::ObjectType::NOTEBOOK );
181+ EXPECT_EQ (response.object_id , 12345 );
182+ EXPECT_EQ (response.language , databricks::Language::PYTHON );
183+ EXPECT_EQ (response.size , 2048 );
184+ }
185+
186+ // Test: Fail to get status for an empty path Workspace object
187+ TEST_F (WorkspaceApiTest, GetStatusThrowsInvalidArgument) {
188+ databricks::Workspace workspace (mock_client_);
189+ const std::string& empty_path = " " ;
190+
191+ EXPECT_THROW (workspace.get_status (empty_path), std::invalid_argument);
192+ }
0 commit comments