From 68e90d16cc8201acb0f100b6959c85354be8730a Mon Sep 17 00:00:00 2001 From: Dave Shanley Date: Wed, 31 Aug 2022 10:50:20 -0400 Subject: [PATCH] Added a couple of null checks to v3 model Asana spec was blowing up, now it's working as expected. --- datamodel/high/3.0/document_test.go | 12 ++++++++++++ datamodel/high/3.0/external_doc.go | 8 ++++++-- datamodel/high/3.0/tag.go | 12 +++++++++--- 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/datamodel/high/3.0/document_test.go b/datamodel/high/3.0/document_test.go index 0a8a897..86eb9b8 100644 --- a/datamodel/high/3.0/document_test.go +++ b/datamodel/high/3.0/document_test.go @@ -350,6 +350,18 @@ func TestStripeAsDoc(t *testing.T) { fmt.Println(d) } +func TestAsanaAsDoc(t *testing.T) { + data, _ := ioutil.ReadFile("../../../test_specs/asana.yaml") + info, _ := datamodel.ExtractSpecInfo(data) + var err []error + doc, err = lowv3.CreateDocument(info) + if err != nil { + panic("broken something") + } + d := NewDocument(doc) + fmt.Println(d) +} + func TestCircularReferencesDoc(t *testing.T) { data, _ := ioutil.ReadFile("../../../test_specs/circular-tests.yaml") info, _ := datamodel.ExtractSpecInfo(data) diff --git a/datamodel/high/3.0/external_doc.go b/datamodel/high/3.0/external_doc.go index 740ccc5..c192121 100644 --- a/datamodel/high/3.0/external_doc.go +++ b/datamodel/high/3.0/external_doc.go @@ -18,8 +18,12 @@ type ExternalDoc struct { func NewExternalDoc(extDoc *low.ExternalDoc) *ExternalDoc { d := new(ExternalDoc) d.low = extDoc - d.Description = extDoc.Description.Value - d.URL = extDoc.URL.Value + if !extDoc.Description.IsEmpty() { + d.Description = extDoc.Description.Value + } + if !extDoc.URL.IsEmpty() { + d.URL = extDoc.URL.Value + } d.Extensions = high.ExtractExtensions(extDoc.Extensions) return d } diff --git a/datamodel/high/3.0/tag.go b/datamodel/high/3.0/tag.go index 4d84511..3908456 100644 --- a/datamodel/high/3.0/tag.go +++ b/datamodel/high/3.0/tag.go @@ -19,9 +19,15 @@ type Tag struct { func NewTag(tag *low.Tag) *Tag { t := new(Tag) t.low = tag - t.Name = tag.Name.Value - t.Description = tag.Description.Value - t.ExternalDocs = NewExternalDoc(tag.ExternalDocs.Value) + if !tag.Name.IsEmpty() { + t.Name = tag.Name.Value + } + if !tag.Description.IsEmpty() { + t.Description = tag.Description.Value + } + if !tag.ExternalDocs.IsEmpty() { + t.ExternalDocs = NewExternalDoc(tag.ExternalDocs.Value) + } t.Extensions = high.ExtractExtensions(tag.Extensions) return t }