Skip to content

Commit c0b806c

Browse files
committed
Fixed mocks delay
Fixed mocks users get
1 parent ae06d18 commit c0b806c

File tree

7 files changed

+155
-67
lines changed

7 files changed

+155
-67
lines changed

public/mockServiceWorker.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,8 @@ self.addEventListener('fetch', async function (event) {
136136
case 'MOCK_SUCCESS': {
137137
setTimeout(
138138
resolve.bind(this, createResponse(clientMessage)),
139-
clientMessage.delay,
139+
// clientMessage.delay,
140+
clientMessage.payload.delay,
140141
)
141142
break
142143
}

src/Administration/Administration.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,21 @@ import React from 'react'
22
import PropTypes from 'prop-types'
33
import { Route } from 'react-router-dom'
44
import UsersList from './Users/UsersList'
5-
import UserEditor from "./Users/UsersEditor/UsersEditor";
5+
import UserEditor from './Users/UsersEditor/UsersEditor'
66

77
const Administration = ({ match }) => {
88
return (
99
<>
1010
<Route exact path={`${match.path}/users`} component={UsersList} />
1111
<Route
1212
path={`${match.path}/users/new`}
13-
render={(props) => <UserEditor {...props} />}
13+
render={props => <UserEditor {...props} />}
1414
/>
1515
<Route
1616
path={`${match.path}/users/:userId/edit`}
17-
render={(props) => <UserEditor {...props} userId={parseInt(props.match.params.userId)} />}
17+
render={props => (
18+
<UserEditor {...props} userId={parseInt(props.match.params.userId)} />
19+
)}
1820
/>
1921
</>
2022
)

src/Administration/Users/UsersList/UsersList.js

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -87,11 +87,6 @@ const UsersList = ({ match }) => {
8787
order,
8888
})
8989

90-
// Make some artificial delay
91-
await new Promise(resolve => {
92-
setTimeout(() => resolve(true), 300)
93-
})
94-
9590
setStatus('idle')
9691
setUsersData(userDataRes)
9792
} catch (err) {

src/_api/_mocks/_data/usersData.ts

Lines changed: 61 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,19 @@
1-
import _keyBy from 'lodash/keyBy'
1+
import { get as _get, keyBy as _keyBy } from 'lodash'
22
import moment from 'moment'
33
import User from '../../_types/User'
4-
import organizationsToUsersData from './organizationsToUsersData'
4+
import UserToOrganization from '../../_types/UserToOrganization'
5+
import UsersToOrganizationsData from './organizationsToUsersData'
6+
import organizationsData from './organizationsData'
57

68
const list: User[] = [
79
{
810
id: 1,
911
firstName: 'Gevorg',
10-
lastName: 'H',
11-
username: 'johndoe1',
12-
email: 'john@doe.com',
12+
lastName: 'Harutyunyan',
13+
username: 'modularcoder',
14+
email: 'modularcoder@gmail.com',
1315
avatarUrl: 'https://avatars3.githubusercontent.com/u/3959008?v=3&s=40',
14-
userToOrganizations: organizationsToUsersData.byUserId[1],
16+
// userToOrganizations: organizationsToUsersData.byUserId[1],
1517
globalRole: 'admin',
1618
},
1719
{
@@ -22,7 +24,7 @@ const list: User[] = [
2224
2325
avatarUrl:
2426
'https://tinyfac.es/data/avatars/475605E3-69C5-4D2B-8727-61B7BB8C4699-500w.jpeg',
25-
userToOrganizations: organizationsToUsersData.byUserId[2],
27+
// userToOrganizations: organizationsToUsersData.byUserId[2],
2628
},
2729
{
2830
id: 3,
@@ -32,7 +34,7 @@ const list: User[] = [
3234
3335
avatarUrl:
3436
'https://images-na.ssl-images-amazon.com/images/M/MV5BMjA3NjYzMzE1MV5BMl5BanBnXkFtZTgwNTA4NDY4OTE@._V1_UX172_CR0,0,172,256_AL_.jpg',
35-
userToOrganizations: organizationsToUsersData.byUserId[3],
37+
// userToOrganizations: organizationsToUsersData.byUserId[3],
3638
},
3739
{
3840
id: 4,
@@ -41,8 +43,8 @@ const list: User[] = [
4143
username: null,
4244
4345
avatarUrl:
44-
'https://images-na.ssl-images-amazon.com/images/M/MV5BMjA3NjYzMzE1MV5BMl5BanBnXkFtZTgwNTA4NDY4OTE@._V1_UX172_CR0,0,172,256_AL_.jpg',
45-
userToOrganizations: organizationsToUsersData.byUserId[4],
46+
'https://images-na.ssl-images-amazon.com/images/M/MV5BMTc0MzgxMzQ5N15BMl5BanBnXkFtZTgwMzMzNjkwOTE@._V1_UX172_CR0,0,172,256_AL_.jpg',
47+
// userToOrganizations: organizationsToUsersData.byUserId[4],
4648
},
4749
{
4850
id: 5,
@@ -51,65 +53,61 @@ const list: User[] = [
5153
5254
avatarUrl:
5355
'https://images-na.ssl-images-amazon.com/images/M/MV5BMTgxMTc1MTYzM15BMl5BanBnXkFtZTgwNzI5NjMwOTE@._V1_UY256_CR16,0,172,256_AL_.jpg',
54-
userToOrganizations: organizationsToUsersData.byUserId[5],
56+
// userToOrganizations: organizationsToUsersData.byUserId[5],
5557
},
5658
{
5759
id: 6,
58-
firstName: 'Gevorg',
59-
lastName: 'H',
60-
username: 'johndoe1',
61-
email: 'john@doe.com',
62-
avatarUrl: 'https://avatars3.githubusercontent.com/u/3959008?v=3&s=40',
63-
userToOrganizations: organizationsToUsersData.byUserId[1],
60+
firstName: 'Bessie',
61+
lastName: 'Walker',
62+
username: 'bwalk',
63+
email: 'bessie.walker@example.com',
64+
avatarUrl: 'https://randomuser.me/api/portraits/women/29.jpg',
65+
// userToOrganizations: organizationsToUsersData.byUserId[6],
6466
globalRole: 'admin',
6567
},
6668
{
6769
id: 7,
68-
firstName: 'Jay',
69-
lastName: 'Nickolson',
70-
username: null,
71-
72-
avatarUrl:
73-
'https://tinyfac.es/data/avatars/475605E3-69C5-4D2B-8727-61B7BB8C4699-500w.jpeg',
74-
userToOrganizations: organizationsToUsersData.byUserId[2],
70+
firstName: 'Scarlett',
71+
lastName: 'Sanders',
72+
username: 'sanders',
73+
74+
avatarUrl: 'https://randomuser.me/api/portraits/women/26.jpg',
75+
// userToOrganizations: organizationsToUsersData.byUserId[2],
7576
},
7677
{
7778
id: 8,
78-
firstName: 'Ana',
79-
lastName: 'De Armas',
80-
username: null,
81-
82-
avatarUrl:
83-
'https://images-na.ssl-images-amazon.com/images/M/MV5BMjA3NjYzMzE1MV5BMl5BanBnXkFtZTgwNTA4NDY4OTE@._V1_UX172_CR0,0,172,256_AL_.jpg',
84-
userToOrganizations: organizationsToUsersData.byUserId[3],
79+
firstName: 'Scott',
80+
lastName: 'Jensen',
81+
username: 'scjx',
82+
83+
avatarUrl: 'https://randomuser.me/api/portraits/men/87.jpg',
84+
// userToOrganizations: organizationsToUsersData.byUserId[3],
8585
},
8686
{
8787
id: 9,
88-
firstName: 'Armas',
89-
lastName: 'De Ana',
88+
firstName: 'Marcus ',
89+
lastName: 'Barrett',
9090
username: null,
91-
92-
avatarUrl:
93-
'https://images-na.ssl-images-amazon.com/images/M/MV5BMjA3NjYzMzE1MV5BMl5BanBnXkFtZTgwNTA4NDY4OTE@._V1_UX172_CR0,0,172,256_AL_.jpg',
94-
userToOrganizations: organizationsToUsersData.byUserId[4],
91+
92+
avatarUrl: 'https://randomuser.me/api/portraits/men/88.jpg',
93+
// userToOrganizations: organizationsToUsersData.byUserId[4],
9594
},
9695
{
9796
id: 10,
98-
firstName: 'Sonequa',
99-
lastName: 'Martin-Green',
100-
101-
avatarUrl:
102-
'https://images-na.ssl-images-amazon.com/images/M/MV5BMTgxMTc1MTYzM15BMl5BanBnXkFtZTgwNzI5NjMwOTE@._V1_UY256_CR16,0,172,256_AL_.jpg',
103-
userToOrganizations: organizationsToUsersData.byUserId[5],
97+
firstName: 'Penny',
98+
lastName: 'Lawrence',
99+
100+
avatarUrl: 'https://randomuser.me/api/portraits/women/79.jpg',
101+
// userToOrganizations: organizationsToUsersData.byUserId[5],
104102
},
105103
{
106104
id: 11,
107-
firstName: 'Gevorg',
108-
lastName: 'H',
105+
firstName: 'Melvin',
106+
lastName: 'Sutton',
109107
username: 'johndoe1',
110-
email: 'john@doe.com',
111-
avatarUrl: 'https://avatars3.githubusercontent.com/u/3959008?v=3&s=40',
112-
userToOrganizations: organizationsToUsersData.byUserId[1],
108+
email: 'melvin.sutton@example.com',
109+
avatarUrl: 'https://randomuser.me/api/portraits/men/85.jpg',
110+
// userToOrganizations: organizationsToUsersData.byUserId[1],
113111
globalRole: 'admin',
114112
},
115113
{
@@ -120,7 +118,7 @@ const list: User[] = [
120118
121119
avatarUrl:
122120
'https://tinyfac.es/data/avatars/475605E3-69C5-4D2B-8727-61B7BB8C4699-500w.jpeg',
123-
userToOrganizations: organizationsToUsersData.byUserId[2],
121+
// userToOrganizations: organizationsToUsersData.byUserId[2],
124122
},
125123
{
126124
id: 13,
@@ -130,7 +128,7 @@ const list: User[] = [
130128
131129
avatarUrl:
132130
'https://images-na.ssl-images-amazon.com/images/M/MV5BMjA3NjYzMzE1MV5BMl5BanBnXkFtZTgwNTA4NDY4OTE@._V1_UX172_CR0,0,172,256_AL_.jpg',
133-
userToOrganizations: organizationsToUsersData.byUserId[3],
131+
// userToOrganizations: organizationsToUsersData.byUserId[3],
134132
},
135133
{
136134
id: 14,
@@ -140,7 +138,7 @@ const list: User[] = [
140138
141139
avatarUrl:
142140
'https://images-na.ssl-images-amazon.com/images/M/MV5BMjA3NjYzMzE1MV5BMl5BanBnXkFtZTgwNTA4NDY4OTE@._V1_UX172_CR0,0,172,256_AL_.jpg',
143-
userToOrganizations: organizationsToUsersData.byUserId[4],
141+
// userToOrganizations: organizationsToUsersData.byUserId[4],
144142
},
145143
{
146144
id: 15,
@@ -149,13 +147,21 @@ const list: User[] = [
149147
150148
avatarUrl:
151149
'https://images-na.ssl-images-amazon.com/images/M/MV5BMTgxMTc1MTYzM15BMl5BanBnXkFtZTgwNzI5NjMwOTE@._V1_UY256_CR16,0,172,256_AL_.jpg',
152-
userToOrganizations: organizationsToUsersData.byUserId[5],
150+
// userToOrganizations: organizationsToUsersData.byUserId[5],
153151
},
154-
].map(item => {
152+
].map(user => {
153+
const userToOrganization = UsersToOrganizationsData.byUserId[user.id] || []
154+
155155
return {
156-
...item,
156+
...user,
157+
userOgranizations: userToOrganization.map((relation: UserToOrganization) => {
158+
return {
159+
...relation,
160+
organization: _get(organizationsData.byId, relation.organizationId, {}),
161+
}
162+
}),
157163
createdAt: moment()
158-
.subtract(item.id, 'days')
164+
.subtract(user.id, 'days')
159165
.format(),
160166
}
161167
})
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
import _groupBy from 'lodash/groupBy'
2+
import UserToOrganization from '../../_types/UserToOrganization'
3+
4+
// import organizationsData from './organizationsData'
5+
// import usersData from './usersData'
6+
7+
const list: UserToOrganization[] = [
8+
{
9+
id: 1,
10+
organizationId: 1,
11+
userId: 1,
12+
role: 'owner',
13+
// organization: organizationsData.byId[1],
14+
// user: usersData.byId[1],
15+
},
16+
{
17+
id: 2,
18+
organizationId: 1,
19+
userId: 2,
20+
role: 'admin',
21+
// organization: organizationsData.byId[1],
22+
// user: usersData.byId[2],
23+
},
24+
{
25+
id: 3,
26+
organizationId: 1,
27+
userId: 2,
28+
role: 'member',
29+
// organization: organizationsData.byId[1],
30+
// user: usersData.byId[2],
31+
},
32+
{
33+
id: 4,
34+
organizationId: 2,
35+
userId: 2,
36+
role: 'owner',
37+
// organization: organizationsData.byId[2],
38+
// user: usersData.byId[2],
39+
},
40+
{
41+
id: 5,
42+
organizationId: 3,
43+
userId: 3,
44+
role: 'owner',
45+
// organization: organizationsData.byId[3],
46+
// user: usersData.byId[3],
47+
},
48+
{
49+
id: 6,
50+
organizationId: 3,
51+
userId: 2,
52+
role: 'member',
53+
// organization: organizationsData.byId[3],
54+
// user: usersData.byId[2],
55+
},
56+
]
57+
58+
const byUserId = _groupBy(list, 'userId')
59+
const byOrganizationId = _groupBy(list, 'organizationId')
60+
61+
export default {
62+
list,
63+
byUserId,
64+
byOrganizationId,
65+
}

src/_api/_mocks/usersMocks.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,11 @@ export default [
1111
return res(ctx.json(usersData.current))
1212
}),
1313

14-
rest.get(`${apiUrl}/users`, (req, res, ctx) => {
15-
const { limit = 10, offset = 0, order = {} } = req.params
14+
rest.get(`${apiUrl}/users`, async (req, res, ctx) => {
15+
let limit = parseInt(req.query.get('limit') || '0')
16+
let offset = parseInt(req.query.get('offset') || '10')
17+
let order = JSON.parse(req.query.get('order') || '{}')
18+
1619
const usersAll = order
1720
? _.orderBy(usersData.list, [order.orderBy], [order.order])
1821
: usersData.list
@@ -26,7 +29,7 @@ export default [
2629
// Set custom status
2730
ctx.status(200),
2831
// Delay the response
29-
ctx.delay(1000),
32+
ctx.delay(500),
3033
// send JSON response body
3134
ctx.json(result),
3235
)

src/_api/_types/UserToOrganization.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import Entity, { EntityId } from './Entity'
2+
3+
import Organization, { OrganizationId } from './Organization'
4+
import User, { UserId } from './User'
5+
6+
export type UserToOrganizationId = EntityId
7+
export type UserRole = 'member' | 'admin' | 'owner'
8+
9+
export default interface UserToOrganization extends Entity {
10+
id: UserToOrganizationId
11+
organizationId: OrganizationId
12+
userId: UserId
13+
role: UserRole
14+
organization?: Organization
15+
user?: User
16+
}

0 commit comments

Comments
 (0)