github.com/furusax0621/goa-v1@v1.4.3/goagen/gen_schema/generator_test.go (about) 1 package genschema_test 2 3 import ( 4 "encoding/json" 5 "io/ioutil" 6 "os" 7 "path/filepath" 8 "strings" 9 10 "github.com/goadesign/goa/design" 11 "github.com/goadesign/goa/design/apidsl" 12 "github.com/goadesign/goa/dslengine" 13 "github.com/goadesign/goa/goagen/codegen" 14 genschema "github.com/goadesign/goa/goagen/gen_schema" 15 "github.com/goadesign/goa/version" 16 . "github.com/onsi/ginkgo" 17 . "github.com/onsi/gomega" 18 ) 19 20 var _ = Describe("Generate", func() { 21 var files []string 22 var genErr error 23 var workspace *codegen.Workspace 24 var testPkg *codegen.Package 25 26 BeforeEach(func() { 27 var err error 28 workspace, err = codegen.NewWorkspace("test") 29 Ω(err).ShouldNot(HaveOccurred()) 30 testPkg, err = workspace.NewPackage("schematest") 31 Ω(err).ShouldNot(HaveOccurred()) 32 os.Args = []string{"goagen", "--out=" + testPkg.Abs(), "--design=foo", "--version=" + version.String()} 33 }) 34 35 JustBeforeEach(func() { 36 files, genErr = genschema.Generate() 37 }) 38 39 AfterEach(func() { 40 workspace.Delete() 41 }) 42 43 Context("with a dummy API", func() { 44 BeforeEach(func() { 45 dslengine.Reset() 46 apidsl.API("test api", func() { 47 apidsl.Title("dummy API with no resource") 48 apidsl.Description("I told you it's dummy") 49 }) 50 dslengine.Run() 51 }) 52 53 It("generates a dummy schema", func() { 54 Ω(genErr).Should(BeNil()) 55 Ω(files).Should(HaveLen(2)) 56 content, err := ioutil.ReadFile(filepath.Join(testPkg.Abs(), "schema", "schema.json")) 57 Ω(err).ShouldNot(HaveOccurred()) 58 Ω(len(strings.Split(string(content), "\n"))).Should(BeNumerically("==", 1)) 59 var s genschema.JSONSchema 60 err = json.Unmarshal(content, &s) 61 Ω(err).ShouldNot(HaveOccurred()) 62 }) 63 }) 64 }) 65 66 var _ = Describe("NewGenerator", func() { 67 var generator *genschema.Generator 68 69 var args = struct { 70 api *design.APIDefinition 71 outDir string 72 }{ 73 api: &design.APIDefinition{ 74 Name: "test api", 75 }, 76 outDir: "out_dir", 77 } 78 79 Context("with options all options set", func() { 80 BeforeEach(func() { 81 82 generator = genschema.NewGenerator( 83 genschema.API(args.api), 84 genschema.OutDir(args.outDir), 85 ) 86 }) 87 88 It("has all public properties set with expected value", func() { 89 Ω(generator).ShouldNot(BeNil()) 90 Ω(generator.API.Name).Should(Equal(args.api.Name)) 91 Ω(generator.OutDir).Should(Equal(args.outDir)) 92 }) 93 }) 94 })