Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions src/store/addressbooks.js
Original file line number Diff line number Diff line change
Expand Up @@ -108,25 +108,25 @@ const mutations = {
/**
* Toggle whether a Addressbook is Enabled
*
* @param {object} context the store mutations
* @param {object} state the store data
* @param {object} addressbook the addressbook to toggle
*/
toggleAddressbookEnabled(context, addressbook) {
addressbook = state.addressbooks.find((search) => search.id === addressbook.id)
addressbook.enabled = !addressbook.enabled
toggleAddressbookEnabled(state, addressbook) {
const storedAddressbook = state.addressbooks.find((search) => search.id === addressbook.id)
storedAddressbook.enabled = !storedAddressbook.enabled
},

/**
* Rename a Addressbook
*
* @param {object} context the store mutations
* @param {object} state the store data
* @param {object} data destructuring object
* @param {object} data.addressbook the addressbook to rename
* @param {string} data.newName the new name of the addressbook
*/
renameAddressbook(context, { addressbook, newName }) {
addressbook = state.addressbooks.find((search) => search.id === addressbook.id)
addressbook.displayName = newName
renameAddressbook(state, { addressbook, newName }) {
const storedAddressbook = state.addressbooks.find((search) => search.id === addressbook.id)
storedAddressbook.displayName = newName
},

/**
Expand Down
43 changes: 43 additions & 0 deletions tests/javascript/store/addressbooksMutations.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
/**
* SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/

import { computed } from 'vue'
// The store index has to be imported first to avoid a circular import issue
import store from '../../../src/store/index.js'

describe('addressbooks mutations', () => {
beforeEach(() => {
store.state.addressbooks.addressbooks.splice(0)
store.commit('addAddressbook', {
id: 'ab1',
displayName: 'Address book',
enabled: true,
url: '/remote.php/dav/addressbooks/users/admin/ab1/',
})
})

test('toggleAddressbookEnabled updates the reactive state', () => {
const addressbook = store.getters.getAddressbooks[0]
const enabled = computed(() => addressbook.enabled)
expect(enabled.value).toBe(true)

store.commit('toggleAddressbookEnabled', addressbook)

expect(addressbook.enabled).toBe(false)
// the change has to be picked up by reactive consumers, e.g. the settings dialog
expect(enabled.value).toBe(false)
})

test('renameAddressbook updates the reactive state', () => {
const addressbook = store.getters.getAddressbooks[0]
const displayName = computed(() => addressbook.displayName)
expect(displayName.value).toBe('Address book')

store.commit('renameAddressbook', { addressbook, newName: 'Renamed' })

expect(addressbook.displayName).toBe('Renamed')
expect(displayName.value).toBe('Renamed')
})
})
Loading