-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsubspace_test.go
More file actions
104 lines (86 loc) · 2.49 KB
/
subspace_test.go
File metadata and controls
104 lines (86 loc) · 2.49 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
package nostr
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/nbd-wtf/go-nostr/cip"
)
func TestSubspaceCreateEvent(t *testing.T) {
// Test creating a subspace with basic operations
createEvent := NewSubspaceCreateEvent(
"test-subspace",
cip.DefaultSubspaceOps,
"energy>1000",
"Test Subspace",
"https://example.com/image.png",
)
// Verify event kind
assert.Equal(t, cip.KindSubspaceCreate, createEvent.Kind)
// Verify required tags
requiredTags := map[string]bool{
"d": false,
"sid": false,
"subspace_name": false,
"ops": false,
}
for _, tag := range createEvent.Tags {
if len(tag) < 2 {
continue
}
if _, exists := requiredTags[tag[0]]; exists {
requiredTags[tag[0]] = true
}
}
for tag, found := range requiredTags {
assert.True(t, found, "missing required tag: %s", tag)
}
// Verify sid matches calculated hash
calculatedSID := calculateSubspaceID(createEvent.SubspaceName, createEvent.Ops, createEvent.Rules)
assert.Equal(t, calculatedSID, createEvent.SubspaceID)
// Test validation
err := ValidateSubspaceCreateEvent(createEvent)
assert.NoError(t, err)
// Test parsing
parsedEvent, err := ParseSubspaceCreateEvent(createEvent.Event)
assert.NoError(t, err)
assert.Equal(t, createEvent.SubspaceID, parsedEvent.SubspaceID)
assert.Equal(t, createEvent.SubspaceName, parsedEvent.SubspaceName)
assert.Equal(t, createEvent.Ops, parsedEvent.Ops)
assert.Equal(t, createEvent.Rules, parsedEvent.Rules)
}
func TestSubspaceJoinEvent(t *testing.T) {
// Create a subspace first to get a valid sid
createEvent := NewSubspaceCreateEvent(
"test-subspace",
cip.DefaultSubspaceOps,
"energy>1000",
"Test Subspace",
"https://example.com/image.png",
)
// Test creating a join event
joinEvent := NewSubspaceJoinEvent(createEvent.SubspaceID)
// Verify event kind
assert.Equal(t, cip.KindSubspaceJoin, joinEvent.Kind)
// Verify required tags
requiredTags := map[string]bool{
"d": false,
"sid": false,
}
for _, tag := range joinEvent.Tags {
if len(tag) < 2 {
continue
}
if _, exists := requiredTags[tag[0]]; exists {
requiredTags[tag[0]] = true
}
}
for tag, found := range requiredTags {
assert.True(t, found, "missing required tag: %s", tag)
}
// Test validation
err := ValidateSubspaceJoinEvent(joinEvent)
assert.NoError(t, err)
// Test parsing
parsedEvent, err := ParseSubspaceJoinEvent(joinEvent.Event)
assert.NoError(t, err)
assert.Equal(t, joinEvent.SubspaceID, parsedEvent.SubspaceID)
}