示例#1
0
        public void TestExportClassWithFirstClassAttribute()
        {
            EAMetaModel meta = new EAMetaModel();

            APIModel.createAPI_AttributesFirstClass(meta);
            meta.setupSchemaPackage();

            //Test
            JSchema jschema = SchemaManager.schemaToJsonSchema(EARepository.Repository, EARepository.currentDiagram).Value;

            {
                JSchema child = jschema.Properties["propClass"];
                Assert.AreEqual(JSchemaType.String, child.Type);
            }
            {
                JSchema child = jschema.Properties["propertyClass2"];
                Assert.AreEqual(JSchemaType.String, child.Type);
            }


            EA.Package package = SchemaManager.generateSample(EARepository.Repository);
            object     o       = package.Diagrams.GetAt(0);

            EA.Diagram diaObj = (EA.Diagram)o;

            IList <EA.Element> objects = MetaDataManager.diagramSamples(EARepository.Repository, diaObj);

            Assert.AreEqual(1 + 1, objects.Count);
        }
示例#2
0
        public void TestExportSample()
        {
            EAMetaModel meta = new EAMetaModel().setupSchemaPackage();

            EAFactory rootClass = APIModels.APIModel.createAPI1(meta);

            meta.setupSchemaPackage();

            EA.Package package = SchemaManager.generateSample(EARepository.Repository);

            Assert.AreEqual(1, package.Diagrams.Count);
            object o = package.Diagrams.GetAt(0);

            EA.Diagram diagram = (EA.Diagram)o;

            Assert.AreEqual(3, package.Elements.Count);

            o = package.Elements.GetAt(0);
            EA.Element sample = (EA.Element)o;
            sample.RunState = ObjectManager.addRunState(sample.RunState, "intAttribute", "123", rootClass.clientElement.ElementID);

            meta.setupSamplePackage();
            //Test
            JObject jobject = (JObject)SampleManager.sampleToJObject(EARepository.Repository, diagram)["json"];

            Assert.AreEqual(8, jobject.Count);
        }
示例#3
0
        static public EAFactory createInvalidAPI(EAMetaModel meta)
        {
            EAFactory factory = new EAFactory();

            meta.setupSchemaPackage();

            EAFactory typesForResource = factory.setupClient("item-get", APIAddinClass.EA_TYPE_OBJECT, APIAddinClass.EA_STEREOTYPE_NONE, meta.META_TYPE_FOR_RESOURCE.ElementID, null);

            //Root class has lower case name
            EAFactory rootclass = typesForResource.addSupplier("rootClass", APIAddinClass.EA_TYPE_CLASS, 0, null /*target stereotype*/, null, "requestSchema", APIAddinClass.CARDINALITY_ONE, null);

            //Invalid supplier end role
            EAFactory childClass = rootclass.addSupplier("ChildClass", APIAddinClass.EA_TYPE_CLASS, 0, null /*target stereotype*/, null, "" /*Invalid supplierEndRole is empty string*/, "0..*" /*cardinality*/, null);

            //No cardinality
            EAFactory childClass2 = childClass.addSupplier("ChildClass2", APIAddinClass.EA_TYPE_CLASS, 0, null /*target stereotype*/, null, "child", "" /*invalid no cardinality*/, null);

            meta.setupAPIPackage();

            EAFactory factoryresult = factory.setupClient("APITitle", APIAddinClass.EA_TYPE_OBJECT, APIAddinClass.EA_STEREOTYPE_SAMPLE, meta.META_API.ElementID, new string[] { APIManager.TITLE, "APITitle", "version", "1", "baseUri", "http://localhost", "mediaType", "application/json" });

            EAFactory resource = factory.addSupplier("/resource/{id}", APIAddinClass.EA_TYPE_OBJECT, meta.META_RESOURCE.ElementID, null /*target stereotype*/, new string[] { "test", "testvalue" } /*runstate*/, "resource" /*supplierEndRole*/, "" /*relationshipName*/, null);

            EAFactory schema = factory.addSupplier(rootclass.clientElement, "quoteSchema" /*supplier end role*/, "", null);

            resource.addSupplier(typesForResource.clientElement, "item-get", "", null);

            typesForResource.addSupplier("sample200Resp", APIAddinClass.EA_TYPE_OBJECT, schema.clientElement.ElementID, null /*target stereotype*/, null, "sample200Resp", "", null);

            return(factoryresult);
        }
示例#4
0
        public void TestInvalidSchema()
        {
            EAMetaModel meta = new EAMetaModel();

            APIModel.createInvalidAPI(meta);
            meta.setupSchemaPackage();

            FileManager fileManager = new FileManager(null);

            SchemaManager.setFileManager(fileManager);

            string theexception = "An exception should be thrown";

            try
            {
                JSchema jschema = SchemaManager.schemaToJsonSchema(EARepository.Repository, EARepository.currentDiagram).Value;
                Assert.Fail(theexception);
            }
            catch (ModelValidationException e)
            {
                string r = "";
                foreach (string s in e.errors.messages)
                {
                    r += s;
                }
                Assert.AreNotEqual("Assert.Fail failed. " + theexception, r);

                Assert.IsTrue(r.Contains("Class Name needs to start with an uppercase character"));

                Assert.IsTrue(r.Contains("Connector with empty SupplierEnd.Role is not allowed"));

                Assert.IsTrue(r.Contains("Connector with no SupplierEnd.Role cardinality is not allowed"));
            }
        }
示例#5
0
        static public EAFactory createModel1(EAMetaModel meta)
        {
            EAFactory factory = new EAFactory();

            meta.setupSchemaPackage();

            meta.setupSamplePackage();
            EAFactory sampleRoot = factory.setupClient("ObjectWithListAttribute", RoundTripAddInClass.EA_TYPE_OBJECT, RoundTripAddInClass.EA_STEREOTYPE_REQUEST, 0, null);

            return(sampleRoot);
        }
示例#6
0
        public void TestSchemaExport()
        {
            EAMetaModel meta = new EAMetaModel();

            APIModel.createAPI1(meta);
            meta.setupSchemaPackage();

            FileManager fileManager = new FileManager(null);

            SchemaManager.setFileManager(fileManager);

            //Test
            JSchema jschema = SchemaManager.schemaToJsonSchema(EARepository.Repository, EARepository.currentDiagram).Value;


            Assert.IsTrue(jschema.Properties.ContainsKey("booleanAttr"));
            Assert.AreEqual(JSchemaType.Boolean, jschema.Properties["booleanAttr"].Type);
        }
示例#7
0
        public void TestValidateDiagram_Valid()
        {
            EAMetaModel meta = new EAMetaModel().setupSchemaPackage();

            EAFactory rootClass = APIModels.APIModel.createAPI1(meta);

            meta.setupSchemaPackage();

            EA.Package package = SchemaManager.generateSample(EARepository.Repository);

            Assert.AreEqual(1, package.Diagrams.Count);
            object o = package.Diagrams.GetAt(0);

            EA.Diagram diagram = (EA.Diagram)o;

            //Test
            IList <string> errors = SampleManager.diagramValidation(EARepository.Repository, diagram);

            Assert.IsNull(errors);
        }
示例#8
0
        static public EAFactory createAPI2(EAMetaModel meta)
        {
            EAFactory factory = new EAFactory();

            meta.setupSchemaPackage();

            EAFactory typesForResource = factory.setupClient("item-get", APIAddinClass.EA_TYPE_OBJECT, APIAddinClass.EA_STEREOTYPE_NONE, meta.META_TYPE_FOR_RESOURCE.ElementID, null);

            EAFactory rootclass = typesForResource.addSupplier("RootClass", APIAddinClass.EA_TYPE_CLASS, 0, null /*target stereotype*/, null, "requestSchema", APIAddinClass.CARDINALITY_ONE, null);

            EAFactory inlineObject = rootclass.addSupplier("IdentifierClass", APIAddinClass.EA_TYPE_CLASS, 0, null /*target stereotype*/, null, "identifierObject" /*supplierEndRole*/, "1" /*cardinality*/, APIAddinClass.EA_STEREOTYPE_EMBEDDED);

            inlineObject.addAttribute("objectAttr", APIAddinClass.EA_TYPE_STRING);

            meta.setupAPIPackage();

            EAFactory factoryresult = factory.setupClient("APITitle", APIAddinClass.EA_TYPE_OBJECT, APIAddinClass.EA_STEREOTYPE_SAMPLE, meta.META_API.ElementID, new string[] { APIManager.TITLE, "APITitle", "version", "1", "baseUri", "http://localhost", "mediaType", "application/json" });

            return(factoryresult);
        }
示例#9
0
        public void TestExportClassWithListAttribute()
        {
            EAMetaModel meta = new EAMetaModel();

            APIModel.createAPI1(meta);
            meta.setupSchemaPackage();


            FileManager fileManager = new FileManager(null);

            SchemaManager.setFileManager(fileManager);

            //Test
            JSchema jschema = SchemaManager.schemaToJsonSchema(EARepository.Repository, EARepository.currentDiagram).Value;

            JSchema child = jschema.Properties["0OrMoreAttribute"];

            Assert.AreEqual(JSchemaType.Array, child.Type);

            JSchema listStringProp = jschema.Properties["listStringAttr"];

            Assert.AreEqual(JSchemaType.Array, listStringProp.Type);
        }
示例#10
0
        static public EAFactory createAPI1(EAMetaModel meta)
        {
            EAFactory factory = new EAFactory();

            meta.setupSchemaPackage();

            EAFactory typesForResource = factory.setupClient("item-get", APIAddinClass.EA_TYPE_OBJECT, APIAddinClass.EA_STEREOTYPE_NONE, meta.META_TYPE_FOR_RESOURCE.ElementID, null);

            EAFactory rootclass = typesForResource.addSupplier("RootClass", APIAddinClass.EA_TYPE_CLASS, 0, null /*target stereotype*/, null, "requestSchema", APIAddinClass.CARDINALITY_ONE, null);

            rootclass.addAttribute("listStringAttr", APIAddinClass.EA_TYPE_STRING, "0", "*");

            rootclass.addAttribute("booleanAttr", APIAddinClass.EA_TYPE_BOOLEAN);
            rootclass.addAttribute("floatAttr", APIAddinClass.EA_TYPE_FLOAT);
            rootclass.addAttribute("intAttr", APIAddinClass.EA_TYPE_INT);
            rootclass.addAttribute("dateAttr", APIAddinClass.EA_TYPE_DATE, "0", "1", "2016-01-01");
            rootclass.addAttribute("currencyAttr", APIAddinClass.EA_TYPE_DECIMAL);

            EAFactory childClass = rootclass.addSupplier("ChildClass", APIAddinClass.EA_TYPE_CLASS, 0, null /*target stereotype*/, null, "0OrMoreAttribute" /*supplierEndRole*/, "0..*" /*cardinality*/, null);

            EAFactory enumExample = rootclass.addSupplier("EnumExample", APIAddinClass.EA_TYPE_ENUMERATION, 0, null /*target stereotype*/, null, "enumExample" /*supplierEndRole*/, "1" /*cardinality*/, null);

            enumExample.clientElement.Attributes.AddNew("Enum1", APIAddinClass.EA_TYPE_ATTRIBUTE);
            enumExample.clientElement.Attributes.AddNew("Enum2", APIAddinClass.EA_TYPE_ATTRIBUTE);

            meta.setupAPIPackage();

            EAFactory api = factory.setupClient("APITitle", APIAddinClass.EA_TYPE_OBJECT, APIAddinClass.EA_STEREOTYPE_SAMPLE, meta.META_API.ElementID, new string[] { APIManager.TITLE, "APITitle", "version", "1", "baseUri", "http://localhost", "mediaType", "application/json" });

            EAFactory resource = factory.addSupplier("/resource/{someuriparameter}", APIAddinClass.EA_TYPE_OBJECT, meta.META_RESOURCE.ElementID, null /*target stereotype*/, new string[] { "test", "testvalue" } /*runstate*/, "resource" /*supplierEndRole*/, "" /*relationshipName*/, null);

            resource.addSupplier("propertyClass", APIAddinClass.EA_TYPE_CLASS, 0, APIAddinClass.EA_STEREOTYPE_DATAITEM + "," + APIAddinClass.EA_TYPE_STRING /*target stereotype*/, null, "propClass" /*supplierEndRole*/, "1" /*cardinality*/, APIAddinClass.EA_TYPE_STRING);

            EAFactory schema = factory.addSupplier(rootclass.clientElement, "quoteSchema" /*supplier end role*/, "", null);

            resource.addSupplier(typesForResource.clientElement, "item-get", "", null);

            EAFactory getMethod = resource.addSupplier("get", APIAddinClass.EA_TYPE_OBJECT, meta.META_METHOD.ElementID, null /*target stereotype*/, null /*run state*/, "", "", null);

            EAFactory queryMethod = getMethod.addSupplier("somequeryparameter", APIAddinClass.EA_TYPE_OBJECT, meta.META_QUERY_PARAMETER.ElementID, null /*Target stereotype*/, null /*run state*/, "", "", null);
            EAFactory dataitem    = queryMethod.addSupplier("somequeryparameter_type", APIAddinClass.EA_TYPE_CLASS, 0, APIAddinClass.EA_STEREOTYPE_DATAITEM, null /*run state*/, "", "", null);

            dataitem.clientElement.Notes = "data_item_description";

            getMethod.addSupplier("notcacheable", APIAddinClass.EA_TYPE_OBJECT, meta.META_TRAIT.ElementID, null /*target stereotype*/, null /*run state*/, "", "", null);

            getMethod.addSupplier("PERMISSION_EXECUTE", APIAddinClass.EA_TYPE_OBJECT, meta.META_PERMISSION.ElementID, null /*target stereotype*/, null /*run state*/, "", "", null);

            typesForResource.addSupplier("sample200Resp", APIAddinClass.EA_TYPE_OBJECT, schema.clientElement.ElementID, null /*target stereotype*/, null, "sample200Resp", "", null);


            meta.setupSamplePackage();
            EAFactory sampleRoot = factory.setupClient("ObjectWithListAttribute", APIAddinClass.EA_TYPE_OBJECT, APIAddinClass.EA_STEREOTYPE_REQUEST, rootclass.clientElement.ElementID, null);

            sampleRoot.addSupplier("ChildObjects", APIAddinClass.EA_TYPE_OBJECT, childClass.clientElement.ElementID, null /*target stereotype*/, null, "0OrMoreAttribute" /*supplierEndRole*/, "0..*" /*cardinality*/, null);

            EAFactory releasePipeline = api.addSupplier("ReleasePipeline", APIAddinClass.EA_TYPE_OBJECT, meta.META_RELEASEPIPELINE.ElementID, null /*target stereotype*/, null, "" /*supplierEndRole*/, "" /*cardinality*/, null);

            releasePipeline.addSupplier("dev-environment", APIAddinClass.EA_TYPE_OBJECT, meta.META_ENVIRONMENT.ElementID, null /*target stereotype*/, null, "" /*supplierEndRole*/, "" /*cardinality*/, null);
            releasePipeline.addSupplier("prod-environment", APIAddinClass.EA_TYPE_OBJECT, meta.META_ENVIRONMENT.ElementID, null /*target stereotype*/, null, "" /*supplierEndRole*/, "" /*cardinality*/, null);

            return(api);
        }