github.com/mongodb/grip@v0.0.0-20240213223901-f906268d82b9/message/slack_test.go (about)

     1  package message
     2  
     3  import (
     4  	"reflect"
     5  	"testing"
     6  
     7  	"github.com/slack-go/slack"
     8  	"github.com/stretchr/testify/assert"
     9  )
    10  
    11  func TestSlackAttachmentFieldConvert(t *testing.T) {
    12  	assert := assert.New(t) //nolint
    13  
    14  	gripField := SlackAttachmentField{
    15  		Title: "1",
    16  		Value: "2",
    17  		Short: true,
    18  	}
    19  	slackField := gripField.convert()
    20  
    21  	assert.Equal("1", slackField.Title)
    22  	assert.Equal("2", slackField.Value)
    23  	assert.True(slackField.Short)
    24  }
    25  
    26  func TestSlackAttachmentConvert(t *testing.T) {
    27  	assert := assert.New(t) //nolint
    28  
    29  	af := SlackAttachmentField{
    30  		Title: "1",
    31  		Value: "2",
    32  		Short: true,
    33  	}
    34  
    35  	at := SlackAttachment{
    36  		Color:      "1",
    37  		Fallback:   "2",
    38  		AuthorName: "3",
    39  		AuthorIcon: "6",
    40  		Title:      "7",
    41  		TitleLink:  "8",
    42  		Text:       "10",
    43  		Fields:     []*SlackAttachmentField{&af},
    44  		MarkdownIn: []string{"15", "16"},
    45  	}
    46  	slackAttachment := at.convert()
    47  
    48  	assert.Equal("1", slackAttachment.Color)
    49  	assert.Equal("2", slackAttachment.Fallback)
    50  	assert.Equal("3", slackAttachment.AuthorName)
    51  	assert.Equal("6", slackAttachment.AuthorIcon)
    52  	assert.Equal("7", slackAttachment.Title)
    53  	assert.Equal("8", slackAttachment.TitleLink)
    54  	assert.Equal("10", slackAttachment.Text)
    55  	assert.Equal([]string{"15", "16"}, slackAttachment.MarkdownIn)
    56  	assert.Len(slackAttachment.Fields, 1)
    57  	assert.Equal("1", slackAttachment.Fields[0].Title)
    58  	assert.Equal("2", slackAttachment.Fields[0].Value)
    59  	assert.True(slackAttachment.Fields[0].Short)
    60  }
    61  
    62  func TestSlackAttachmentIsSame(t *testing.T) {
    63  	assert := assert.New(t) //nolint
    64  
    65  	grip := SlackAttachment{}
    66  	slack := slack.Attachment{}
    67  
    68  	vGrip := reflect.TypeOf(grip)
    69  	vSlack := reflect.TypeOf(slack)
    70  
    71  	for i := 0; i < vSlack.NumField(); i++ {
    72  		slackField := vSlack.Field(i)
    73  		gripField, found := vGrip.FieldByName(slackField.Name)
    74  		if !found {
    75  			continue
    76  		}
    77  
    78  		referenceTag := slackField.Tag.Get("json")
    79  		assert.NotEmpty(referenceTag)
    80  		jsonTag := gripField.Tag.Get("json")
    81  		assert.Equal(referenceTag, jsonTag, "SlackAttachment.%s should have json tag with value: \"%s\"", gripField.Name, referenceTag)
    82  		bsonTag := gripField.Tag.Get("bson")
    83  		assert.Equal(referenceTag, bsonTag, "SlackAttachment.%s should have bson tag with value: \"%s\"", gripField.Name, referenceTag)
    84  		yamlTag := gripField.Tag.Get("yaml")
    85  		assert.Equal(referenceTag, yamlTag, "SlackAttachment.%s should have yaml tag with value: \"%s\"", gripField.Name, referenceTag)
    86  	}
    87  
    88  }
    89  
    90  func TestSlackAttachmentFieldIsSame(t *testing.T) {
    91  	assert := assert.New(t) //nolint
    92  
    93  	gripStruct := SlackAttachmentField{}
    94  	slackStruct := slack.AttachmentField{}
    95  
    96  	vGrip := reflect.TypeOf(gripStruct)
    97  	vSlack := reflect.TypeOf(slackStruct)
    98  
    99  	assert.Equal(vSlack.NumField(), vGrip.NumField())
   100  	for i := 0; i < vSlack.NumField(); i++ {
   101  		slackField := vSlack.Field(i)
   102  		gripField, found := vGrip.FieldByName(slackField.Name)
   103  		assert.True(found, "field %s found in slack.AttachmentField, but not in message.SlackAttachmentField", slackField.Name)
   104  		if !found {
   105  			continue
   106  		}
   107  
   108  		referenceTag := slackField.Tag.Get("json")
   109  		assert.NotEmpty(referenceTag)
   110  		jsonTag := gripField.Tag.Get("json")
   111  		assert.Equal(referenceTag, jsonTag, "SlackAttachmentField.%s should have json tag with value: \"%s\"", gripField.Name, referenceTag)
   112  		bsonTag := gripField.Tag.Get("bson")
   113  		assert.Equal(referenceTag, bsonTag, "SlackAttachmentField.%s should have bson tag with value: \"%s\"", gripField.Name, referenceTag)
   114  		yamlTag := gripField.Tag.Get("yaml")
   115  		assert.Equal(referenceTag, yamlTag, "SlackAttachmentField.%s should have yaml tag with value: \"%s\"", gripField.Name, referenceTag)
   116  
   117  		assert.Equal(slackField.Type.Kind(), gripField.Type.Kind())
   118  	}
   119  }