Skip to content

Commit

Permalink
Fixes #5066 - Trying to create a new customer freezes UI.
Browse files Browse the repository at this point in the history
  • Loading branch information
dvuckovic committed Feb 28, 2024
1 parent 4afd3f7 commit a9b3843
Show file tree
Hide file tree
Showing 5 changed files with 34 additions and 17 deletions.
@@ -1,10 +1,12 @@
// Copyright (C) 2012-2024 Zammad Foundation, https://zammad-foundation.org/

import { useAppName } from '#shared/composables/useAppName.ts'
import type { FieldResolverModule } from '#shared/entities/object-attributes/types/resolver.ts'
import FieldResolver from '../FieldResolver.ts'

export class FieldResolverUserGroupPermissions extends FieldResolver {
fieldType = 'groupPermissions'
// NB: The group permissions field is currently supported only in desktop app.
fieldType = useAppName() === 'desktop' ? 'groupPermissions' : 'hidden'

public fieldTypeAttributes() {
return {}
Expand Down
Expand Up @@ -2,11 +2,13 @@

/* eslint-disable zammad/zammad-detect-translatable-string */

import { useAppName } from '#shared/composables/useAppName.ts'
import type { FieldResolverModule } from '#shared/entities/object-attributes/types/resolver.ts'
import FieldResolver from '../FieldResolver.ts'

export class FieldResolverUserPermissions extends FieldResolver {
fieldType = 'toggleList'
// NB: The user permissions field is currently supported only in desktop app.
fieldType = useAppName() === 'desktop' ? 'toggleList' : 'hidden'

public fieldTypeAttributes() {
return {}
Expand Down
3 changes: 3 additions & 0 deletions app/frontend/tests/support/components/renderComponent.ts
Expand Up @@ -22,6 +22,7 @@ import CommonLink from '#shared/components/CommonLink/CommonLink.vue'
import CommonDateTime from '#shared/components/CommonDateTime/CommonDateTime.vue'
import CommonLabel from '#shared/components/CommonLabel/CommonLabel.vue'
import CommonBadge from '#shared/components/CommonBadge/CommonBadge.vue'
import { initializeAppName } from '#shared/composables/useAppName.ts'
import { imageViewerOptions } from '#shared/composables/useImageViewer.ts'
import DynamicInitializer from '#shared/components/DynamicInitializer/DynamicInitializer.vue'
import { initializeWalker } from '#shared/router/walker.ts'
Expand Down Expand Up @@ -400,6 +401,8 @@ const renderComponent = <Props>(
component: any,
wrapperOptions: ExtendedMountingOptions<Props> = {},
): ExtendedRenderResult => {
initializeAppName(appName)

// Store and Router needs only to be initalized once for a test suit.
if (wrapperOptions?.router) {
initializeRouter(
Expand Down
2 changes: 1 addition & 1 deletion spec/support/capybara/console_errors.rb
Expand Up @@ -5,7 +5,7 @@
next if page.driver.browser.browser != :chrome

logs = page.driver.browser.logs.get(:browser)
errors = logs.select { |m| m.level == 'SEVERE' && m.to_s =~ %r{EvalError|InternalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError} }
errors = logs.select { |m| m.level == 'SEVERE' && m.to_s =~ %r{EvalError|InternalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError|E60(0|1)} }
if errors.present?
Rails.logger.error "JS ERRORS: #{errors.to_json}"
errors.each do |error|
Expand Down
38 changes: 24 additions & 14 deletions spec/system/apps/mobile/user/detail_view_edit_spec.rb
Expand Up @@ -130,26 +130,30 @@ def authenticate

let(:organization) { create(:organization) }

it 'supports editing user data' do
within_form(form_updater_gql_number: 1) do
find_input('First name').type('Foo')
find_input('Last name').type('Bar')
find_input('Address').type('München')
find_autocomplete('Organization').search_for_option(organization.name)
end
shared_examples 'editing user data' do
it 'supports editing user data' do
within_form(form_updater_gql_number: 1) do
find_input('First name').type('Foo')
find_input('Last name').type('Bar')
find_input('Address').type('München')
find_autocomplete('Organization').search_for_option(organization.name)
end

click_on('Save')
click_on('Save')

wait_for_gql('shared/graphql/subscriptions/userUpdates.graphql')
wait_for_gql('shared/graphql/subscriptions/userUpdates.graphql')

expect(find('[role="img"][aria-label="Avatar (Foo Bar)"]')).to have_text('FB')
expect(page).to have_text('Foo Bar')
expect(page).to have_css('a', text: organization.name)
expect(find('section', text: 'Address')).to have_text('München')
expect(find('[role="img"][aria-label="Avatar (Foo Bar)"]')).to have_text('FB')
expect(page).to have_text('Foo Bar')
expect(page).to have_css('a', text: organization.name)
expect(find('section', text: 'Address')).to have_text('München')

expect(user.reload).to have_attributes(firstname: 'Foo', lastname: 'Bar', address: 'München')
expect(user.reload).to have_attributes(firstname: 'Foo', lastname: 'Bar', address: 'München')
end
end

it_behaves_like 'editing user data'

it 'has an always enabled cancel button' do
find_button('Cancel').click

Expand Down Expand Up @@ -183,6 +187,12 @@ def authenticate
end
end
end

context 'with admin privileges (#5066)' do
let(:agent) { create(:admin) }

it_behaves_like 'editing user data'
end
end

describe 'Core Workflow' do
Expand Down

0 comments on commit a9b3843

Please sign in to comment.