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
4 changes: 4 additions & 0 deletions app/models/user.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,10 @@ def __init__(self, _dict):
self.max_failed_login_count = current_app.config["MAX_FAILED_LOGIN_COUNT"]
self._platform_admin = _dict["platform_admin"]

@property
def default_editor_is_rte(self):
return self._dict.get("default_editor_is_rte")

@classmethod
def from_id(cls, user_id):
return cls(user_api_client.get_user(user_id))
Expand Down
9 changes: 9 additions & 0 deletions app/templates/views/find-users/user-information.html
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{% extends "views/platform-admin/_base_template.html" %}
{% from "components/page-footer.html" import page_footer %}
{% from "components/badge.html" import badge %}

{% block per_page_title %}
{{ _('User information for') }} {{ user.name }}
Expand All @@ -13,6 +14,14 @@ <h1 class="heading-large">
</h1>
<p>{{ user.email_address }}</p>
<p class="{{ '' if user.mobile_number else 'hint' }}">{{ user.mobile_number or 'No mobile number'}}</p>
<h2 class="heading-medium">{{ _('Default editor') }}</h2>
{% if user.default_editor_is_rte is sameas true %}
{{ badge(_('😎 Rich text editor'), variant='green', testid='default-editor-badge') }}
{% elif user.default_editor_is_rte is sameas false %}
{{ badge(_('😒 Markdown editor'), variant='gray', testid='default-editor-badge') }}
{% else %}
{{ badge(_('Unknown'), variant='yellow', testid='default-editor-badge') }}
{% endif %}
<h2 class="heading-medium">{{ _('Live services') }}</h2>
<nav class="browse-list">
{% if user.live_services %}
Expand Down
6 changes: 5 additions & 1 deletion app/translations/csv/fr.csv
Original file line number Diff line number Diff line change
Expand Up @@ -2450,4 +2450,8 @@
"Daily text message parts limit","Limite quotidienne de parties de messages texte"
"Annual text message parts limit","Limite maximale de parties de messages texte par exercice financier"
"text message part","partie de message texte"
"Use ((unsubscribe_url)) for one-click unsubscribe","Utilisez ((unsubscribe_url)) pour le désabonnement en un clic"
"Use ((unsubscribe_url)) for one-click unsubscribe","Utilisez ((unsubscribe_url)) pour le désabonnement en un clic"
"Default editor","Éditeur par défaut"
"😎 Rich text editor","😎 Éditeur de texte enrichi"
"😒 Markdown editor","😒 Éditeur Markdown"
"Unknown","Inconnu"
35 changes: 34 additions & 1 deletion tests/app/main/views/test_find_users.py
Original file line number Diff line number Diff line change
Expand Up @@ -77,9 +77,12 @@ def test_find_users_by_email_validates_against_empty_search_submission(client_re


def test_user_information_page_shows_information_about_user(client, platform_admin_user, mocker):
user = user_json(name="Apple Bloom", services=[1, 2])
user["default_editor_is_rte"] = False

mocker.patch(
"app.user_api_client.get_user",
return_value=user_json(name="Apple Bloom", services=[1, 2]),
return_value=user,
autospec=True,
)

Expand Down Expand Up @@ -110,12 +113,42 @@ def test_user_information_page_shows_information_about_user(client, platform_adm
assert document.xpath("//h2/text()[normalize-space()='Trial services']")
assert document.xpath("//a/text()[normalize-space()='Fresh Orchard Juice']")

assert document.xpath("//h2/text()[normalize-space()='Default editor']")
assert document.xpath("//strong[@data-testid='default-editor-badge' and contains(@class, 'badge-gray')]")

assert document.xpath("//h2/text()[normalize-space()='Last sign-in']")
assert not document.xpath("//p/text()[normalize-space()='0 failed sign-in attempts']")

assert document.xpath("//a/text()[normalize-space()='Block user']")


def test_user_information_page_shows_rte_default_editor_badge(client, platform_admin_user, mocker):
user = user_json(name="Apple Bloom")
user["default_editor_is_rte"] = True

mocker.patch(
"app.user_api_client.get_user",
return_value=user,
autospec=True,
)

mocker.patch(
"app.user_api_client.get_organisations_and_services_for_user",
return_value={
"organisations": [],
"services": [],
},
autospec=True,
)

client.login(platform_admin_user)
response = client.get(url_for("main.user_information", user_id=345))
assert response.status_code == 200

document = html.fromstring(response.get_data(as_text=True))
assert document.xpath("//strong[@data-testid='default-editor-badge' and contains(@class, 'badge-green')]")


def test_user_information_page_shows_unblocked_user(client, platform_admin_user, mocker):
mocker.patch(
"app.user_api_client.get_user",
Expand Down
Loading