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
114
115
116
117
118
119
120
121
122
123
124
125
126
|
const {_memberToStateContent, _memberToPowerLevel} = require("./register-user")
const {test} = require("supertape")
const data = require("../../../test/data")
const mixin = require("@cloudrac3r/mixin-deep")
const DiscordTypes = require("discord-api-types/v10")
test("member2state: without member nick or avatar", async t => {
t.deepEqual(
await _memberToStateContent(data.member.kumaccino.user, data.member.kumaccino, data.guild.general.id),
{
avatar_url: "mxc://cadence.moe/UpAeIqeclhKfeiZNdIWNcXXL",
displayname: "kumaccino",
membership: "join",
"moe.cadence.ooye.member": {
avatar: "/avatars/113340068197859328/b48302623a12bc7c59a71328f72ccb39.png?size=1024"
},
"uk.half-shot.discord.member": {
bot: false,
displayColor: 10206929,
id: "113340068197859328",
username: "@kumaccino"
}
}
)
})
test("member2state: with global name, without member nick or avatar", async t => {
t.deepEqual(
await _memberToStateContent(data.member.papiophidian.user, data.member.papiophidian, data.guild.general.id),
{
avatar_url: "mxc://cadence.moe/JPzSmALLirnIprlSMKohSSoX",
displayname: "PapiOphidian",
membership: "join",
"moe.cadence.ooye.member": {
avatar: "/avatars/320067006521147393/5fc4ad85c1ea876709e9a7d3374a78a1.png?size=1024"
},
"uk.half-shot.discord.member": {
bot: false,
displayColor: 1579292,
id: "320067006521147393",
username: "@papiophidian"
}
}
)
})
test("member2state: with member nick and avatar", async t => {
t.deepEqual(
await _memberToStateContent(data.member.sheep.user, data.member.sheep, data.guild.general.id),
{
avatar_url: "mxc://cadence.moe/rfemHmAtcprjLEiPiEuzPhpl",
displayname: "The Expert's Submarine",
membership: "join",
"moe.cadence.ooye.member": {
avatar: "/guilds/112760669178241024/users/134826546694193153/avatars/38dd359aa12bcd52dd3164126c587f8c.png?size=1024"
},
"uk.half-shot.discord.member": {
bot: false,
displayColor: null,
id: "134826546694193153",
username: "@aprilsong"
}
}
)
})
test("member2power: default to zero if member roles unknown", async t => {
const power = _memberToPowerLevel(data.user.clyde_ai, null, data.guild.data_horde, data.channel.saving_the_world)
t.equal(power, 0)
})
test("member2power: unremarkable = 0", async t => {
const power = _memberToPowerLevel(data.user.clyde_ai, {
roles: []
}, data.guild.data_horde, data.channel.general)
t.equal(power, 0)
})
test("member2power: can mention everyone = 20", async t => {
const power = _memberToPowerLevel(data.user.clyde_ai, {
roles: ["684524730274807911"]
}, data.guild.data_horde, data.channel.general)
t.equal(power, 20)
})
test("member2power: can send messages in protected channel due to role = 50", async t => {
const power = _memberToPowerLevel(data.user.clyde_ai, {
roles: ["684524730274807911"]
}, data.guild.data_horde, data.channel.saving_the_world)
t.equal(power, 50)
})
test("member2power: can send messages in protected channel due to user override = 50", async t => {
const power = _memberToPowerLevel(data.user.clyde_ai, {
roles: []
}, data.guild.data_horde, mixin({}, data.channel.saving_the_world, {
permission_overwrites: data.channel.saving_the_world.permission_overwrites.concat({
type: DiscordTypes.OverwriteType.member,
id: data.user.clyde_ai.id,
allow: String(DiscordTypes.PermissionFlagsBits.SendMessages),
deny: "0"
})
}))
t.equal(power, 50)
})
test("member2power: can kick users = 50", async t => {
const power = _memberToPowerLevel(data.user.clyde_ai, {
roles: ["682789592390281245"]
}, data.guild.data_horde, data.channel.general)
t.equal(power, 50)
})
test("member2power: can manage channels = 100", async t => {
const power = _memberToPowerLevel(data.user.clyde_ai, {
roles: ["665290147377578005"]
}, data.guild.data_horde, data.channel.saving_the_world)
t.equal(power, 100)
})
test("member2power: pathfinder use case", async t => {
const power = _memberToPowerLevel(data.user.jerassicore, {
roles: ["1235396773510647810", "1359752622130593802", "1249165855632265267", "1380768596929806356", "1380756348190462015"]
}, data.guild.pathfinder, data.channel.character_art)
t.equal(power, 50)
})
|