Skip to content

Add property-based tests for nullable-field JSON converters#95

Merged
SeanTAllen merged 1 commit intomainfrom
sean/test-nullable-converters
Mar 3, 2026
Merged

Add property-based tests for nullable-field JSON converters#95
SeanTAllen merged 1 commit intomainfrom
sean/test-nullable-converters

Conversation

@SeanTAllen
Copy link
Copy Markdown
Member

Item 2 from Discussion #93: test converters that exercise string_or_none and try/else None paths.

9 new property-based test classes covering 4 converters:

  • LabelJsonConverter — 7 fields including nullable description
  • IssuePullRequestJsonConverter — 5 fields including nullable merged_at
  • AssetJsonConverter — 13 fields including nullable label and nested UserJsonConverter
  • GistFileJsonConverter — 5 required fields, 1 nullable (language), 3 optional (content, encoding, truncated)

Each converter gets:

  • preserves-valuesBool generator randomly nullifies nullable fields; asserts required fields match and nullable fields are correctly String or None
  • missing-required-fieldUSize generator selects which required field to omit; asserts converter errors

GistFile gets an additional absent-optional-fields test verifying that omitted content/encoding/truncated keys produce None.

A _TestUserJson helper primitive builds valid User JSON objects for Asset tests that need a nested User.

Design: #93

Item 2 from Discussion #93: test converters that exercise
`string_or_none` and `try/else None` paths.

9 new test classes covering LabelJsonConverter (7 fields including
nullable description), IssuePullRequestJsonConverter (5 fields
including nullable merged_at), AssetJsonConverter (13 fields including
nullable label and nested UserJsonConverter), and
GistFileJsonConverter (5 required fields, 1 nullable, 3 optional).

Each converter gets preserves-values (with Bool generator randomly
nullifying nullable fields) and missing-required-field tests. GistFile
gets an additional absent-optional-fields test verifying that omitted
content/encoding/truncated keys produce None.

A _TestUserJson helper primitive builds valid User JSON objects for
Asset tests that need a nested User.

Design: #93
@ponylang-main ponylang-main added the discuss during sync Should be discussed during an upcoming sync label Mar 2, 2026
@SeanTAllen SeanTAllen merged commit 729c6aa into main Mar 3, 2026
10 checks passed
@SeanTAllen SeanTAllen deleted the sean/test-nullable-converters branch March 3, 2026 00:31
@ponylang-main ponylang-main removed the discuss during sync Should be discussed during an upcoming sync label Mar 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants