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 }