github.com/sharovik/devbot@v1.0.1-0.20240308094637-4a0387c40516/internal/service/message/conversation/helper_test.go (about) 1 package conversation 2 3 import ( 4 "testing" 5 "time" 6 7 _time "github.com/sharovik/devbot/internal/service/time" 8 9 "github.com/sharovik/devbot/internal/database" 10 11 "github.com/sharovik/devbot/internal/dto" 12 "github.com/stretchr/testify/assert" 13 ) 14 15 func TestGetCurrentConversations(t *testing.T) { 16 currentConversations["_test_channel_"] = Conversation{ 17 ScenarioID: 0, 18 ScenarioQuestionID: 0, 19 LastQuestion: dto.BaseChatMessage{ 20 Channel: "_test_channel_", 21 Text: "Testing", 22 AsUser: false, 23 Ts: time.Time{}, 24 DictionaryMessage: dto.DictionaryMessage{}, 25 OriginalMessage: dto.BaseOriginalMessage{}, 26 }, 27 } 28 29 currentConversations["_test_channel2_"] = Conversation{ 30 ScenarioID: 0, 31 ScenarioQuestionID: 0, 32 LastQuestion: dto.BaseChatMessage{ 33 Channel: "_test_channel2_", 34 Text: "Testing", 35 AsUser: false, 36 Ts: time.Time{}, 37 DictionaryMessage: dto.DictionaryMessage{}, 38 OriginalMessage: dto.BaseOriginalMessage{}, 39 }, 40 } 41 42 list := GetCurrentConversations() 43 assert.NotEmpty(t, list) 44 assert.NotEmpty(t, list["_test_channel_"]) 45 assert.NotEmpty(t, list["_test_channel2_"]) 46 } 47 48 func TestAddConversation(t *testing.T) { 49 scenario := database.EventScenario{} 50 AddConversation(scenario, dto.BaseChatMessage{ 51 Channel: "_test_channel_", 52 Text: "Testing", 53 AsUser: false, 54 Ts: time.Time{}, 55 DictionaryMessage: dto.DictionaryMessage{}, 56 OriginalMessage: dto.BaseOriginalMessage{}, 57 }) 58 59 list := GetCurrentConversations() 60 assert.NotEmpty(t, list) 61 assert.NotEmpty(t, list["_test_channel_"]) 62 } 63 64 func TestCleanUpExpiredMessages(t *testing.T) { 65 now := _time.Service.Now() 66 scenario := database.EventScenario{} 67 68 AddConversation(scenario, dto.BaseChatMessage{ 69 Channel: "_test_channel_", 70 Text: "Testing", 71 AsUser: false, 72 Ts: now.Add(-time.Second * 600), 73 DictionaryMessage: dto.DictionaryMessage{}, 74 OriginalMessage: dto.BaseOriginalMessage{}, 75 }) 76 77 AddConversation(scenario, dto.BaseChatMessage{ 78 Channel: "_test_channel2_", 79 Text: "Testing", 80 AsUser: false, 81 Ts: now.Add(time.Second * 600), 82 DictionaryMessage: dto.DictionaryMessage{}, 83 OriginalMessage: dto.BaseOriginalMessage{}, 84 }) 85 86 CleanUpExpiredMessages() 87 88 assert.NotEmpty(t, currentConversations) 89 assert.Equal(t, 1, len(currentConversations)) 90 assert.NotEmpty(t, currentConversations["_test_channel2_"]) 91 } 92 93 func TestGetConversation(t *testing.T) { 94 now := _time.Service.Now() 95 currentConversations = map[string]Conversation{} 96 scenario := database.EventScenario{} 97 98 AddConversation(scenario, dto.BaseChatMessage{ 99 Channel: "_test_channel_", 100 Text: "Testing", 101 AsUser: false, 102 Ts: now.Add(time.Second * 600), 103 DictionaryMessage: dto.DictionaryMessage{}, 104 OriginalMessage: dto.BaseOriginalMessage{}, 105 }) 106 107 conversation := GetConversation("_test_channel_") 108 109 assert.NotEmpty(t, conversation) 110 assert.Equal(t, "Testing", conversation.LastQuestion.Text) 111 112 conversation = GetConversation("_test_channel2_") 113 assert.Empty(t, conversation) 114 } 115 116 func TestDeleteConversation(t *testing.T) { 117 scenario := database.EventScenario{} 118 AddConversation(scenario, dto.BaseChatMessage{ 119 Channel: "_test_channel_", 120 Text: "Testing", 121 AsUser: false, 122 Ts: time.Time{}, 123 DictionaryMessage: dto.DictionaryMessage{}, 124 OriginalMessage: dto.BaseOriginalMessage{}, 125 }) 126 127 assert.NotEmpty(t, currentConversations["_test_channel_"]) 128 FinaliseConversation("_test_channel_") 129 assert.Empty(t, currentConversations["_test_channel_"]) 130 }