= TeDS Default Validation Report
:doctype: book
:toc: left
:toclevels: 3
:sectlinks:
:sectanchors:
:numbered:
:source-highlighter: rouge
:icons: font
:docinfo: shared

== Overview

[cols="1,3"]
|===
| Tool Version | teds 0.4.0
| Specification Support | 1.0-1.0
| Recommended Version | 1.0
| Generated | 2025-09-22T15:36:42.702033+02:00
| Report File | demo/public_specs.yaml
|===







== Executive Summary




















































[.lead]
This report analyzes *6* schema(s) with a total of *30* test cases.

=== Results Summary

[cols="2,1,3"]
|===
| Status | Count | Description


| [green]#✓ SUCCESS# | 26 | Test cases passed as expected


| [yellow]#⚠ WARNING# | 1 | Test cases with warnings (review recommended)


| [red]#✗ ERROR# | 3 | Test cases failed validation



| *Total* | *30* | All test cases processed
|===





== Detailed Results




[[public_schemas_yaml__components_schemas_EmailContact]]
=== public_schemas.yaml#/components/schemas/EmailContact





==== Schema Summary

[cols="1,1"]
|===
| Valid Cases | 2
| Invalid Cases | 1
| Total Cases | 3
|===


==== Valid Test Cases

[cols="3,2,1,4"]
|===
| Test Case | Payload | Status | Message


| `example ok`
a| [source,yaml]
----
email: alice@example.com
----

| [green]#✓ SUCCESS#

|

| `format divergence (warn)`
a| [source,yaml]
----
email: not-an-email
----

| [yellow]#⚠ WARNING#

|

|===



==== Invalid Test Cases

[cols="3,2,1,4"]
|===
| Test Case | Payload | Status | Message


| `display name not allowed`
a| [source,yaml]
----
email: John <john@example.com>
----

| [red]#✗ ERROR#

| UNEXPECTEDLY VALID

|===






[[public_schemas_yaml__components_schemas_ISODateTime]]
=== public_schemas.yaml#/components/schemas/ISODateTime





==== Schema Summary

[cols="1,1"]
|===
| Valid Cases | 2
| Invalid Cases | 2
| Total Cases | 4
|===


==== Valid Test Cases

[cols="3,2,1,4"]
|===
| Test Case | Payload | Status | Message


| `.components.schemas.ISODateTime.examples[0]`
a| [source,yaml]
----
'2024-08-01T12:34:56Z'
----

| [green]#✓ SUCCESS#

|

| `with Z offset`
a| [source,yaml]
----
'2024-08-01T12:34:56Z'
----

| [green]#✓ SUCCESS#

|

|===



==== Invalid Test Cases

[cols="3,2,1,4"]
|===
| Test Case | Payload | Status | Message


| `missing timezone`
a| [source,yaml]
----
'2024-08-01T12:34:56'
----

| [red]#✗ ERROR#

| UNEXPECTEDLY VALID
A validator that *ignores* 'format' accepted this instance, while a strict validator (enforcing 'format') might reject it as desired (format: date-time).
Consider enforcing the expected format by adding an explicit 'pattern' property to the schema.

| `impossible date`
a| [source,yaml]
----
'2024-02-30T12:00:00Z'
----

| [red]#✗ ERROR#

| UNEXPECTEDLY VALID
A validator that *ignores* 'format' accepted this instance, while a strict validator (enforcing 'format') might reject it as desired (format: date-time).
Consider enforcing the expected format by adding an explicit 'pattern' property to the schema.

|===






[[public_schemas_yaml__components_schemas_PhoneE164]]
=== public_schemas.yaml#/components/schemas/PhoneE164





==== Schema Summary

[cols="1,1"]
|===
| Valid Cases | 2
| Invalid Cases | 3
| Total Cases | 5
|===


==== Valid Test Cases

[cols="3,2,1,4"]
|===
| Test Case | Payload | Status | Message


| `.components.schemas.PhoneE164.examples[0]`
a| [source,yaml]
----
'+14155552671'
----

| [green]#✓ SUCCESS#

|

| `canonical e164`
a| [source,yaml]
----
'+14155552671'
----

| [green]#✓ SUCCESS#

|

|===



==== Invalid Test Cases

[cols="3,2,1,4"]
|===
| Test Case | Payload | Status | Message


| `spaces not allowed`
a| [source,yaml]
----
+1 415 555 2671
----

| [green]#✓ SUCCESS#

| '+1 415 555 2671' does not match '^\\+[1-9]\\d{1,14}$'

| `international prefix '00' not allowed`
a| [source,yaml]
----
'00491555552671'
----

| [green]#✓ SUCCESS#

| '00491555552671' does not match '^\\+[1-9]\\d{1,14}$'

| `too short`
a| [source,yaml]
----
'+1'
----

| [green]#✓ SUCCESS#

| '+1' does not match '^\\+[1-9]\\d{1,14}$'

|===






[[public_schemas_yaml__components_schemas_CurrencyAmount]]
=== public_schemas.yaml#/components/schemas/CurrencyAmount





==== Schema Summary

[cols="1,1"]
|===
| Valid Cases | 4
| Invalid Cases | 4
| Total Cases | 8
|===


==== Valid Test Cases

[cols="3,2,1,4"]
|===
| Test Case | Payload | Status | Message


| `.components.schemas.CurrencyAmount.examples[0]`
a| [source,yaml]
----
currency: USD
amount: 42
----

| [green]#✓ SUCCESS#

|

| `ok sample`
a| [source,yaml]
----
currency: USD
amount: 42
----

| [green]#✓ SUCCESS#

|

| `zero boundary ok`
a| [source,yaml]
----
currency: USD
amount: 0
----

| [green]#✓ SUCCESS#

|

| `one boundary ok`
a| [source,yaml]
----
currency: USD
amount: 1
----

| [green]#✓ SUCCESS#

|

|===



==== Invalid Test Cases

[cols="3,2,1,4"]
|===
| Test Case | Payload | Status | Message


| `lowercase currency rejected`
a| [source,yaml]
----
currency: usd
amount: 10
----

| [green]#✓ SUCCESS#

| 'usd' is not one of ['USD', 'EUR', 'GBP', 'JPY']

| `non-iso code rejected`
a| [source,yaml]
----
currency: BTC
amount: 10
----

| [green]#✓ SUCCESS#

| 'BTC' is not one of ['USD', 'EUR', 'GBP', 'JPY']

| `decimal amount rejected`
a| [source,yaml]
----
currency: USD
parse_payload: true
payload: '10.50'
----

| [green]#✓ SUCCESS#

| Additional properties are not allowed ('parse_payload', 'payload' were unexpected)

| `negative amount rejected`
a| [source,yaml]
----
currency: USD
amount: -1
----

| [green]#✓ SUCCESS#

| -1 is less than the minimum of 0

|===






[[public_schemas_yaml__components_schemas_ArrayMinItems]]
=== public_schemas.yaml#/components/schemas/ArrayMinItems





==== Schema Summary

[cols="1,1"]
|===
| Valid Cases | 4
| Invalid Cases | 2
| Total Cases | 6
|===


==== Valid Test Cases

[cols="3,2,1,4"]
|===
| Test Case | Payload | Status | Message


| `.components.schemas.ArrayMinItems.examples[0]`
a| [source,yaml]
----
- 1
----

| [green]#✓ SUCCESS#

|

| `.components.schemas.ArrayMinItems.examples[1]`
a| [source,yaml]
----
- 1
- 2
- 3
----

| [green]#✓ SUCCESS#

|

| `minItems satisfied (1)`
a| [source,yaml]
----
- 1
----

| [green]#✓ SUCCESS#

|

| `within maxItems (3)`
a| [source,yaml]
----
- 1
- 2
- 3
----

| [green]#✓ SUCCESS#

|

|===



==== Invalid Test Cases

[cols="3,2,1,4"]
|===
| Test Case | Payload | Status | Message


| `empty not allowed (minItems=1)`
a| [source,yaml]
----
[]
----

| [green]#✓ SUCCESS#

| [] should be non-empty

| `exceeds maxItems (4)`
a| [source,yaml]
----
- 1
- 2
- 3
- 4
----

| [green]#✓ SUCCESS#

| [1, 2, 3, 4] is too long

|===






[[public_schemas_yaml__components_schemas_UserStrict]]
=== public_schemas.yaml#/components/schemas/UserStrict





==== Schema Summary

[cols="1,1"]
|===
| Valid Cases | 2
| Invalid Cases | 2
| Total Cases | 4
|===


==== Valid Test Cases

[cols="3,2,1,4"]
|===
| Test Case | Payload | Status | Message


| `.components.schemas.UserStrict.examples[0]`
a| [source,yaml]
----
name: Alice
email: alice@example.com
----

| [green]#✓ SUCCESS#

|

| `minimal ok`
a| [source,yaml]
----
name: Alice
email: alice@example.com
----

| [green]#✓ SUCCESS#

|

|===



==== Invalid Test Cases

[cols="3,2,1,4"]
|===
| Test Case | Payload | Status | Message


| `unknown property rejected`
a| [source,yaml]
----
name: Alice
email: alice@example.com
role: admin
----

| [green]#✓ SUCCESS#

| Additional properties are not allowed ('role' was unexpected)

| `missing required`
a| [source,yaml]
----
name: Alice
----

| [green]#✓ SUCCESS#

| 'email' is a required property

|===







== Appendix

=== Tool Information

[cols="1,3"]
|===
| TeDS Version | 0.4.0
| Supported Spec Range | 1.0-1.0
| Recommended Spec Version | 1.0
| Report Generation Time | 2025-09-22T15:36:42.702033+02:00
|===

=== Report Scope

This default report includes:

* **Executive Summary** - High-level overview of validation results
* **Schema Coverage Analysis** - Warnings for incomplete test coverage
* **Detailed Results** - Complete breakdown of all test cases by schema
* **Color-coded Status Indicators** - Visual distinction between SUCCESS, WARNING, and ERROR states
* **Tabular Format** - Structured presentation for easy analysis

For questions about this report or TeDS functionality, please refer to the TeDS documentation.

---
_This report was generated automatically by TeDS (Test-Driven Schema Development Tool)._
