Skip to content

Commit 721652f

Browse files
committed
quick fixes for removeFromWorkspace
1 parent f44c963 commit 721652f

File tree

2 files changed

+74
-1
lines changed

2 files changed

+74
-1
lines changed

src/actions/removeFromWorkspace.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ module.exports = async function removeFromWorkspace(params) {
3030
if (accessToken.expiresAt < new Date()) {
3131
throw new Error('Access token has expired');
3232
}
33-
const initiatedByUserId = accessToken._id;
33+
const initiatedByUserId = accessToken.userId;
3434

3535
const workspace = await Workspace.findById(workspaceId).orFail(new Error('Workspace not found'));
3636
const initiatedByUserRoles = workspace.members.find(member => member.userId.toString() === initiatedByUserId.toString())?.roles;

test/removeFromWorkspace.test.js

+73
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
'use strict';
2+
3+
const { afterEach, beforeEach, describe, it } = require('mocha');
4+
const assert = require('assert');
5+
const connect = require('../src/db');
6+
const removeFromWorkspace = require('../src/actions/removeFromWorkspace');
7+
8+
describe('removeFromWorkspace', function() {
9+
let db, AccessToken, User, Workspace;
10+
let user, workspace, accessToken, memberUser;
11+
12+
beforeEach(async function() {
13+
db = await connect();
14+
({ AccessToken, User, Workspace } = db.models);
15+
16+
await AccessToken.deleteMany({});
17+
await User.deleteMany({});
18+
await Workspace.deleteMany({});
19+
20+
user = await User.create({
21+
name: 'John Doe',
22+
23+
githubUsername: 'johndoe',
24+
githubUserId: '1234'
25+
});
26+
27+
memberUser = await User.create({
28+
name: 'Jane Smith',
29+
30+
githubUsername: 'janesmith',
31+
githubUserId: '5678'
32+
});
33+
34+
accessToken = await AccessToken.create({
35+
userId: user._id,
36+
expiresAt: new Date(Date.now() + 1000 * 60 * 60 * 24 * 30) // 30 days valid
37+
});
38+
39+
workspace = await Workspace.create({
40+
name: 'Test Workspace',
41+
ownerId: user._id,
42+
apiKey: 'test-api-key',
43+
baseUrl: 'https://example.com',
44+
members: [
45+
{ userId: user._id, roles: ['owner'] },
46+
{ userId: memberUser._id, roles: ['member'] }
47+
],
48+
subscriptionTier: 'pro'
49+
});
50+
});
51+
52+
afterEach(async function() {
53+
await AccessToken.deleteMany({});
54+
await User.deleteMany({});
55+
await Workspace.deleteMany({});
56+
});
57+
58+
it('should remove a member from workspace successfully', async function() {
59+
const result = await removeFromWorkspace({
60+
authorization: accessToken._id.toString(),
61+
workspaceId: workspace._id,
62+
userId: memberUser._id
63+
});
64+
65+
assert.ok(result.workspace);
66+
assert.strictEqual(result.workspace.members.length, 1);
67+
assert.strictEqual(result.workspace.members[0].userId.toString(), user._id.toString());
68+
69+
const workspaceInDb = await Workspace.findById(workspace._id);
70+
assert.strictEqual(workspaceInDb.members.length, 1);
71+
assert.strictEqual(workspaceInDb.members[0].userId.toString(), user._id.toString());
72+
});
73+
});

0 commit comments

Comments
 (0)