-
Notifications
You must be signed in to change notification settings - Fork 32
Expand file tree
/
Copy pathshared_locations_test.go
More file actions
113 lines (92 loc) · 3.09 KB
/
shared_locations_test.go
File metadata and controls
113 lines (92 loc) · 3.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
package stream_chat
import (
"context"
"testing"
"time"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func createTestChannelWithSharedLocations(t *testing.T, c *Client) (*Channel, *User) {
t.Helper()
ctx := context.Background()
userID := "test-user-" + randomString(10)
channelID := "test-channel-" + randomString(10)
user := &User{ID: userID}
resp, err := c.UpsertUser(ctx, user)
require.NoError(t, err)
user = resp.User
channelResp, err := c.CreateChannelWithMembers(ctx, "messaging", channelID, userID)
require.NoError(t, err)
_, err = channelResp.Channel.PartialUpdate(ctx, PartialUpdate{
Set: map[string]interface{}{
"config_overrides": map[string]interface{}{
"shared_locations": true,
},
},
})
require.NoError(t, err)
t.Cleanup(func() {
_, _ = c.DeleteUsers(ctx, []string{userID}, DeleteUserOptions{
User: HardDelete,
Messages: HardDelete,
Conversations: HardDelete,
})
_, _ = c.DeleteChannels(ctx, []string{channelResp.Channel.CID}, true)
})
return channelResp.Channel, user
}
func TestClient_LiveLocation(t *testing.T) {
c := initClient(t)
ctx := context.Background()
settings := NewAppSettings().SetSharedLocationsEnabled(true)
_, err := c.UpdateAppSettings(ctx, settings)
require.NoError(t, err)
// Create a user
channel, user := createTestChannelWithSharedLocations(t, c)
longitude := -122.4194
latitude := 38.999
// Create a shared location
location := &SharedLocation{
Longitude: &longitude,
Latitude: &latitude,
EndAt: timePtr(time.Now().Add(1 * time.Hour)),
CreatedByDeviceID: "test-device",
}
messageResp, err := channel.SendMessage(ctx, &Message{
SharedLocation: location,
Text: "Test message for shared location",
}, user.ID)
require.NoError(t, err)
message := messageResp.Message
longitude = -122.4194
latitude = 38.999
newLocation := &SharedLocation{
MessageID: message.ID,
Longitude: &longitude,
Latitude: &latitude,
EndAt: timePtr(time.Now().Add(10 * time.Hour)),
CreatedByDeviceID: "test-device",
}
// Update the location
updateResp1, err := c.UpdateUserActiveLocation(ctx, user.ID, newLocation)
require.NoError(t, err, "UpdateUserActiveLocation should not return an error")
require.NotNil(t, updateResp1)
assert.Equal(t, newLocation.Latitude, updateResp1.Latitude)
assert.Equal(t, newLocation.Longitude, updateResp1.Longitude)
// Get active live locations
getResp, err := c.GetUserActiveLocations(ctx, user.ID)
require.NoError(t, err, "GetUserActiveLocations should not return an error")
require.NotNil(t, getResp)
require.NotEmpty(t, getResp.ActiveLiveLocations, "Should have active live locations")
// Verify the location data
found := false
for _, loc := range getResp.ActiveLiveLocations {
if loc.MessageID == messageResp.Message.ID {
found = true
assert.Equal(t, messageResp.Message.SharedLocation.Latitude, loc.Latitude)
assert.Equal(t, messageResp.Message.SharedLocation.Longitude, loc.Longitude)
break
}
}
assert.True(t, found, "Should find the updated location")
}