github.com/goreleaser/goreleaser@v1.25.1/internal/pipe/discord/discord_test.go (about)

     1  package discord
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/goreleaser/goreleaser/internal/testctx"
     7  	"github.com/goreleaser/goreleaser/internal/testlib"
     8  	"github.com/goreleaser/goreleaser/pkg/config"
     9  	"github.com/stretchr/testify/require"
    10  )
    11  
    12  func TestStringer(t *testing.T) {
    13  	require.Equal(t, "discord", Pipe{}.String())
    14  }
    15  
    16  func TestDefault(t *testing.T) {
    17  	ctx := testctx.New()
    18  	require.NoError(t, Pipe{}.Default(ctx))
    19  	require.Equal(t, defaultMessageTemplate, ctx.Config.Announce.Discord.MessageTemplate)
    20  }
    21  
    22  func TestAnnounceInvalidTemplate(t *testing.T) {
    23  	ctx := testctx.NewWithCfg(config.Project{
    24  		Announce: config.Announce{
    25  			Discord: config.Discord{
    26  				MessageTemplate: "{{ .Foo }",
    27  			},
    28  		},
    29  	})
    30  	testlib.RequireTemplateError(t, Pipe{}.Announce(ctx))
    31  }
    32  
    33  func TestAnnounceMissingEnv(t *testing.T) {
    34  	ctx := testctx.NewWithCfg(config.Project{
    35  		Announce: config.Announce{
    36  			Discord: config.Discord{},
    37  		},
    38  	})
    39  	require.NoError(t, Pipe{}.Default(ctx))
    40  	require.EqualError(t, Pipe{}.Announce(ctx), `discord: env: environment variable "DISCORD_WEBHOOK_ID" should not be empty; environment variable "DISCORD_WEBHOOK_TOKEN" should not be empty`)
    41  }
    42  
    43  func TestSkip(t *testing.T) {
    44  	t.Run("skip", func(t *testing.T) {
    45  		require.True(t, Pipe{}.Skip(testctx.New()))
    46  	})
    47  
    48  	t.Run("dont skip", func(t *testing.T) {
    49  		ctx := testctx.NewWithCfg(config.Project{
    50  			Announce: config.Announce{
    51  				Discord: config.Discord{
    52  					Enabled: true,
    53  				},
    54  			},
    55  		})
    56  		require.False(t, Pipe{}.Skip(ctx))
    57  	})
    58  }
    59  
    60  func TestLive(t *testing.T) {
    61  	t.SkipNow()
    62  	t.Setenv("DISCORD_WEBHOOK_ID", "TODO")
    63  	t.Setenv("DISCORD_WEBHOOK_TOKEN", "TODO")
    64  
    65  	ctx := testctx.NewWithCfg(config.Project{
    66  		Announce: config.Announce{
    67  			Discord: config.Discord{
    68  				MessageTemplate: "test",
    69  				Enabled:         true,
    70  			},
    71  		},
    72  	})
    73  
    74  	require.NoError(t, Pipe{}.Default(ctx))
    75  	require.NoError(t, Pipe{}.Announce(ctx))
    76  }