Skip to content
This repository has been archived by the owner on Mar 13, 2024. It is now read-only.

Commit

Permalink
MM 18912 Migrate 'utils/filter_users.js' and associated tests to Type…
Browse files Browse the repository at this point in the history
…Script (#4890)

* MM-18912 Migrate filter_users utility file to ts

* Revert "MM-18912 Migrate filter_users utility file to ts"

This reverts commit 890f587.

* MM-18912 Migrated filter_users utility file to ts

* Added types for isActive function

Co-authored-by: Mattermod <[email protected]>
  • Loading branch information
MathewtheCoder and mattermod committed Sep 28, 2020
1 parent 029cc54 commit b3f8607
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 15 deletions.
18 changes: 9 additions & 9 deletions utils/filter_users.test.js → utils/filter_users.test.ts
Original file line number Diff line number Diff line change
@@ -1,47 +1,47 @@
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
import {getUserOptionsFromFilter, searchUserOptionsFromFilter, isActive} from './filter_users';
import {getUserOptionsFromFilter, searchUserOptionsFromFilter, isActive, FilterOptions} from './filter_users';

describe('filter_users', () => {
describe('getUserOptionsFromFilter', () => {
it('should return empty options in case of empty filter', () => {
const filters = getUserOptionsFromFilter('');
const filters: FilterOptions = getUserOptionsFromFilter('');
expect(filters).toEqual({});
});

it('should return empty options in case of undefined', () => {
const filters = getUserOptionsFromFilter(undefined);
const filters: FilterOptions = getUserOptionsFromFilter(undefined);
expect(filters).toEqual({});
});

it('should return role options in case of system_admin', () => {
const filters = getUserOptionsFromFilter('system_admin');
const filters: FilterOptions = getUserOptionsFromFilter('system_admin');
expect(filters).toEqual({role: 'system_admin'});
});

it('should return inactive option in case of inactive', () => {
const filters = getUserOptionsFromFilter('inactive');
const filters: FilterOptions = getUserOptionsFromFilter('inactive');
expect(filters).toEqual({inactive: true});
});
});
describe('searchUserOptionsFromFilter', () => {
it('should return empty options in case of empty filter', () => {
const filters = searchUserOptionsFromFilter('');
const filters: FilterOptions = searchUserOptionsFromFilter('');
expect(filters).toEqual({});
});

it('should return empty options in case of undefined', () => {
const filters = searchUserOptionsFromFilter(undefined);
const filters: FilterOptions = searchUserOptionsFromFilter(undefined);
expect(filters).toEqual({});
});

it('should return role options in case of system_admin', () => {
const filters = searchUserOptionsFromFilter('system_admin');
const filters: FilterOptions = searchUserOptionsFromFilter('system_admin');
expect(filters).toEqual({role: 'system_admin'});
});

it('should return allow_inactive option in case of inactive', () => {
const filters = searchUserOptionsFromFilter('inactive');
const filters: FilterOptions = searchUserOptionsFromFilter('inactive');
expect(filters).toEqual({allow_inactive: true});
});
});
Expand Down
13 changes: 7 additions & 6 deletions utils/filter_users.js → utils/filter_users.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,22 @@
// See LICENSE.txt for license information.
import {UserSearchOptions, UserListOptions, UserFilters} from 'utils/constants';

export type FilterOptions = Record<string, string | boolean>
const NEVER = 0;

// userSelectorOptionsFromFilter will convert a string UI filter to an options object
// for selecting users out of redux state
// Note: this is currently the same as getUserOptionsFromFilter but wrapped to be clear
// that there are separate purposes (this can be used with both getProfiles and searchProfiles
// selectors)
export function userSelectorOptionsFromFilter(filter) {
export function userSelectorOptionsFromFilter(filter: string | undefined): FilterOptions {
return getUserOptionsFromFilter(filter);
}

// getUserOptionsFromFilter will convert a string UI filter to an options objects
// for an API request to the get users endpoint
export function getUserOptionsFromFilter(filter) {
const options = {};
export function getUserOptionsFromFilter(filter: string | undefined): FilterOptions {
const options: FilterOptions = {};
if (filter === UserFilters.SYSTEM_ADMIN) {
options[UserListOptions.ROLE] = UserFilters.SYSTEM_ADMIN;
} else if (filter === UserFilters.SYSTEM_GUEST) {
Expand All @@ -29,8 +30,8 @@ export function getUserOptionsFromFilter(filter) {

// searchUserOptionsFromFilter will convert a string UI filter to an options objects
// for an API request to the search users endpoint
export function searchUserOptionsFromFilter(filter) {
const options = {};
export function searchUserOptionsFromFilter(filter: string | undefined): FilterOptions {
const options: FilterOptions = {};
if (filter === UserFilters.SYSTEM_ADMIN) {
options[UserSearchOptions.ROLE] = UserFilters.SYSTEM_ADMIN;
} else if (filter === UserFilters.SYSTEM_GUEST) {
Expand All @@ -42,6 +43,6 @@ export function searchUserOptionsFromFilter(filter) {
}

// isActive returns whether a user is active or not.
export function isActive(user) {
export function isActive(user: {delete_at: number}): boolean {
return user.delete_at === NEVER;
}

0 comments on commit b3f8607

Please sign in to comment.