Skip to content

Commit 40d6b28

Browse files
committed
feat(schema): Add Schema sealed interface, BooleanSchema, AdditionalProperties wrapper
1 parent 8071d52 commit 40d6b28

4 files changed

Lines changed: 48 additions & 0 deletions

File tree

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.retailsvc.http.spec.schema;
2+
3+
public sealed interface AdditionalProperties {
4+
record Allowed() implements AdditionalProperties {}
5+
6+
record Forbidden() implements AdditionalProperties {}
7+
8+
record SchemaConstraint(Schema schema) implements AdditionalProperties {}
9+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.retailsvc.http.spec.schema;
2+
3+
import java.util.Set;
4+
5+
public record BooleanSchema(Set<TypeName> types) implements Schema {}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.retailsvc.http.spec.schema;
2+
3+
import java.util.Set;
4+
5+
public sealed interface Schema permits BooleanSchema {
6+
Set<TypeName> types();
7+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.retailsvc.http.spec.schema;
2+
3+
import static org.assertj.core.api.Assertions.assertThat;
4+
5+
import java.util.Set;
6+
import org.junit.jupiter.api.Test;
7+
8+
class AdditionalPropertiesTest {
9+
@Test
10+
void allowedIsDefault() {
11+
AdditionalProperties ap = new AdditionalProperties.Allowed();
12+
assertThat(ap).isInstanceOf(AdditionalProperties.Allowed.class);
13+
}
14+
15+
@Test
16+
void forbiddenSentinel() {
17+
assertThat(new AdditionalProperties.Forbidden())
18+
.isInstanceOf(AdditionalProperties.Forbidden.class);
19+
}
20+
21+
@Test
22+
void schemaConstraintCarriesSchema() {
23+
Schema inner = new BooleanSchema(Set.of(TypeName.BOOLEAN));
24+
AdditionalProperties ap = new AdditionalProperties.SchemaConstraint(inner);
25+
assertThat(((AdditionalProperties.SchemaConstraint) ap).schema()).isSameAs(inner);
26+
}
27+
}

0 commit comments

Comments
 (0)