func TestMemoizeGetter(t *testing.T) { var calls int f := func(s string) (string, error) { calls++ if s == "error" { return "", errors.New("oops") } return "called:" + s, nil } memoized := memoizeGetter(f) require.NotNil(t, memoized) assert.Equal(t, 0, calls) s, err := memoized("yo") assert.Nil(t, err) assert.Equal(t, "called:yo", s) assert.Equal(t, 1, calls) s, err = memoized("yo") assert.Nil(t, err) assert.Equal(t, "called:yo", s) assert.Equal(t, 1, calls) s, err = memoized("error") assert.NotNil(t, err) assert.Equal(t, 2, calls) s, err = memoized("error") assert.NotNil(t, err) assert.Equal(t, 3, calls) }
func TestEditedMessage(t *testing.T) { message, err := unmarshalMessage(editedMessage) assert.Nil(t, err) assert.NotNil(t, message) assert.Equal(t, "message", message.Type) assert.Equal(t, "U2147483697", message.User) assert.Equal(t, "hello edited", message.Text) assert.NotNil(t, message.Edited) assert.Equal(t, "U2147483697", message.Edited.User) assert.Equal(t, "1433314416.000000", message.Edited.Timestamp) assert.Equal(t, "1433314408.000004", message.Timestamp) }
func TestGroupArchiveMessage(t *testing.T) { message, err := unmarshalMessage(groupArchiveMessage) assert.Nil(t, err) assert.NotNil(t, message) assert.Equal(t, "message", message.Type) assert.Equal(t, "group_archive", message.SubType) assert.Equal(t, "1361482916.000003", message.Timestamp) assert.Equal(t, "<U1234|@cal> archived the group", message.Text) assert.Equal(t, "U1234", message.User) assert.NotNil(t, message.Members) assert.Equal(t, 2, len(message.Members)) }
func TestFileShareMessage(t *testing.T) { message, err := unmarshalMessage(fileShareMessage) fmt.Println(err) assert.Nil(t, err) assert.NotNil(t, message) assert.Equal(t, "message", message.Type) assert.Equal(t, "file_share", message.SubType) assert.Equal(t, "1358877455.000010", message.Timestamp) assert.Equal(t, "<@cal> uploaded a file: <https:...7.png|7.png>", message.Text) assert.Equal(t, "U2147483697", message.User) assert.True(t, message.Upload) assert.NotNil(t, message.File) }
func TestBotMessage(t *testing.T) { message, err := unmarshalMessage(botMessage) assert.Nil(t, err) assert.NotNil(t, message) assert.Equal(t, "message", message.Type) assert.Equal(t, "bot_message", message.SubType) assert.Equal(t, "1358877455.000010", message.Timestamp) assert.Equal(t, "Pushing is the answer", message.Text) assert.Equal(t, "BB12033", message.BotID) assert.Equal(t, "github", message.Username) assert.NotNil(t, message.Icons) assert.Empty(t, message.Icons.IconURL) assert.Empty(t, message.Icons.IconEmoji) }
func TestMessageChangedMessage(t *testing.T) { message, err := unmarshalMessage(messageChangedMessage) assert.Nil(t, err) assert.NotNil(t, message) assert.Equal(t, "message", message.Type) assert.Equal(t, "message_changed", message.SubType) assert.True(t, message.Hidden) assert.Equal(t, "C2147483705", message.Channel) assert.NotNil(t, message.SubMessage) assert.Equal(t, "message", message.SubMessage.Type) assert.Equal(t, "U2147483697", message.SubMessage.User) assert.Equal(t, "Hello, world!", message.SubMessage.Text) assert.Equal(t, "1355517523.000005", message.SubMessage.Timestamp) assert.NotNil(t, message.SubMessage.Edited) assert.Equal(t, "U2147483697", message.SubMessage.Edited.User) assert.Equal(t, "1358878755.000001", message.SubMessage.Edited.Timestamp) assert.Equal(t, "1358878755.000001", message.Timestamp) }
func TestSimpleMessage(t *testing.T) { message, err := unmarshalMessage(simpleMessage) assert.Nil(t, err) assert.NotNil(t, message) assert.Equal(t, "message", message.Type) assert.Equal(t, "C2147483705", message.Channel) assert.Equal(t, "U2147483697", message.User) assert.Equal(t, "Hello world", message.Text) assert.Equal(t, "1355517523.000005", message.Timestamp) }
func TestGroupLeaveMessage(t *testing.T) { message, err := unmarshalMessage(groupLeaveMessage) assert.Nil(t, err) assert.NotNil(t, message) assert.Equal(t, "message", message.Type) assert.Equal(t, "group_leave", message.SubType) assert.Equal(t, "1358877455.000010", message.Timestamp) assert.Equal(t, "U2147483828", message.User) assert.Equal(t, "<@U2147483828|cal> has left the group", message.Text) }
func TestGroupJoinMessage(t *testing.T) { message, err := unmarshalMessage(groupJoinMessage) assert.Nil(t, err) assert.NotNil(t, message) assert.Equal(t, "message", message.Type) assert.Equal(t, "group_join", message.SubType) assert.Equal(t, "1358877458.000011", message.Timestamp) assert.Equal(t, "U2147483828", message.User) assert.Equal(t, "<@U2147483828|cal> has joined the group", message.Text) }
func TestChannelUnarchiveMessage(t *testing.T) { message, err := unmarshalMessage(channelUnarchiveMessage) assert.Nil(t, err) assert.NotNil(t, message) assert.Equal(t, "message", message.Type) assert.Equal(t, "channel_unarchive", message.SubType) assert.Equal(t, "1361482916.000003", message.Timestamp) assert.Equal(t, "<U1234|@cal> un-archived the channel", message.Text) assert.Equal(t, "U1234", message.User) }
func assertSimpleIM(t *testing.T, im *IM) { assert.NotNil(t, im) assert.Equal(t, "D024BFF1M", im.ID) assert.Equal(t, true, im.IsIM) assert.Equal(t, JSONTime(1360782804), im.Created) assert.Equal(t, false, im.IsUserDeleted) assert.Equal(t, true, im.IsOpen) assert.Equal(t, "1401383885.000061", im.LastRead) assert.Equal(t, 0, im.UnreadCount) assert.Equal(t, 0, im.UnreadCountDisplay) }
func TestMeMessage(t *testing.T) { message, err := unmarshalMessage(meMessage) assert.Nil(t, err) assert.NotNil(t, message) assert.Equal(t, "message", message.Type) assert.Equal(t, "me_message", message.SubType) assert.Equal(t, "C2147483705", message.Channel) assert.Equal(t, "U2147483697", message.User) assert.Equal(t, "is doing that thing", message.Text) assert.Equal(t, "1355517523.000005", message.Timestamp) }
func TestMessageDeletedMessage(t *testing.T) { message, err := unmarshalMessage(messageDeletedMessage) assert.Nil(t, err) assert.NotNil(t, message) assert.Equal(t, "message", message.Type) assert.Equal(t, "message_deleted", message.SubType) assert.True(t, message.Hidden) assert.Equal(t, "C2147483705", message.Channel) assert.Equal(t, "1358878755.000001", message.Timestamp) assert.Equal(t, "1358878749.000002", message.DeletedTimestamp) }
func TestGroupPurposeMessage(t *testing.T) { message, err := unmarshalMessage(groupPurposeMessage) assert.Nil(t, err) assert.NotNil(t, message) assert.Equal(t, "message", message.Type) assert.Equal(t, "group_purpose", message.SubType) assert.Equal(t, "1358877455.000010", message.Timestamp) assert.Equal(t, "U2147483828", message.User) assert.Equal(t, "whatever", message.Purpose) assert.Equal(t, "<@U2147483828|cal> set the group purpose: whatever", message.Text) }
func TestGroupTopicMessage(t *testing.T) { message, err := unmarshalMessage(groupTopicMessage) assert.Nil(t, err) assert.NotNil(t, message) assert.Equal(t, "message", message.Type) assert.Equal(t, "group_topic", message.SubType) assert.Equal(t, "1358877455.000010", message.Timestamp) assert.Equal(t, "U2147483828", message.User) assert.Equal(t, "hello world", message.Topic) assert.Equal(t, "<@U2147483828|cal> set the group topic: hello world", message.Text) }
func TestStarredMessage(t *testing.T) { message, err := unmarshalMessage(starredMessage) assert.Nil(t, err) assert.NotNil(t, message) assert.Equal(t, "is testing", message.Text) assert.Equal(t, "message", message.Type) assert.Equal(t, "me_message", message.SubType) assert.Equal(t, "U2147483697", message.User) assert.Equal(t, "1433314126.000003", message.Timestamp) assert.Equal(t, true, message.IsStarred) }
func TestChannelJoinInvitedMessage(t *testing.T) { message, err := unmarshalMessage(channelJoinInvitedMessage) assert.Nil(t, err) assert.NotNil(t, message) assert.Equal(t, "message", message.Type) assert.Equal(t, "channel_join", message.SubType) assert.Equal(t, "1358877458.000011", message.Timestamp) assert.Equal(t, "U2147483828", message.User) assert.Equal(t, "<@U2147483828|cal> has joined the channel", message.Text) assert.Equal(t, "U2147483829", message.Inviter) }
func TestUploadedFile(t *testing.T) { message, err := unmarshalMessage(uploadedFile) assert.Nil(t, err) assert.NotNil(t, message) assert.Equal(t, "message", message.Type) assert.Equal(t, "file_share", message.SubType) assert.Equal(t, "<@U2147483697|tester> uploaded a file: <https://test.slack.com/files/tester/abc/test.txt|test.txt> and commented: test comment here", message.Text) // TODO: Assert File assert.Equal(t, "U2147483697", message.User) assert.True(t, message.Upload) assert.Equal(t, "1433314757.000006", message.Timestamp) }
func assertSimpleGroup(t *testing.T, group *Group) { assert.NotNil(t, group) assert.Equal(t, "G024BE91L", group.ID) assert.Equal(t, "secretplans", group.Name) assert.Equal(t, true, group.IsGroup) assert.Equal(t, JSONTime(1360782804), group.Created) assert.Equal(t, "U024BE7LH", group.Creator) assert.Equal(t, false, group.IsArchived) assert.Equal(t, "1401383885.000061", group.LastRead) assert.Equal(t, 0, group.UnreadCount) assert.Equal(t, 0, group.UnreadCountDisplay) }
func TestComment(t *testing.T) { message, err := unmarshalMessage(testComment) fmt.Println(err) assert.Nil(t, err) assert.NotNil(t, message) assert.Equal(t, "message", message.Type) assert.Equal(t, "file_comment", message.SubType) assert.Equal(t, "<@U2147483697|tester> commented on <@U2147483697|tester>'s file <https://test.slack.com/files/tester/abc/test_post|test post>: another comment", message.Text) // TODO: Assert File // TODO: Assert Comment assert.Equal(t, "1433316360.000009", message.Timestamp) }
func TestGroupNameMessage(t *testing.T) { message, err := unmarshalMessage(groupNameMessage) assert.Nil(t, err) assert.NotNil(t, message) assert.Equal(t, "message", message.Type) assert.Equal(t, "group_name", message.SubType) assert.Equal(t, "1358877455.000010", message.Timestamp) assert.Equal(t, "U2147483828", message.User) assert.Equal(t, "random", message.OldName) assert.Equal(t, "watercooler", message.Name) assert.Equal(t, "<@U2147483828|cal> has renamed the group from \"random\" to \"watercooler\"", message.Text) }
func TestPost(t *testing.T) { message, err := unmarshalMessage(testPost) assert.Nil(t, err) assert.NotNil(t, message) assert.Equal(t, "message", message.Type) assert.Equal(t, "file_share", message.SubType) assert.Equal(t, "<@U2147483697|tester> shared a file: <https://test.slack.com/files/tester/abc/test_post|test post>", message.Text) // TODO: Assert File assert.Equal(t, "U2147483697", message.User) assert.False(t, message.Upload) assert.Equal(t, "1433315416.000008", message.Timestamp) }
func assertSimpleChannel(t *testing.T, channel *Channel) { assert.NotNil(t, channel) assert.Equal(t, "C024BE91L", channel.ID) assert.Equal(t, "fun", channel.Name) assert.Equal(t, true, channel.IsChannel) assert.Equal(t, JSONTime(1360782804), channel.Created) assert.Equal(t, "U024BE7LH", channel.Creator) assert.Equal(t, false, channel.IsArchived) assert.Equal(t, false, channel.IsGeneral) assert.Equal(t, true, channel.IsMember) assert.Equal(t, "1401383885.000061", channel.LastRead) assert.Equal(t, 0, channel.UnreadCount) assert.Equal(t, 0, channel.UnreadCountDisplay) }
// NotNil asserts that the specified object is not nil. // // require.NotNil(t, err, "err should be something") func NotNil(t TestingT, object interface{}, msgAndArgs ...interface{}) { if !assert.NotNil(t, object, msgAndArgs...) { t.FailNow() } }