Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
A
ant-design-pro
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Thiago Borges
ant-design-pro
Commits
5c21b990
Commit
5c21b990
authored
Feb 07, 2018
by
jim
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Unit testing to increase breadcrumbs
parent
f388d925
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
83 additions
and
6 deletions
+83
-6
index.js
src/components/PageHeader/index.js
+12
-6
index.test.js
src/components/PageHeader/index.test.js
+71
-0
No files found.
src/components/PageHeader/index.js
View file @
5c21b990
...
@@ -7,8 +7,7 @@ import styles from './index.less';
...
@@ -7,8 +7,7 @@ import styles from './index.less';
const
{
TabPane
}
=
Tabs
;
const
{
TabPane
}
=
Tabs
;
export
function
getBreadcrumb
(
breadcrumbNameMap
,
url
)
{
function
getBreadcrumb
(
breadcrumbNameMap
,
url
)
{
let
breadcrumb
=
breadcrumbNameMap
[
url
];
let
breadcrumb
=
breadcrumbNameMap
[
url
];
if
(
!
breadcrumb
)
{
if
(
!
breadcrumb
)
{
Object
.
keys
(
breadcrumbNameMap
).
forEach
((
item
)
=>
{
Object
.
keys
(
breadcrumbNameMap
).
forEach
((
item
)
=>
{
...
@@ -20,6 +19,14 @@ function getBreadcrumb(breadcrumbNameMap, url) {
...
@@ -20,6 +19,14 @@ function getBreadcrumb(breadcrumbNameMap, url) {
return
breadcrumb
||
{};
return
breadcrumb
||
{};
}
}
// /userinfo/2144/id => ['/userinfo','/useinfo/2144,'/userindo/2144/id']
export
function
urlToList
(
url
)
{
const
urllist
=
url
.
split
(
'/'
).
filter
(
i
=>
i
);
return
urllist
.
map
((
urlItem
,
index
)
=>
{
return
`/
${
urllist
.
slice
(
0
,
index
+
1
).
join
(
'/'
)}
`
;
});
}
export
default
class
PageHeader
extends
PureComponent
{
export
default
class
PageHeader
extends
PureComponent
{
static
contextTypes
=
{
static
contextTypes
=
{
routes
:
PropTypes
.
array
,
routes
:
PropTypes
.
array
,
...
@@ -62,11 +69,10 @@ export default class PageHeader extends PureComponent {
...
@@ -62,11 +69,10 @@ export default class PageHeader extends PureComponent {
}
}
conversionFromLocation
=
(
routerLocation
,
breadcrumbNameMap
)
=>
{
conversionFromLocation
=
(
routerLocation
,
breadcrumbNameMap
)
=>
{
const
{
breadcrumbSeparator
,
linkElement
=
'a'
}
=
this
.
props
;
const
{
breadcrumbSeparator
,
linkElement
=
'a'
}
=
this
.
props
;
// Convert the
path
to an array
// Convert the
url
to an array
const
pathSnippets
=
routerLocation
.
pathname
.
split
(
'/'
).
filter
(
i
=>
i
);
const
pathSnippets
=
urlToList
(
routerLocation
.
pathname
);
// Loop data mosaic routing
// Loop data mosaic routing
const
extraBreadcrumbItems
=
pathSnippets
.
map
((
_
,
index
)
=>
{
const
extraBreadcrumbItems
=
pathSnippets
.
map
((
url
,
index
)
=>
{
const
url
=
`/
${
pathSnippets
.
slice
(
0
,
index
+
1
).
join
(
'/'
)}
`
;
const
currentBreadcrumb
=
getBreadcrumb
(
breadcrumbNameMap
,
url
);
const
currentBreadcrumb
=
getBreadcrumb
(
breadcrumbNameMap
,
url
);
const
isLinkable
=
(
index
!==
pathSnippets
.
length
-
1
)
&&
currentBreadcrumb
.
component
;
const
isLinkable
=
(
index
!==
pathSnippets
.
length
-
1
)
&&
currentBreadcrumb
.
component
;
return
currentBreadcrumb
.
name
&&
!
currentBreadcrumb
.
hideInBreadcrumb
?
(
return
currentBreadcrumb
.
name
&&
!
currentBreadcrumb
.
hideInBreadcrumb
?
(
...
...
src/components/PageHeader/index.test.js
0 → 100644
View file @
5c21b990
import
{
getBreadcrumb
,
urlToList
}
from
'./index'
;
describe
(
'test urlToList'
,
()
=>
{
it
(
'A path'
,
()
=>
{
expect
(
urlToList
(
'/userinfo'
)).
toEqual
([
'/userinfo'
]);
});
it
(
'Secondary path'
,
()
=>
{
expect
(
urlToList
(
'/userinfo/2144'
)).
toEqual
([
'/userinfo'
,
'/userinfo/2144'
,
]);
});
it
(
'Three paths'
,
()
=>
{
expect
(
urlToList
(
'/userinfo/2144/addr'
)).
toEqual
([
'/userinfo'
,
'/userinfo/2144'
,
'/userinfo/2144/addr'
,
]);
});
});
const
routerData
=
{
'/dashboard/analysis'
:
{
name
:
'分析页'
,
},
'/userinfo'
:
{
name
:
'用户列表'
,
},
'/userinfo/:id'
:
{
name
:
'用户信息'
,
},
'/userinfo/:id/addr'
:
{
name
:
'收货订单'
,
},
};
describe
(
'test getBreadcrumb'
,
()
=>
{
it
(
'Simple url'
,
()
=>
{
expect
(
getBreadcrumb
(
routerData
,
'/dashboard/analysis'
).
name
).
toEqual
(
'分析页'
);
});
it
(
'Parameters url'
,
()
=>
{
expect
(
getBreadcrumb
(
routerData
,
'/userinfo/2144'
).
name
).
toEqual
(
'用户信息'
);
});
it
(
'The middle parameter url'
,
()
=>
{
expect
(
getBreadcrumb
(
routerData
,
'/userinfo/2144/addr'
).
name
).
toEqual
(
'收货订单'
);
});
it
(
'Loop through the parameters'
,
()
=>
{
const
urlNameList
=
urlToList
(
'/userinfo/2144/addr'
).
map
((
url
)
=>
{
return
getBreadcrumb
(
routerData
,
url
).
name
;
});
expect
(
urlNameList
).
toEqual
([
'用户列表'
,
'用户信息'
,
'收货订单'
]);
});
it
(
'a path'
,
()
=>
{
const
urlNameList
=
urlToList
(
'/userinfo'
).
map
((
url
)
=>
{
return
getBreadcrumb
(
routerData
,
url
).
name
;
});
expect
(
urlNameList
).
toEqual
([
'用户列表'
]);
});
it
(
'Secondary path'
,
()
=>
{
const
urlNameList
=
urlToList
(
'/userinfo/2144'
).
map
((
url
)
=>
{
return
getBreadcrumb
(
routerData
,
url
).
name
;
});
expect
(
urlNameList
).
toEqual
([
'用户列表'
,
'用户信息'
]);
});
});
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment