github.com/goreleaser/goreleaser@v1.25.1/internal/pipe/opencollective/opencollective_test.go (about)

     1  package opencollective
     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, "opencollective", 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, defaultTitleTemplate, ctx.Config.Announce.OpenCollective.TitleTemplate)
    20  	require.Equal(t, defaultMessageTemplate, ctx.Config.Announce.OpenCollective.MessageTemplate)
    21  }
    22  
    23  func TestAnnounceInvalidTemplate(t *testing.T) {
    24  	ctx := testctx.NewWithCfg(config.Project{
    25  		Announce: config.Announce{
    26  			OpenCollective: config.OpenCollective{
    27  				MessageTemplate: "{{ .Foo }",
    28  			},
    29  		},
    30  	})
    31  	testlib.RequireTemplateError(t, Pipe{}.Announce(ctx))
    32  }
    33  
    34  func TestAnnounceMissingEnv(t *testing.T) {
    35  	ctx := testctx.NewWithCfg(config.Project{
    36  		Announce: config.Announce{
    37  			OpenCollective: config.OpenCollective{},
    38  		},
    39  	})
    40  	require.NoError(t, Pipe{}.Default(ctx))
    41  	require.EqualError(t, Pipe{}.Announce(ctx), `opencollective: env: environment variable "OPENCOLLECTIVE_TOKEN" should not be empty`)
    42  }
    43  
    44  func TestSkip(t *testing.T) {
    45  	t.Run("skip", func(t *testing.T) {
    46  		require.True(t, Pipe{}.Skip(testctx.New()))
    47  	})
    48  
    49  	t.Run("skip empty slug", func(t *testing.T) {
    50  		require.True(t, Pipe{}.Skip(testctx.NewWithCfg(config.Project{
    51  			Announce: config.Announce{
    52  				OpenCollective: config.OpenCollective{
    53  					Enabled: true,
    54  					Slug:    "", // empty
    55  				},
    56  			},
    57  		})))
    58  	})
    59  
    60  	t.Run("dont skip", func(t *testing.T) {
    61  		require.False(t, Pipe{}.Skip(testctx.NewWithCfg(config.Project{
    62  			Announce: config.Announce{
    63  				OpenCollective: config.OpenCollective{
    64  					Enabled: true,
    65  					Slug:    "goreleaser",
    66  				},
    67  			},
    68  		})))
    69  	})
    70  }