@@ -167,6 +167,99 @@ def test_string_cansim_id_validates(self):
167167 result = scwds .get_cube_metadata ("27100022" )
168168 assert result [0 ]["cansimId" ] == "271-0022"
169169
170+ def test_null_issue_date_validates (self ):
171+ """Tables like 36100402 return issueDate=null from the API."""
172+ mock_resp = _mock_response (
173+ json_data = [
174+ {
175+ "status" : "SUCCESS" ,
176+ "object" : {
177+ ** self ._CUBE_METADATA_BASE ,
178+ "cansimId" : None ,
179+ "issueDate" : None ,
180+ },
181+ }
182+ ]
183+ )
184+ with patch .object (scwds ._session , "request" , return_value = mock_resp ):
185+ result = scwds .get_cube_metadata ("36100402" )
186+ assert result [0 ]["issueDate" ] is None
187+
188+ def test_null_cube_start_date_validates (self ):
189+ """cubeStartDate can be null for tables with no data yet."""
190+ mock_resp = _mock_response (
191+ json_data = [
192+ {
193+ "status" : "SUCCESS" ,
194+ "object" : {
195+ ** self ._CUBE_METADATA_BASE ,
196+ "cansimId" : None ,
197+ "cubeStartDate" : None ,
198+ },
199+ }
200+ ]
201+ )
202+ with patch .object (scwds ._session , "request" , return_value = mock_resp ):
203+ result = scwds .get_cube_metadata ("34100292" )
204+ assert result [0 ]["cubeStartDate" ] is None
205+
206+ def test_null_cube_end_date_validates (self ):
207+ """cubeEndDate can be null for tables with no data yet."""
208+ mock_resp = _mock_response (
209+ json_data = [
210+ {
211+ "status" : "SUCCESS" ,
212+ "object" : {
213+ ** self ._CUBE_METADATA_BASE ,
214+ "cansimId" : None ,
215+ "cubeEndDate" : None ,
216+ },
217+ }
218+ ]
219+ )
220+ with patch .object (scwds ._session , "request" , return_value = mock_resp ):
221+ result = scwds .get_cube_metadata ("34100292" )
222+ assert result [0 ]["cubeEndDate" ] is None
223+
224+ def test_null_release_time_validates (self ):
225+ """releaseTime can be null for unreleased tables."""
226+ mock_resp = _mock_response (
227+ json_data = [
228+ {
229+ "status" : "SUCCESS" ,
230+ "object" : {
231+ ** self ._CUBE_METADATA_BASE ,
232+ "cansimId" : None ,
233+ "releaseTime" : None ,
234+ },
235+ }
236+ ]
237+ )
238+ with patch .object (scwds ._session , "request" , return_value = mock_resp ):
239+ result = scwds .get_cube_metadata ("34100292" )
240+ assert result [0 ]["releaseTime" ] is None
241+
242+ def test_multiple_null_fields_validate (self ):
243+ """Multiple nullable fields can be null simultaneously."""
244+ metadata = {
245+ ** self ._CUBE_METADATA_BASE ,
246+ "cansimId" : None ,
247+ "cubeStartDate" : None ,
248+ "cubeEndDate" : None ,
249+ "releaseTime" : None ,
250+ "issueDate" : None ,
251+ }
252+ mock_resp = _mock_response (
253+ json_data = [{"status" : "SUCCESS" , "object" : metadata }]
254+ )
255+ with patch .object (scwds ._session , "request" , return_value = mock_resp ):
256+ result = scwds .get_cube_metadata ("36100402" )
257+ assert result [0 ]["cansimId" ] is None
258+ assert result [0 ]["cubeStartDate" ] is None
259+ assert result [0 ]["cubeEndDate" ] is None
260+ assert result [0 ]["releaseTime" ] is None
261+ assert result [0 ]["issueDate" ] is None
262+
170263
171264class TestVectorsToDfEdgeCases :
172265 """Tests for vectors_to_df edge cases."""
0 commit comments