this repo has no description
at main 4.7 kB view raw
1import { afterEach, describe, expect, test } from "bun:test"; 2import { channelMappings, userMappings } from "./db"; 3 4describe("channelMappings", () => { 5 const testSlackChannel = "C123TEST"; 6 const testIrcChannel = "#test-channel"; 7 8 afterEach(() => { 9 // Cleanup test data 10 try { 11 channelMappings.delete(testSlackChannel); 12 } catch { 13 // Ignore if doesn't exist 14 } 15 }); 16 17 test("creates a channel mapping", () => { 18 channelMappings.create(testSlackChannel, testIrcChannel); 19 const mapping = channelMappings.getBySlackChannel(testSlackChannel); 20 21 expect(mapping).toBeDefined(); 22 expect(mapping?.slack_channel_id).toBe(testSlackChannel); 23 expect(mapping?.irc_channel).toBe(testIrcChannel); 24 }); 25 26 test("retrieves mapping by Slack channel ID", () => { 27 channelMappings.create(testSlackChannel, testIrcChannel); 28 const mapping = channelMappings.getBySlackChannel(testSlackChannel); 29 30 expect(mapping).not.toBeNull(); 31 expect(mapping?.irc_channel).toBe(testIrcChannel); 32 }); 33 34 test("retrieves mapping by IRC channel", () => { 35 channelMappings.create(testSlackChannel, testIrcChannel); 36 const mapping = channelMappings.getByIrcChannel(testIrcChannel); 37 38 expect(mapping).not.toBeNull(); 39 expect(mapping?.slack_channel_id).toBe(testSlackChannel); 40 }); 41 42 test("returns null for non-existent mapping", () => { 43 const mapping = channelMappings.getBySlackChannel("C999NOTFOUND"); 44 expect(mapping).toBeNull(); 45 }); 46 47 test("deletes a channel mapping", () => { 48 channelMappings.create(testSlackChannel, testIrcChannel); 49 channelMappings.delete(testSlackChannel); 50 51 const mapping = channelMappings.getBySlackChannel(testSlackChannel); 52 expect(mapping).toBeNull(); 53 }); 54 55 test("replaces existing mapping on create", () => { 56 channelMappings.create(testSlackChannel, "#old-channel"); 57 channelMappings.create(testSlackChannel, testIrcChannel); 58 59 const mapping = channelMappings.getBySlackChannel(testSlackChannel); 60 expect(mapping?.irc_channel).toBe(testIrcChannel); 61 }); 62 63 test("getAll returns all mappings", () => { 64 const testChannel2 = "C456TEST"; 65 const testIrc2 = "#another-channel"; 66 67 channelMappings.create(testSlackChannel, testIrcChannel); 68 channelMappings.create(testChannel2, testIrc2); 69 70 const all = channelMappings.getAll(); 71 const testMappings = all.filter( 72 (m) => 73 m.slack_channel_id === testSlackChannel || 74 m.slack_channel_id === testChannel2, 75 ); 76 77 expect(testMappings.length).toBeGreaterThanOrEqual(2); 78 79 // Cleanup 80 channelMappings.delete(testChannel2); 81 }); 82}); 83 84describe("userMappings", () => { 85 const testSlackUser = "U123TEST"; 86 const testIrcNick = "testnick"; 87 88 afterEach(() => { 89 // Cleanup test data 90 try { 91 userMappings.delete(testSlackUser); 92 } catch { 93 // Ignore if doesn't exist 94 } 95 }); 96 97 test("creates a user mapping", () => { 98 userMappings.create(testSlackUser, testIrcNick); 99 const mapping = userMappings.getBySlackUser(testSlackUser); 100 101 expect(mapping).toBeDefined(); 102 expect(mapping?.slack_user_id).toBe(testSlackUser); 103 expect(mapping?.irc_nick).toBe(testIrcNick); 104 }); 105 106 test("retrieves mapping by Slack user ID", () => { 107 userMappings.create(testSlackUser, testIrcNick); 108 const mapping = userMappings.getBySlackUser(testSlackUser); 109 110 expect(mapping).not.toBeNull(); 111 expect(mapping?.irc_nick).toBe(testIrcNick); 112 }); 113 114 test("retrieves mapping by IRC nick", () => { 115 userMappings.create(testSlackUser, testIrcNick); 116 const mapping = userMappings.getByIrcNick(testIrcNick); 117 118 expect(mapping).not.toBeNull(); 119 expect(mapping?.slack_user_id).toBe(testSlackUser); 120 }); 121 122 test("returns null for non-existent mapping", () => { 123 const mapping = userMappings.getBySlackUser("U999NOTFOUND"); 124 expect(mapping).toBeNull(); 125 }); 126 127 test("deletes a user mapping", () => { 128 userMappings.create(testSlackUser, testIrcNick); 129 userMappings.delete(testSlackUser); 130 131 const mapping = userMappings.getBySlackUser(testSlackUser); 132 expect(mapping).toBeNull(); 133 }); 134 135 test("replaces existing mapping on create", () => { 136 userMappings.create(testSlackUser, "oldnick"); 137 userMappings.create(testSlackUser, testIrcNick); 138 139 const mapping = userMappings.getBySlackUser(testSlackUser); 140 expect(mapping?.irc_nick).toBe(testIrcNick); 141 }); 142 143 test("getAll returns all mappings", () => { 144 const testUser2 = "U456TEST"; 145 const testNick2 = "anothernick"; 146 147 userMappings.create(testSlackUser, testIrcNick); 148 userMappings.create(testUser2, testNick2); 149 150 const all = userMappings.getAll(); 151 const testMappings = all.filter( 152 (m) => m.slack_user_id === testSlackUser || m.slack_user_id === testUser2, 153 ); 154 155 expect(testMappings.length).toBeGreaterThanOrEqual(2); 156 157 // Cleanup 158 userMappings.delete(testUser2); 159 }); 160});