package com.gzzm.lobster.tool;

import org.junit.Test;

import java.util.List;
import java.util.Map;

import static org.junit.Assert.*;

public class SchemaBuilderTest {

    @Test
    @SuppressWarnings("unchecked")
    public void buildsObjectWithRequiredAndProps() {
        Map<String, Object> s = SchemaBuilder.obj()
                .prop("a", "string", "a desc")
                .propStringMax("aa", "aa desc", 12)
                .propInt("b", "b desc")
                .propEnum("c", "c desc", "X", "Y")
                .required("a", "b")
                .build();
        assertEquals("object", s.get("type"));
        Map<String, Object> props = (Map<String, Object>) s.get("properties");
        assertTrue(props.containsKey("a"));
        assertTrue(props.containsKey("aa"));
        assertTrue(props.containsKey("b"));
        assertTrue(props.containsKey("c"));
        List<String> required = (List<String>) s.get("required");
        assertEquals(2, required.size());
        Map<String, Object> cProp = (Map<String, Object>) props.get("c");
        assertTrue(cProp.get("enum") instanceof List);
        Map<String, Object> aaProp = (Map<String, Object>) props.get("aa");
        assertEquals(12, aaProp.get("maxLength"));
    }
}
