github.com/mailgun/mailgun-go/v3@v3.6.4/template_versions_test.go (about)

     1  package mailgun_test
     2  
     3  import (
     4  	"context"
     5  	"testing"
     6  
     7  	"github.com/facebookgo/ensure"
     8  	"github.com/mailgun/mailgun-go/v3"
     9  )
    10  
    11  func TestTemplateVersionsCRUD(t *testing.T) {
    12  	if reason := mailgun.SkipNetworkTest(); reason != "" {
    13  		t.Skip(reason)
    14  	}
    15  
    16  	mg, err := mailgun.NewMailgunFromEnv()
    17  	ensure.Nil(t, err)
    18  	ctx := context.Background()
    19  
    20  	findVersion := func(templateName, tag string) bool {
    21  		it := mg.ListTemplateVersions(templateName, nil)
    22  
    23  		var page []mailgun.TemplateVersion
    24  		for it.Next(ctx, &page) {
    25  			for _, v := range page {
    26  				if v.Tag == tag {
    27  					return true
    28  				}
    29  			}
    30  		}
    31  		ensure.Nil(t, it.Err())
    32  		return false
    33  	}
    34  
    35  	const (
    36  		Comment        = "Mailgun-Go TestTemplateVersionsCRUD"
    37  		UpdatedComment = "Mailgun-Go Test Version Updated"
    38  		Template       = "{{.Name}}"
    39  		Tag            = "v1"
    40  	)
    41  
    42  	tmpl := mailgun.Template{
    43  		Name: randomString(10, "Mailgun-go-TestTemplateVersionsCRUD-"),
    44  	}
    45  
    46  	// Create a template
    47  	ensure.Nil(t, mg.CreateTemplate(ctx, &tmpl))
    48  
    49  	version := mailgun.TemplateVersion{
    50  		Tag:      Tag,
    51  		Comment:  Comment,
    52  		Template: Template,
    53  		Active:   true,
    54  		Engine:   mailgun.TemplateEngineGo,
    55  	}
    56  
    57  	// Add a version version
    58  	ensure.Nil(t, mg.AddTemplateVersion(ctx, tmpl.Name, &version))
    59  	ensure.DeepEqual(t, version.Tag, Tag)
    60  	ensure.DeepEqual(t, version.Comment, Comment)
    61  	ensure.DeepEqual(t, version.Engine, mailgun.TemplateEngineGo)
    62  
    63  	// Ensure the version is in the list
    64  	ensure.True(t, findVersion(tmpl.Name, version.Tag))
    65  
    66  	// Update the Comment
    67  	version.Comment = UpdatedComment
    68  	ensure.Nil(t, mg.UpdateTemplateVersion(ctx, tmpl.Name, &version))
    69  
    70  	// Ensure update took
    71  	updated, err := mg.GetTemplateVersion(ctx, tmpl.Name, version.Tag)
    72  
    73  	ensure.DeepEqual(t, updated.Comment, UpdatedComment)
    74  
    75  	// Add a new active Version
    76  	version2 := mailgun.TemplateVersion{
    77  		Tag:      "v2",
    78  		Comment:  Comment,
    79  		Template: Template,
    80  		Active:   true,
    81  		Engine:   mailgun.TemplateEngineGo,
    82  	}
    83  	ensure.Nil(t, mg.AddTemplateVersion(ctx, tmpl.Name, &version2))
    84  
    85  	// Ensure the version is in the list
    86  	ensure.True(t, findVersion(tmpl.Name, version2.Tag))
    87  
    88  	// Delete the first version
    89  	ensure.Nil(t, mg.DeleteTemplateVersion(ctx, tmpl.Name, version.Tag))
    90  
    91  	// Ensure version was deleted
    92  	ensure.False(t, findVersion(tmpl.Name, version.Tag))
    93  
    94  	// Delete the template
    95  	ensure.Nil(t, mg.DeleteTemplate(ctx, tmpl.Name))
    96  }