github.com/YousefHaggyHeroku/pack@v1.5.5/internal/builder/writer/factory_test.go (about) 1 package writer_test 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/YousefHaggyHeroku/pack/internal/builder/writer" 8 h "github.com/YousefHaggyHeroku/pack/testhelpers" 9 10 "github.com/heroku/color" 11 "github.com/sclevine/spec" 12 "github.com/sclevine/spec/report" 13 ) 14 15 func TestFactory(t *testing.T) { 16 color.Disable(true) 17 defer color.Disable(false) 18 spec.Run(t, "Builder Writer Factory", testFactory, spec.Parallel(), spec.Report(report.Terminal{})) 19 } 20 21 func testFactory(t *testing.T, when spec.G, it spec.S) { 22 var assert = h.NewAssertionManager(t) 23 24 when("Writer", func() { 25 when("output format is human-readable", func() { 26 it("returns a HumanReadable writer", func() { 27 factory := writer.NewFactory() 28 29 returnedWriter, err := factory.Writer("human-readable") 30 assert.Nil(err) 31 _, ok := returnedWriter.(*writer.HumanReadable) 32 assert.TrueWithMessage( 33 ok, 34 fmt.Sprintf("expected %T to be assignable to type `*writer.HumanReadable`", returnedWriter), 35 ) 36 }) 37 }) 38 39 when("output format is json", func() { 40 it("return a JSON writer", func() { 41 factory := writer.NewFactory() 42 43 returnedWriter, err := factory.Writer("json") 44 assert.Nil(err) 45 46 _, ok := returnedWriter.(*writer.JSON) 47 assert.TrueWithMessage( 48 ok, 49 fmt.Sprintf("expected %T to be assignable to type `*writer.JSON`", returnedWriter), 50 ) 51 }) 52 }) 53 54 when("output format is yaml", func() { 55 it("return a YAML writer", func() { 56 factory := writer.NewFactory() 57 58 returnedWriter, err := factory.Writer("yaml") 59 assert.Nil(err) 60 61 _, ok := returnedWriter.(*writer.YAML) 62 assert.TrueWithMessage( 63 ok, 64 fmt.Sprintf("expected %T to be assignable to type `*writer.YAML`", returnedWriter), 65 ) 66 }) 67 }) 68 69 when("output format is toml", func() { 70 it("return a TOML writer", func() { 71 factory := writer.NewFactory() 72 73 returnedWriter, err := factory.Writer("toml") 74 assert.Nil(err) 75 76 _, ok := returnedWriter.(*writer.TOML) 77 assert.TrueWithMessage( 78 ok, 79 fmt.Sprintf("expected %T to be assignable to type `*writer.TOML`", returnedWriter), 80 ) 81 }) 82 }) 83 84 when("output format is not supported", func() { 85 it("returns an error", func() { 86 factory := writer.NewFactory() 87 88 _, err := factory.Writer("mind-beam") 89 assert.ErrorWithMessage(err, "output format 'mind-beam' is not supported") 90 }) 91 }) 92 }) 93 }