github.com/windmeup/goreleaser@v1.21.95/internal/pipe/telegram/telegram_test.go (about)

     1  package telegram
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/require"
     7  	"github.com/windmeup/goreleaser/internal/testctx"
     8  	"github.com/windmeup/goreleaser/internal/testlib"
     9  	"github.com/windmeup/goreleaser/pkg/config"
    10  )
    11  
    12  func TestStringer(t *testing.T) {
    13  	require.Equal(t, Pipe{}.String(), "telegram")
    14  }
    15  
    16  func TestDefault(t *testing.T) {
    17  	t.Run("empty", func(t *testing.T) {
    18  		ctx := testctx.New()
    19  		require.NoError(t, Pipe{}.Default(ctx))
    20  		require.Equal(t, ctx.Config.Announce.Telegram.MessageTemplate, defaultMessageTemplate)
    21  		require.Equal(t, ctx.Config.Announce.Telegram.ParseMode, parseModeMarkdown)
    22  	})
    23  	t.Run("markdownv2 parsemode", func(t *testing.T) {
    24  		ctx := testctx.New()
    25  		ctx.Config.Announce.Telegram.ParseMode = parseModeMarkdown
    26  		require.NoError(t, Pipe{}.Default(ctx))
    27  		require.Equal(t, ctx.Config.Announce.Telegram.ParseMode, parseModeMarkdown)
    28  	})
    29  	t.Run("html parsemode", func(t *testing.T) {
    30  		ctx := testctx.New()
    31  		ctx.Config.Announce.Telegram.ParseMode = parseModeHTML
    32  		require.NoError(t, Pipe{}.Default(ctx))
    33  		require.Equal(t, ctx.Config.Announce.Telegram.ParseMode, parseModeHTML)
    34  	})
    35  }
    36  
    37  func TestAnnounceInvalidTemplate(t *testing.T) {
    38  	t.Run("message", func(t *testing.T) {
    39  		ctx := testctx.NewWithCfg(config.Project{
    40  			Announce: config.Announce{
    41  				Telegram: config.Telegram{
    42  					MessageTemplate: "{{ .Foo }",
    43  				},
    44  			},
    45  		})
    46  		testlib.RequireTemplateError(t, Pipe{}.Announce(ctx))
    47  	})
    48  	t.Run("chatid", func(t *testing.T) {
    49  		ctx := testctx.NewWithCfg(config.Project{
    50  			Announce: config.Announce{
    51  				Telegram: config.Telegram{
    52  					MessageTemplate: "test",
    53  					ChatID:          "{{ .Foo }",
    54  				},
    55  			},
    56  		})
    57  		testlib.RequireTemplateError(t, Pipe{}.Announce(ctx))
    58  	})
    59  	t.Run("chatid not int", func(t *testing.T) {
    60  		ctx := testctx.NewWithCfg(config.Project{
    61  			Env: []string{"CHAT_ID=test"},
    62  			Announce: config.Announce{
    63  				Telegram: config.Telegram{
    64  					MessageTemplate: "test",
    65  					ChatID:          "{{ .Env.CHAT_ID }}",
    66  				},
    67  			},
    68  		})
    69  		require.EqualError(t, Pipe{}.Announce(ctx), "telegram: strconv.ParseInt: parsing \"test\": invalid syntax")
    70  	})
    71  }
    72  
    73  func TestAnnounceMissingEnv(t *testing.T) {
    74  	ctx := testctx.NewWithCfg(config.Project{
    75  		Env: []string{"CHAT_ID=10"},
    76  		Announce: config.Announce{
    77  			Telegram: config.Telegram{
    78  				ChatID: "{{ .Env.CHAT_ID }}",
    79  			},
    80  		},
    81  	})
    82  	require.NoError(t, Pipe{}.Default(ctx))
    83  	require.EqualError(t, Pipe{}.Announce(ctx), `telegram: env: environment variable "TELEGRAM_TOKEN" should not be empty`)
    84  }
    85  
    86  func TestSkip(t *testing.T) {
    87  	t.Run("skip", func(t *testing.T) {
    88  		require.True(t, Pipe{}.Skip(testctx.New()))
    89  	})
    90  
    91  	t.Run("dont skip", func(t *testing.T) {
    92  		ctx := testctx.NewWithCfg(config.Project{
    93  			Announce: config.Announce{
    94  				Telegram: config.Telegram{
    95  					Enabled: true,
    96  				},
    97  			},
    98  		})
    99  		require.False(t, Pipe{}.Skip(ctx))
   100  	})
   101  }
   102  
   103  func TestGetMessageDetails(t *testing.T) {
   104  	t.Run("default message template", func(t *testing.T) {
   105  		ctx := testctx.NewWithCfg(
   106  			config.Project{
   107  				ProjectName: "foo",
   108  				Announce: config.Announce{
   109  					Telegram: config.Telegram{
   110  						ChatID: "1230212",
   111  					},
   112  				},
   113  			},
   114  			testctx.WithCurrentTag("v1.0.0"),
   115  		)
   116  		require.NoError(t, Pipe{}.Default(ctx))
   117  		msg, _, err := getMessageDetails(ctx)
   118  		require.NoError(t, err)
   119  		require.Equal(t, "foo v1\\.0\\.0 is out! Check it out at ", msg)
   120  	})
   121  }