Skip to content

Commit f8a7b7e

Browse files
committed
Add template permissions stories
1 parent 09c6771 commit f8a7b7e

File tree

5 files changed

+56
-4
lines changed

5 files changed

+56
-4
lines changed

site/src/components/UserOrGroupAutocomplete/UserOrGroupAutocomplete.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import Autocomplete from "@material-ui/lab/Autocomplete"
55
import { useMachine } from "@xstate/react"
66
import { Group, User } from "api/typesGenerated"
77
import { AvatarData } from "components/AvatarData/AvatarData"
8-
import { useOrganizationId } from "hooks/useOrganizationId"
98
import debounce from "just-debounce-it"
109
import { ChangeEvent, useState } from "react"
1110
import { searchUsersAndGroupsMachine } from "xServices/template/searchUsersAndGroupsXService"
@@ -19,14 +18,15 @@ const isGroup = (value: UserOrGroupAutocompleteValue): value is Group => {
1918
export type UserOrGroupAutocompleteProps = {
2019
value: UserOrGroupAutocompleteValue
2120
onChange: (value: UserOrGroupAutocompleteValue) => void
21+
organizationId: string
2222
}
2323

2424
export const UserOrGroupAutocomplete: React.FC<UserOrGroupAutocompleteProps> = ({
2525
value,
2626
onChange,
27+
organizationId,
2728
}) => {
2829
const styles = useStyles()
29-
const organizationId = useOrganizationId()
3030
const [isAutocompleteOpen, setIsAutocompleteOpen] = useState(false)
3131
const [searchState, sendSearch] = useMachine(searchUsersAndGroupsMachine, {
3232
context: {

site/src/pages/TemplatePage/TemplatePermissionsPage/TemplatePermissionsPage.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,15 @@ import { Paywall } from "components/Paywall/Paywall"
77
import { Stack } from "components/Stack/Stack"
88
import { useTemplateLayoutContext } from "components/TemplateLayout/TemplateLayout"
99
import { useFeatureVisibility } from "hooks/useFeatureVisibility"
10+
import { useOrganizationId } from "hooks/useOrganizationId"
1011
import { FC } from "react"
1112
import { Helmet } from "react-helmet-async"
1213
import { pageTitle } from "util/page"
1314
import { templateACLMachine } from "xServices/template/templateACLXService"
1415
import { TemplatePermissionsPageView } from "./TemplatePermissionsPageView"
1516

1617
export const TemplatePermissionsPage: FC<React.PropsWithChildren<unknown>> = () => {
18+
const organizationId = useOrganizationId()
1719
const { context } = useTemplateLayoutContext()
1820
const { template, permissions } = context
1921
if (!template || !permissions) {
@@ -59,6 +61,7 @@ export const TemplatePermissionsPage: FC<React.PropsWithChildren<unknown>> = ()
5961
</Cond>
6062
<Cond>
6163
<TemplatePermissionsPageView
64+
organizationId={organizationId}
6265
templateACL={templateACL}
6366
canUpdatePermissions={permissions.canUpdateTemplate}
6467
onAddUser={(user, role, reset) => {
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import { Story } from "@storybook/react"
2+
import { MockOrganization, MockTemplateACL, MockTemplateACLEmpty } from "testHelpers/entities"
3+
import {
4+
TemplatePermissionsPageView,
5+
TemplatePermissionsPageViewProps,
6+
} from "./TemplatePermissionsPageView"
7+
8+
export default {
9+
title: "pages/TemplatePermissionsPageView",
10+
component: TemplatePermissionsPageView,
11+
}
12+
13+
const Template: Story<TemplatePermissionsPageViewProps> = (
14+
args: TemplatePermissionsPageViewProps,
15+
) => <TemplatePermissionsPageView {...args} />
16+
17+
export const Empty = Template.bind({})
18+
Empty.args = {
19+
templateACL: MockTemplateACLEmpty,
20+
canUpdatePermissions: false,
21+
}
22+
23+
export const WithTemplateACL = Template.bind({})
24+
WithTemplateACL.args = {
25+
templateACL: MockTemplateACL,
26+
canUpdatePermissions: false,
27+
}
28+
29+
export const WithUpdatePermissions = Template.bind({})
30+
WithUpdatePermissions.args = {
31+
templateACL: MockTemplateACL,
32+
canUpdatePermissions: true,
33+
organizationId: MockOrganization.id,
34+
}

site/src/pages/TemplatePage/TemplatePermissionsPage/TemplatePermissionsPageView.tsx

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,14 @@ import { FC, useState } from "react"
2424
import { Maybe } from "components/Conditionals/Maybe"
2525

2626
const AddTemplateUserOrGroup: React.FC<{
27+
organizationId: string
2728
isLoading: boolean
2829
onSubmit: (
2930
userOrGroup: TemplateUser | TemplateGroup,
3031
role: TemplateRole,
3132
reset: () => void,
3233
) => void
33-
}> = ({ isLoading, onSubmit }) => {
34+
}> = ({ isLoading, onSubmit, organizationId }) => {
3435
const styles = useStyles()
3536
const [selectedOption, setSelectedOption] = useState<UserOrGroupAutocompleteValue>(null)
3637
const [selectedRole, setSelectedRole] = useState<TemplateRole>("view")
@@ -59,6 +60,7 @@ const AddTemplateUserOrGroup: React.FC<{
5960
>
6061
<Stack direction="row" alignItems="center" spacing={1}>
6162
<UserOrGroupAutocomplete
63+
organizationId={organizationId}
6264
value={selectedOption}
6365
onChange={(newValue) => {
6466
setSelectedOption(newValue)
@@ -98,10 +100,11 @@ const AddTemplateUserOrGroup: React.FC<{
98100

99101
export interface TemplatePermissionsPageViewProps {
100102
templateACL: TemplateACL | undefined
103+
organizationId: string
104+
canUpdatePermissions: boolean
101105
// User
102106
onAddUser: (user: TemplateUser, role: TemplateRole, reset: () => void) => void
103107
isAddingUser: boolean
104-
canUpdatePermissions: boolean
105108
onUpdateUser: (user: TemplateUser, role: TemplateRole) => void
106109
updatingUser: TemplateUser | undefined
107110
onRemoveUser: (user: TemplateUser) => void
@@ -118,6 +121,7 @@ export const TemplatePermissionsPageView: FC<
118121
> = ({
119122
templateACL,
120123
canUpdatePermissions,
124+
organizationId,
121125
// User
122126
onAddUser,
123127
isAddingUser,
@@ -140,6 +144,7 @@ export const TemplatePermissionsPageView: FC<
140144
<Stack spacing={2.5}>
141145
<Maybe condition={canUpdatePermissions}>
142146
<AddTemplateUserOrGroup
147+
organizationId={organizationId}
143148
isLoading={isAddingUser || isAddingGroup}
144149
onSubmit={(value, role, resetAutocomplete) =>
145150
"members" in value

site/src/testHelpers/entities.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -867,3 +867,13 @@ export const MockGroup: TypesGen.Group = {
867867
organization_id: MockOrganization.id,
868868
members: [MockUser, MockUser2],
869869
}
870+
871+
export const MockTemplateACL: TypesGen.TemplateACL = {
872+
group: [{ ...MockGroup, role: "admin" }],
873+
users: [{ ...MockUser, role: "view" }],
874+
}
875+
876+
export const MockTemplateACLEmpty: TypesGen.TemplateACL = {
877+
group: [],
878+
users: [],
879+
}

0 commit comments

Comments
 (0)