Benachrichtigungen erweitert
Emails korrigiert
This commit is contained in:
@@ -51,12 +51,13 @@ import membersGetHandler from '../server/api/members.get.js'
|
||||
import membersPostHandler from '../server/api/members.post.js'
|
||||
import membersDeleteHandler from '../server/api/members.delete.js'
|
||||
import membersBulkHandler from '../server/api/members/bulk.post.js'
|
||||
import membersBulkHandler from '../server/api/members/bulk.post.js'
|
||||
import toggleMannschaftsspielerHandler from '../server/api/members/toggle-mannschaftsspieler.post.js'
|
||||
|
||||
describe('Members API Endpoints', () => {
|
||||
beforeEach(() => {
|
||||
vi.clearAllMocks()
|
||||
authUtils.readUsers.mockResolvedValue([])
|
||||
memberUtils.readMembers.mockResolvedValue([])
|
||||
})
|
||||
|
||||
describe('GET /api/members', () => {
|
||||
@@ -100,6 +101,38 @@ describe('Members API Endpoints', () => {
|
||||
expect(response.members[0].name).toBe('Anna Muster')
|
||||
})
|
||||
|
||||
it('liefert Geburtstags-Sichtbarkeit für Admin/Vorstand-Bearbeitung', async () => {
|
||||
const event = createEvent({ cookies: { auth_token: 'token' } })
|
||||
authUtils.verifyToken.mockReturnValue({ id: '1' })
|
||||
memberUtils.readMembers.mockResolvedValue([
|
||||
{ id: 'm1', firstName: 'Anna', lastName: 'Muster', geburtsdatum: '2000-01-01', visibility: { showBirthday: false } }
|
||||
])
|
||||
authUtils.readUsers.mockResolvedValue([])
|
||||
authUtils.getUserFromToken.mockResolvedValue({ id: '1', role: 'admin' })
|
||||
|
||||
const response = await membersGetHandler(event)
|
||||
|
||||
expect(response.members).toHaveLength(1)
|
||||
expect(response.members[0].showBirthday).toBe(false)
|
||||
})
|
||||
|
||||
it('uebernimmt Geburtstags-Sichtbarkeit vom Login-Benutzer beim Merge', async () => {
|
||||
const event = createEvent({ cookies: { auth_token: 'token' } })
|
||||
authUtils.verifyToken.mockReturnValue({ id: '1' })
|
||||
memberUtils.readMembers.mockResolvedValue([
|
||||
{ id: 'm1', firstName: 'Anna', lastName: 'Muster', email: 'anna@club.de', geburtsdatum: '2000-01-01', visibility: { showBirthday: true } }
|
||||
])
|
||||
authUtils.readUsers.mockResolvedValue([
|
||||
{ id: 'u1', name: 'Anna Muster', email: 'anna@club.de', active: true, visibility: { showBirthday: false } }
|
||||
])
|
||||
authUtils.getUserFromToken.mockResolvedValue({ id: '1', role: 'admin' })
|
||||
|
||||
const response = await membersGetHandler(event)
|
||||
|
||||
expect(response.members).toHaveLength(1)
|
||||
expect(response.members[0].showBirthday).toBe(false)
|
||||
})
|
||||
|
||||
|
||||
it('blendet unsichtbare Playstore-Benutzer und passende manuelle Einträge aus', async () => {
|
||||
const event = createEvent({ cookies: { auth_token: 'token' } })
|
||||
@@ -159,6 +192,8 @@ describe('Members API Endpoints', () => {
|
||||
const event = createEvent({ cookies: { auth_token: 'token' } })
|
||||
mockSuccessReadBody(baseBody)
|
||||
authUtils.getUserFromToken.mockResolvedValue({ id: '2', role: 'admin' })
|
||||
authUtils.readUsers.mockResolvedValue([])
|
||||
memberUtils.readMembers.mockResolvedValue([])
|
||||
memberUtils.saveMember.mockResolvedValue(true)
|
||||
|
||||
const response = await membersPostHandler(event)
|
||||
@@ -168,6 +203,76 @@ describe('Members API Endpoints', () => {
|
||||
}))
|
||||
})
|
||||
|
||||
it('speichert Geburtstags-Sichtbarkeit für manuelle Mitglieder', async () => {
|
||||
const event = createEvent({ cookies: { auth_token: 'token' } })
|
||||
mockSuccessReadBody({ ...baseBody, showBirthday: false })
|
||||
authUtils.getUserFromToken.mockResolvedValue({ id: '2', role: 'admin' })
|
||||
authUtils.readUsers.mockResolvedValue([])
|
||||
memberUtils.readMembers.mockResolvedValue([
|
||||
{ id: 'manual-1', firstName: 'Lisa', lastName: 'Beispiel', email: 'lisa@example.com', visibility: { showBirthday: true } }
|
||||
])
|
||||
memberUtils.saveMember.mockResolvedValue(true)
|
||||
|
||||
const response = await membersPostHandler(event)
|
||||
|
||||
expect(response.success).toBe(true)
|
||||
expect(memberUtils.saveMember).toHaveBeenCalledWith(expect.objectContaining({
|
||||
visibility: expect.objectContaining({ showBirthday: false })
|
||||
}))
|
||||
expect(authUtils.writeUsers).not.toHaveBeenCalled()
|
||||
})
|
||||
|
||||
it('kann Geburtstags-Sichtbarkeit auch am Login-Benutzer ausschalten', async () => {
|
||||
const event = createEvent({ cookies: { auth_token: 'token' } })
|
||||
mockSuccessReadBody({
|
||||
id: 'user-1',
|
||||
...baseBody,
|
||||
email: 'lisa@example.com',
|
||||
visibility: { showBirthday: false }
|
||||
})
|
||||
authUtils.getUserFromToken.mockResolvedValue({ id: '2', role: 'vorstand' })
|
||||
memberUtils.readMembers.mockResolvedValue([])
|
||||
authUtils.readUsers.mockResolvedValue([
|
||||
{ id: 'user-1', email: 'lisa@example.com', visibility: { showBirthday: true, showEmail: true } }
|
||||
])
|
||||
authUtils.writeUsers.mockResolvedValue(undefined)
|
||||
memberUtils.saveMember.mockResolvedValue(true)
|
||||
|
||||
const response = await membersPostHandler(event)
|
||||
|
||||
expect(response.success).toBe(true)
|
||||
expect(authUtils.writeUsers).toHaveBeenCalledWith([
|
||||
expect.objectContaining({
|
||||
id: 'user-1',
|
||||
visibility: expect.objectContaining({ showBirthday: false, showEmail: true })
|
||||
})
|
||||
])
|
||||
})
|
||||
|
||||
it('darf Geburtstags-Sichtbarkeit nicht für Login-Benutzer einschalten', async () => {
|
||||
const event = createEvent({ cookies: { auth_token: 'token' } })
|
||||
mockSuccessReadBody({
|
||||
id: 'user-1',
|
||||
...baseBody,
|
||||
email: 'lisa@example.com',
|
||||
visibility: { showBirthday: true }
|
||||
})
|
||||
authUtils.getUserFromToken.mockResolvedValue({ id: '2', role: 'vorstand' })
|
||||
memberUtils.readMembers.mockResolvedValue([])
|
||||
authUtils.readUsers.mockResolvedValue([
|
||||
{ id: 'user-1', email: 'lisa@example.com', visibility: { showBirthday: false, showEmail: true } }
|
||||
])
|
||||
memberUtils.saveMember.mockResolvedValue(true)
|
||||
|
||||
const response = await membersPostHandler(event)
|
||||
|
||||
expect(response.success).toBe(true)
|
||||
expect(memberUtils.saveMember).toHaveBeenCalledWith(expect.objectContaining({
|
||||
visibility: expect.objectContaining({ showBirthday: false })
|
||||
}))
|
||||
expect(authUtils.writeUsers).not.toHaveBeenCalled()
|
||||
})
|
||||
|
||||
it('erlaubt vorstand beim Speichern', async () => {
|
||||
const event = createEvent({ cookies: { auth_token: 'token' } })
|
||||
mockSuccessReadBody(baseBody)
|
||||
@@ -187,6 +292,7 @@ describe('Members API Endpoints', () => {
|
||||
email: 'lisa@example.com'
|
||||
})
|
||||
authUtils.getUserFromToken.mockResolvedValue({ id: '3', role: 'vorstand' })
|
||||
authUtils.readUsers.mockResolvedValue([])
|
||||
memberUtils.saveMember.mockResolvedValue(true)
|
||||
|
||||
const response = await membersPostHandler(event)
|
||||
|
||||
Reference in New Issue
Block a user