github.com/diamondburned/arikawa/v2@v2.1.0/state/store/defaultstore/message_test.go (about)

     1  package defaultstore
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/diamondburned/arikawa/v2/discord"
     7  )
     8  
     9  func populate12Store() *Message {
    10  	store := NewMessage(10)
    11  
    12  	// Insert a regular list of messages.
    13  	store.MessageSet(discord.Message{ID: 11, ChannelID: 1})
    14  	store.MessageSet(discord.Message{ID: 9, ChannelID: 1})
    15  	store.MessageSet(discord.Message{ID: 7, ChannelID: 1})
    16  	store.MessageSet(discord.Message{ID: 5, ChannelID: 1})
    17  	store.MessageSet(discord.Message{ID: 3, ChannelID: 1})
    18  	store.MessageSet(discord.Message{ID: 1, ChannelID: 1})
    19  
    20  	// Try to insert newer messages after inserting new messages.
    21  	store.MessageSet(discord.Message{ID: 12, ChannelID: 1})
    22  	store.MessageSet(discord.Message{ID: 10, ChannelID: 1})
    23  	store.MessageSet(discord.Message{ID: 8, ChannelID: 1})
    24  	store.MessageSet(discord.Message{ID: 6, ChannelID: 1})
    25  	store.MessageSet(discord.Message{ID: 4, ChannelID: 1})
    26  
    27  	// These messages should be discarded.
    28  	store.MessageSet(discord.Message{ID: 2, ChannelID: 1})
    29  	store.MessageSet(discord.Message{ID: 0, ChannelID: 1})
    30  
    31  	return store
    32  }
    33  
    34  func TestMessageSet(t *testing.T) {
    35  	store := populate12Store()
    36  
    37  	messages, _ := store.Messages(1)
    38  
    39  	const (
    40  		start discord.MessageID = 2
    41  		end   discord.MessageID = 12
    42  	)
    43  
    44  	for i := start; i < end; i++ {
    45  		index := i - start
    46  		expect := end - i + start
    47  
    48  		if msgID := messages[index].ID; msgID != expect {
    49  			t.Errorf("message at %d has mismatch ID %d, expecting %d", i, msgID, expect)
    50  		}
    51  	}
    52  }
    53  
    54  func TestMessagesUpdate(t *testing.T) {
    55  	store := populate12Store()
    56  
    57  	store.MessageSet(discord.Message{ID: 5, ChannelID: 1, Content: "edited 1"})
    58  	store.MessageSet(discord.Message{ID: 6, ChannelID: 1, Content: "edited 2"})
    59  	store.MessageSet(discord.Message{ID: 5, ChannelID: 1, Content: "edited 3"})
    60  
    61  	expect := map[discord.MessageID]string{
    62  		5: "edited 3",
    63  		6: "edited 2",
    64  	}
    65  
    66  	messages, _ := store.Messages(1)
    67  
    68  	for i := 0; i < store.MaxMessages(); i++ {
    69  		msg := messages[i]
    70  		content, ok := expect[msg.ID]
    71  		if ok && msg.Content != content {
    72  			t.Errorf("id %d expected %q, got %q", i, content, msg.Content)
    73  		}
    74  	}
    75  }