diff --git a/webapp/pages/admin/users.spec.js b/webapp/pages/admin/users.spec.js
new file mode 100644
index 000000000..3e63c380e
--- /dev/null
+++ b/webapp/pages/admin/users.spec.js
@@ -0,0 +1,37 @@
+import { mount, createLocalVue } from '@vue/test-utils'
+import Users from './users.vue'
+import Styleguide from '@human-connection/styleguide'
+
+const localVue = createLocalVue()
+
+localVue.use(Styleguide)
+
+describe('Users', () => {
+ let wrapper
+ let Wrapper
+ let mocks
+
+ beforeEach(() => {
+ mocks = {
+ $t: jest.fn(),
+ $apollo: {
+ loading: false,
+ mutate: jest.fn().mockResolvedValue(),
+ },
+ }
+ })
+
+ describe('mount', () => {
+ Wrapper = () => {
+ return mount(Users, {
+ mocks,
+ localVue,
+ })
+ }
+
+ it('renders', () => {
+ wrapper = Wrapper()
+ expect(wrapper.is('div')).toBe(true)
+ })
+ })
+})
diff --git a/webapp/pages/admin/users.vue b/webapp/pages/admin/users.vue
index 049da9458..a5d02220b 100644
--- a/webapp/pages/admin/users.vue
+++ b/webapp/pages/admin/users.vue
@@ -2,7 +2,20 @@
-
+
+
+
+
+
+
+
+
+
+
@@ -55,6 +68,12 @@ export default {
first: pageSize,
User: [],
hasNext: false,
+ email: null,
+ form: {
+ formData: {
+ query: '',
+ },
+ },
}
},
computed: {
@@ -89,8 +108,8 @@ export default {
User: {
query() {
return gql(`
- query($filter: _UserFilter, $first: Int, $offset: Int) {
- User(filter: $filter, first: $first, offset: $offset, orderBy: createdAt_desc) {
+ query($filter: _UserFilter, $first: Int, $offset: Int, $email: String) {
+ User(email: $email, filter: $filter, first: $first, offset: $offset, orderBy: createdAt_desc) {
id
name
slug
@@ -103,13 +122,15 @@ export default {
`)
},
variables() {
- const { offset, first } = this
- return { first, offset }
+ const { offset, first, email } = this
+ const variables = { first, offset }
+ if (email) variables.email = email
+ return variables
},
update({ User }) {
if (!User) return []
this.hasNext = User.length >= this.pageSize
- if (User.length <= 0) return this.User // edge case, avoid a blank page
+ if (User.length <= 0 && this.offset > 0) return this.User // edge case, avoid a blank page
return User.map((u, i) => Object.assign({}, u, { index: this.offset + i }))
},
},
@@ -121,6 +142,11 @@ export default {
next() {
this.offset += this.pageSize
},
+ submit(formData) {
+ this.offset = 0
+ const { query } = formData
+ this.email = query
+ },
},
}