github.com/goravel/framework@v1.13.9/foundation/console/package_make_command_test.go (about) 1 package console 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/assert" 7 8 consolemocks "github.com/goravel/framework/contracts/console/mocks" 9 "github.com/goravel/framework/support/file" 10 ) 11 12 func TestPackageMakeCommand(t *testing.T) { 13 var ( 14 mockContext *consolemocks.Context 15 ) 16 17 beforeEach := func() { 18 mockContext = &consolemocks.Context{} 19 } 20 21 tests := []struct { 22 name string 23 setup func() 24 assert func() 25 }{ 26 { 27 name: "name is empty", 28 setup: func() { 29 mockContext.On("Argument", 0).Return("").Once() 30 }, 31 }, 32 { 33 name: "name is sms and use default root", 34 setup: func() { 35 mockContext.On("Argument", 0).Return("sms").Once() 36 mockContext.On("Option", "root").Return("packages").Once() 37 }, 38 assert: func() { 39 assert.True(t, file.Exists("packages/sms/README.md")) 40 assert.True(t, file.Exists("packages/sms/service_provider.go")) 41 assert.True(t, file.Exists("packages/sms/sms.go")) 42 assert.True(t, file.Exists("packages/sms/config/sms.go")) 43 assert.True(t, file.Exists("packages/sms/contracts/sms.go")) 44 assert.True(t, file.Exists("packages/sms/facades/sms.go")) 45 assert.True(t, file.Contain("packages/sms/facades/sms.go", "goravel/packages/sms")) 46 assert.True(t, file.Contain("packages/sms/facades/sms.go", "goravel/packages/sms/contracts")) 47 assert.Nil(t, file.Remove("packages")) 48 }, 49 }, 50 { 51 name: "name is github.com/goravel/sms and use other root", 52 setup: func() { 53 mockContext.On("Argument", 0).Return("github.com/goravel/sms-aws").Once() 54 mockContext.On("Option", "root").Return("package").Once() 55 }, 56 assert: func() { 57 assert.True(t, file.Exists("package/github_com_goravel_sms_aws/README.md")) 58 assert.True(t, file.Exists("package/github_com_goravel_sms_aws/service_provider.go")) 59 assert.True(t, file.Exists("package/github_com_goravel_sms_aws/github_com_goravel_sms_aws.go")) 60 assert.True(t, file.Exists("package/github_com_goravel_sms_aws/config/github_com_goravel_sms_aws.go")) 61 assert.True(t, file.Exists("package/github_com_goravel_sms_aws/contracts/github_com_goravel_sms_aws.go")) 62 assert.True(t, file.Exists("package/github_com_goravel_sms_aws/facades/github_com_goravel_sms_aws.go")) 63 assert.Nil(t, file.Remove("package")) 64 }, 65 }, 66 } 67 for _, test := range tests { 68 t.Run(test.name, func(t *testing.T) { 69 beforeEach() 70 test.setup() 71 _ = NewPackageMakeCommand().Handle(mockContext) 72 if test.assert != nil { 73 test.assert() 74 } 75 mockContext.AssertExpectations(t) 76 }) 77 } 78 } 79 80 func TestPackageName(t *testing.T) { 81 input := "github.com/example/package-name" 82 expected := "package_name" 83 assert.Equal(t, expected, packageName(input)) 84 85 input2 := "example.com/another_package.name" 86 expected2 := "another_package_name" 87 assert.Equal(t, expected2, packageName(input2)) 88 }