mirror of
https://github.com/mastermindzh/rickvanlieshout.com
synced 2025-07-27 04:32:32 +02:00
Upgrade to Gatsby v2
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`CategoriesListTemplate renders correctly 1`] = `
|
||||
<div
|
||||
className="layout"
|
||||
>
|
||||
<StaticQuery
|
||||
render={[Function]}
|
||||
/>
|
||||
<div
|
||||
className="page"
|
||||
>
|
||||
<div
|
||||
className="page__inner"
|
||||
>
|
||||
<h1
|
||||
className="page__title"
|
||||
>
|
||||
Categories
|
||||
</h1>
|
||||
<div
|
||||
className="page__body"
|
||||
>
|
||||
<ul>
|
||||
<li>
|
||||
<Link
|
||||
to="/categories/test-0/"
|
||||
>
|
||||
test_0
|
||||
(
|
||||
1
|
||||
)
|
||||
</Link>
|
||||
</li>
|
||||
<li>
|
||||
<Link
|
||||
to="/categories/test-1/"
|
||||
>
|
||||
test_1
|
||||
(
|
||||
2
|
||||
)
|
||||
</Link>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
`;
|
128
src/templates/__snapshots__/category-template.test.js.snap
Normal file
128
src/templates/__snapshots__/category-template.test.js.snap
Normal file
@@ -0,0 +1,128 @@
|
||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`CategoryTemplate renders correctly 1`] = `
|
||||
<div
|
||||
className="layout"
|
||||
>
|
||||
<StaticQuery
|
||||
render={[Function]}
|
||||
/>
|
||||
<div
|
||||
className="page"
|
||||
>
|
||||
<div
|
||||
className="page__inner"
|
||||
>
|
||||
<h1
|
||||
className="page__title"
|
||||
>
|
||||
test
|
||||
</h1>
|
||||
<div
|
||||
className="page__body"
|
||||
>
|
||||
<div
|
||||
className="feed"
|
||||
>
|
||||
<div
|
||||
className="feed__item"
|
||||
>
|
||||
<div
|
||||
className="feed__item-meta"
|
||||
>
|
||||
<time
|
||||
className="feed__item-meta-time"
|
||||
dateTime="September 2, 2016"
|
||||
>
|
||||
September 2016
|
||||
</time>
|
||||
<span
|
||||
className="feed__item-meta-divider"
|
||||
/>
|
||||
<span
|
||||
className="feed__item-meta-category"
|
||||
>
|
||||
<Link
|
||||
className="feed__item-meta-category-link"
|
||||
to="/test"
|
||||
>
|
||||
test
|
||||
</Link>
|
||||
</span>
|
||||
</div>
|
||||
<h2
|
||||
className="feed__item-title"
|
||||
>
|
||||
<Link
|
||||
className="feed__item-title-link"
|
||||
to="/test_0"
|
||||
>
|
||||
test_0
|
||||
</Link>
|
||||
</h2>
|
||||
<p
|
||||
className="feed__item-description"
|
||||
>
|
||||
test_0
|
||||
</p>
|
||||
<Link
|
||||
className="feed__item-readmore"
|
||||
to="/test_0"
|
||||
>
|
||||
Read
|
||||
</Link>
|
||||
</div>
|
||||
<div
|
||||
className="feed__item"
|
||||
>
|
||||
<div
|
||||
className="feed__item-meta"
|
||||
>
|
||||
<time
|
||||
className="feed__item-meta-time"
|
||||
dateTime="September 2, 2016"
|
||||
>
|
||||
September 2016
|
||||
</time>
|
||||
<span
|
||||
className="feed__item-meta-divider"
|
||||
/>
|
||||
<span
|
||||
className="feed__item-meta-category"
|
||||
>
|
||||
<Link
|
||||
className="feed__item-meta-category-link"
|
||||
to="/test"
|
||||
>
|
||||
test
|
||||
</Link>
|
||||
</span>
|
||||
</div>
|
||||
<h2
|
||||
className="feed__item-title"
|
||||
>
|
||||
<Link
|
||||
className="feed__item-title-link"
|
||||
to="/test_1"
|
||||
>
|
||||
test_1
|
||||
</Link>
|
||||
</h2>
|
||||
<p
|
||||
className="feed__item-description"
|
||||
>
|
||||
test_1
|
||||
</p>
|
||||
<Link
|
||||
className="feed__item-readmore"
|
||||
to="/test_1"
|
||||
>
|
||||
Read
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
`;
|
123
src/templates/__snapshots__/index-template.test.js.snap
Normal file
123
src/templates/__snapshots__/index-template.test.js.snap
Normal file
@@ -0,0 +1,123 @@
|
||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`IndexTemplate renders correctly 1`] = `
|
||||
<div
|
||||
className="layout"
|
||||
>
|
||||
<StaticQuery
|
||||
render={[Function]}
|
||||
/>
|
||||
<div
|
||||
className="page"
|
||||
>
|
||||
<div
|
||||
className="page__inner"
|
||||
>
|
||||
<div
|
||||
className="page__body"
|
||||
>
|
||||
<div
|
||||
className="feed"
|
||||
>
|
||||
<div
|
||||
className="feed__item"
|
||||
>
|
||||
<div
|
||||
className="feed__item-meta"
|
||||
>
|
||||
<time
|
||||
className="feed__item-meta-time"
|
||||
dateTime="September 2, 2016"
|
||||
>
|
||||
September 2016
|
||||
</time>
|
||||
<span
|
||||
className="feed__item-meta-divider"
|
||||
/>
|
||||
<span
|
||||
className="feed__item-meta-category"
|
||||
>
|
||||
<Link
|
||||
className="feed__item-meta-category-link"
|
||||
to="/test_0"
|
||||
>
|
||||
test_0
|
||||
</Link>
|
||||
</span>
|
||||
</div>
|
||||
<h2
|
||||
className="feed__item-title"
|
||||
>
|
||||
<Link
|
||||
className="feed__item-title-link"
|
||||
to="/test_0"
|
||||
>
|
||||
test_0
|
||||
</Link>
|
||||
</h2>
|
||||
<p
|
||||
className="feed__item-description"
|
||||
>
|
||||
test_0
|
||||
</p>
|
||||
<Link
|
||||
className="feed__item-readmore"
|
||||
to="/test_0"
|
||||
>
|
||||
Read
|
||||
</Link>
|
||||
</div>
|
||||
<div
|
||||
className="feed__item"
|
||||
>
|
||||
<div
|
||||
className="feed__item-meta"
|
||||
>
|
||||
<time
|
||||
className="feed__item-meta-time"
|
||||
dateTime="September 2, 2016"
|
||||
>
|
||||
September 2016
|
||||
</time>
|
||||
<span
|
||||
className="feed__item-meta-divider"
|
||||
/>
|
||||
<span
|
||||
className="feed__item-meta-category"
|
||||
>
|
||||
<Link
|
||||
className="feed__item-meta-category-link"
|
||||
to="/test_1"
|
||||
>
|
||||
test_1
|
||||
</Link>
|
||||
</span>
|
||||
</div>
|
||||
<h2
|
||||
className="feed__item-title"
|
||||
>
|
||||
<Link
|
||||
className="feed__item-title-link"
|
||||
to="/test_1"
|
||||
>
|
||||
test_1
|
||||
</Link>
|
||||
</h2>
|
||||
<p
|
||||
className="feed__item-description"
|
||||
>
|
||||
test_1
|
||||
</p>
|
||||
<Link
|
||||
className="feed__item-readmore"
|
||||
to="/test_1"
|
||||
>
|
||||
Read
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
`;
|
31
src/templates/__snapshots__/not-found-template.test.js.snap
Normal file
31
src/templates/__snapshots__/not-found-template.test.js.snap
Normal file
@@ -0,0 +1,31 @@
|
||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`NotFoundTemplate renders correctly 1`] = `
|
||||
<div
|
||||
className="layout"
|
||||
>
|
||||
<StaticQuery
|
||||
render={[Function]}
|
||||
/>
|
||||
<div
|
||||
className="page"
|
||||
>
|
||||
<div
|
||||
className="page__inner"
|
||||
>
|
||||
<h1
|
||||
className="page__title"
|
||||
>
|
||||
NOT FOUND
|
||||
</h1>
|
||||
<div
|
||||
className="page__body"
|
||||
>
|
||||
<p>
|
||||
You just hit a route that doesn't exist... the sadness.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
`;
|
35
src/templates/__snapshots__/page-template.test.js.snap
Normal file
35
src/templates/__snapshots__/page-template.test.js.snap
Normal file
@@ -0,0 +1,35 @@
|
||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`PageTemplate renders correctly 1`] = `
|
||||
<div
|
||||
className="layout"
|
||||
>
|
||||
<StaticQuery
|
||||
render={[Function]}
|
||||
/>
|
||||
<div
|
||||
className="page"
|
||||
>
|
||||
<div
|
||||
className="page__inner"
|
||||
>
|
||||
<h1
|
||||
className="page__title"
|
||||
>
|
||||
test
|
||||
</h1>
|
||||
<div
|
||||
className="page__body"
|
||||
>
|
||||
<div
|
||||
dangerouslySetInnerHTML={
|
||||
Object {
|
||||
"__html": "<p>test</p>",
|
||||
}
|
||||
}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
`;
|
91
src/templates/__snapshots__/post-template.test.js.snap
Normal file
91
src/templates/__snapshots__/post-template.test.js.snap
Normal file
@@ -0,0 +1,91 @@
|
||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`PostTemplate renders correctly 1`] = `
|
||||
<div
|
||||
className="layout"
|
||||
>
|
||||
<div
|
||||
className="post"
|
||||
>
|
||||
<Link
|
||||
className="post__home-button"
|
||||
to="/"
|
||||
>
|
||||
All Articles
|
||||
</Link>
|
||||
<div
|
||||
className="post__content"
|
||||
>
|
||||
<div
|
||||
className="content"
|
||||
>
|
||||
<h1
|
||||
className="content__title"
|
||||
>
|
||||
test
|
||||
</h1>
|
||||
<div
|
||||
className="content__body"
|
||||
dangerouslySetInnerHTML={
|
||||
Object {
|
||||
"__html": "<p>test</p>",
|
||||
}
|
||||
}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
className="post__footer"
|
||||
>
|
||||
<div
|
||||
className="meta"
|
||||
>
|
||||
<p
|
||||
className="meta__date"
|
||||
>
|
||||
Published
|
||||
2 Sep 2016
|
||||
</p>
|
||||
</div>
|
||||
<div
|
||||
className="tags"
|
||||
>
|
||||
<ul
|
||||
className="tags__list"
|
||||
>
|
||||
<li
|
||||
className="tags__list-item"
|
||||
>
|
||||
<Link
|
||||
className="tags__list-item-link"
|
||||
to="/test_0"
|
||||
>
|
||||
test_0
|
||||
</Link>
|
||||
</li>
|
||||
<li
|
||||
className="tags__list-item"
|
||||
>
|
||||
<Link
|
||||
className="tags__list-item-link"
|
||||
to="/test_1"
|
||||
>
|
||||
test_1
|
||||
</Link>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<StaticQuery
|
||||
render={[Function]}
|
||||
/>
|
||||
</div>
|
||||
<div
|
||||
className="post__comments"
|
||||
>
|
||||
<StaticQuery
|
||||
render={[Function]}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
`;
|
128
src/templates/__snapshots__/tag-template.test.js.snap
Normal file
128
src/templates/__snapshots__/tag-template.test.js.snap
Normal file
@@ -0,0 +1,128 @@
|
||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`TagTemplate renders correctly 1`] = `
|
||||
<div
|
||||
className="layout"
|
||||
>
|
||||
<StaticQuery
|
||||
render={[Function]}
|
||||
/>
|
||||
<div
|
||||
className="page"
|
||||
>
|
||||
<div
|
||||
className="page__inner"
|
||||
>
|
||||
<h1
|
||||
className="page__title"
|
||||
>
|
||||
test
|
||||
</h1>
|
||||
<div
|
||||
className="page__body"
|
||||
>
|
||||
<div
|
||||
className="feed"
|
||||
>
|
||||
<div
|
||||
className="feed__item"
|
||||
>
|
||||
<div
|
||||
className="feed__item-meta"
|
||||
>
|
||||
<time
|
||||
className="feed__item-meta-time"
|
||||
dateTime="September 2, 2016"
|
||||
>
|
||||
September 2016
|
||||
</time>
|
||||
<span
|
||||
className="feed__item-meta-divider"
|
||||
/>
|
||||
<span
|
||||
className="feed__item-meta-category"
|
||||
>
|
||||
<Link
|
||||
className="feed__item-meta-category-link"
|
||||
to="/test"
|
||||
>
|
||||
test
|
||||
</Link>
|
||||
</span>
|
||||
</div>
|
||||
<h2
|
||||
className="feed__item-title"
|
||||
>
|
||||
<Link
|
||||
className="feed__item-title-link"
|
||||
to="/test_0"
|
||||
>
|
||||
test_0
|
||||
</Link>
|
||||
</h2>
|
||||
<p
|
||||
className="feed__item-description"
|
||||
>
|
||||
test_0
|
||||
</p>
|
||||
<Link
|
||||
className="feed__item-readmore"
|
||||
to="/test_0"
|
||||
>
|
||||
Read
|
||||
</Link>
|
||||
</div>
|
||||
<div
|
||||
className="feed__item"
|
||||
>
|
||||
<div
|
||||
className="feed__item-meta"
|
||||
>
|
||||
<time
|
||||
className="feed__item-meta-time"
|
||||
dateTime="September 2, 2016"
|
||||
>
|
||||
September 2016
|
||||
</time>
|
||||
<span
|
||||
className="feed__item-meta-divider"
|
||||
/>
|
||||
<span
|
||||
className="feed__item-meta-category"
|
||||
>
|
||||
<Link
|
||||
className="feed__item-meta-category-link"
|
||||
to="/test"
|
||||
>
|
||||
test
|
||||
</Link>
|
||||
</span>
|
||||
</div>
|
||||
<h2
|
||||
className="feed__item-title"
|
||||
>
|
||||
<Link
|
||||
className="feed__item-title-link"
|
||||
to="/test_1"
|
||||
>
|
||||
test_1
|
||||
</Link>
|
||||
</h2>
|
||||
<p
|
||||
className="feed__item-description"
|
||||
>
|
||||
test_1
|
||||
</p>
|
||||
<Link
|
||||
className="feed__item-readmore"
|
||||
to="/test_1"
|
||||
>
|
||||
Read
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
`;
|
50
src/templates/__snapshots__/tags-list-template.test.js.snap
Normal file
50
src/templates/__snapshots__/tags-list-template.test.js.snap
Normal file
@@ -0,0 +1,50 @@
|
||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`TagsListTemplate renders correctly 1`] = `
|
||||
<div
|
||||
className="layout"
|
||||
>
|
||||
<StaticQuery
|
||||
render={[Function]}
|
||||
/>
|
||||
<div
|
||||
className="page"
|
||||
>
|
||||
<div
|
||||
className="page__inner"
|
||||
>
|
||||
<h1
|
||||
className="page__title"
|
||||
>
|
||||
Tags
|
||||
</h1>
|
||||
<div
|
||||
className="page__body"
|
||||
>
|
||||
<ul>
|
||||
<li>
|
||||
<Link
|
||||
to="/tags/test-0/"
|
||||
>
|
||||
test_0
|
||||
(
|
||||
1
|
||||
)
|
||||
</Link>
|
||||
</li>
|
||||
<li>
|
||||
<Link
|
||||
to="/tags/test-1/"
|
||||
>
|
||||
test_1
|
||||
(
|
||||
2
|
||||
)
|
||||
</Link>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
`;
|
53
src/templates/categories-list-template.js
Normal file
53
src/templates/categories-list-template.js
Normal file
@@ -0,0 +1,53 @@
|
||||
import React from 'react';
|
||||
import { Link, graphql } from 'gatsby';
|
||||
import kebabCase from 'lodash/kebabCase';
|
||||
import Sidebar from '../components/Sidebar';
|
||||
import Layout from '../components/Layout';
|
||||
import Page from '../components/Page';
|
||||
|
||||
const CategoriesListTemplate = ({ data }) => {
|
||||
const {
|
||||
title,
|
||||
subtitle
|
||||
} = data.site.siteMetadata;
|
||||
|
||||
const { group } = data.allMarkdownRemark;
|
||||
|
||||
return (
|
||||
<Layout title={`Categories - ${title}`} description={subtitle}>
|
||||
<Sidebar />
|
||||
<Page title="Categories">
|
||||
<ul>
|
||||
{group.map((category) => (
|
||||
<li key={category.fieldValue}>
|
||||
<Link to={`/categories/${kebabCase(category.fieldValue)}/`}>
|
||||
{category.fieldValue} ({category.totalCount})
|
||||
</Link>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</Page>
|
||||
</Layout>
|
||||
);
|
||||
};
|
||||
|
||||
export const query = graphql`
|
||||
query CategoriesListQuery {
|
||||
site {
|
||||
siteMetadata {
|
||||
title
|
||||
subtitle
|
||||
}
|
||||
}
|
||||
allMarkdownRemark(
|
||||
filter: { frontmatter: { layout: { eq: "post" }, draft: { ne: true } } }
|
||||
) {
|
||||
group(field: frontmatter___category) {
|
||||
fieldValue
|
||||
totalCount
|
||||
}
|
||||
}
|
||||
}
|
||||
`;
|
||||
|
||||
export default CategoriesListTemplate;
|
33
src/templates/categories-list-template.test.js
Normal file
33
src/templates/categories-list-template.test.js
Normal file
@@ -0,0 +1,33 @@
|
||||
import React from 'react';
|
||||
import renderer from 'react-test-renderer';
|
||||
import CategoriesListTemplate from './categories-list-template';
|
||||
|
||||
describe('CategoriesListTemplate', () => {
|
||||
const props = {
|
||||
data: {
|
||||
allMarkdownRemark: {
|
||||
group: [
|
||||
{
|
||||
fieldValue: 'test_0',
|
||||
totalCount: 1
|
||||
},
|
||||
{
|
||||
fieldValue: 'test_1',
|
||||
totalCount: 2
|
||||
}
|
||||
]
|
||||
},
|
||||
site: {
|
||||
siteMetadata: {
|
||||
title: 'test',
|
||||
subtitle: 'test'
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
it('renders correctly', () => {
|
||||
const tree = renderer.create(<CategoriesListTemplate {...props} />).toJSON();
|
||||
expect(tree).toMatchSnapshot();
|
||||
});
|
||||
});
|
64
src/templates/category-template.js
Normal file
64
src/templates/category-template.js
Normal file
@@ -0,0 +1,64 @@
|
||||
import React from 'react';
|
||||
import { graphql } from 'gatsby';
|
||||
import Layout from '../components/Layout';
|
||||
import Sidebar from '../components/Sidebar';
|
||||
import Feed from '../components/Feed';
|
||||
import Page from '../components/Page';
|
||||
|
||||
const CategoryTemplate = ({ data, pageContext }) => {
|
||||
const {
|
||||
title: siteTitle,
|
||||
subtitle: siteSubtitle
|
||||
} = data.site.siteMetadata;
|
||||
|
||||
const {
|
||||
category,
|
||||
page
|
||||
} = pageContext;
|
||||
|
||||
const { edges } = data.allMarkdownRemark;
|
||||
const pageTitle = page > 0 ? `${category} - Page ${page} - ${siteTitle}` : `${category} - ${siteTitle}`;
|
||||
|
||||
return (
|
||||
<Layout title={pageTitle} description={siteSubtitle}>
|
||||
<Sidebar />
|
||||
<Page title={category}>
|
||||
<Feed edges={edges} />
|
||||
</Page>
|
||||
</Layout>
|
||||
);
|
||||
};
|
||||
|
||||
export const query = graphql`
|
||||
query CategoryPage($category: String, $limit: Int!, $skip: Int!) {
|
||||
site {
|
||||
siteMetadata {
|
||||
title
|
||||
subtitle
|
||||
}
|
||||
}
|
||||
allMarkdownRemark(
|
||||
limit: $limit,
|
||||
skip: $skip,
|
||||
filter: { frontmatter: { category: { eq: $category }, layout: { eq: "post" }, draft: { ne: true } } },
|
||||
sort: { order: DESC, fields: [frontmatter___date] }
|
||||
){
|
||||
edges {
|
||||
node {
|
||||
fields {
|
||||
categorySlug
|
||||
slug
|
||||
}
|
||||
frontmatter {
|
||||
date
|
||||
description
|
||||
category
|
||||
title
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
`;
|
||||
|
||||
export default CategoryTemplate;
|
@@ -1,52 +0,0 @@
|
||||
import React from 'react';
|
||||
import Helmet from 'react-helmet';
|
||||
import Sidebar from '../components/Sidebar';
|
||||
import CategoryTemplateDetails from '../components/CategoryTemplateDetails';
|
||||
|
||||
class CategoryTemplate extends React.Component {
|
||||
render() {
|
||||
const title = this.props.data.site.siteMetadata.title;
|
||||
const category = this.props.pathContext.category;
|
||||
const posts = this.props.data.allMarkdownRemark.edges;
|
||||
|
||||
return (
|
||||
<div>
|
||||
<Helmet title={`${category} - ${title}`} />
|
||||
<Sidebar siteMetadata={this.props.data.site.siteMetadata} />
|
||||
<CategoryTemplateDetails category={category} posts={posts} />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export default CategoryTemplate;
|
||||
|
||||
export const pageQuery = graphql`
|
||||
query CategoryPage($category: String) {
|
||||
site {
|
||||
siteMetadata {
|
||||
...sidebarFragment
|
||||
}
|
||||
}
|
||||
allMarkdownRemark(
|
||||
limit: 1000,
|
||||
filter: { frontmatter: { category: { eq: $category }, layout: { eq: "post" }, draft: { ne: true } } },
|
||||
sort: { order: DESC, fields: [frontmatter___date] }
|
||||
){
|
||||
edges {
|
||||
node {
|
||||
fields {
|
||||
slug
|
||||
categorySlug
|
||||
}
|
||||
frontmatter {
|
||||
title
|
||||
date
|
||||
category
|
||||
description
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
`;
|
67
src/templates/category-template.test.js
Normal file
67
src/templates/category-template.test.js
Normal file
@@ -0,0 +1,67 @@
|
||||
import React from 'react';
|
||||
import renderer from 'react-test-renderer';
|
||||
import CategoryTemplate from './category-template';
|
||||
|
||||
describe('CategoryTemplate', () => {
|
||||
const props = {
|
||||
data: {
|
||||
allMarkdownRemark: {
|
||||
group: [
|
||||
{
|
||||
fieldValue: 'test_0',
|
||||
totalCount: 1
|
||||
},
|
||||
{
|
||||
fieldValue: 'test_1',
|
||||
totalCount: 2
|
||||
}
|
||||
],
|
||||
edges: [
|
||||
{
|
||||
node: {
|
||||
fields: {
|
||||
slug: '/test_0',
|
||||
categorySlug: '/test'
|
||||
},
|
||||
frontmatter: {
|
||||
date: '2016-09-01T23:46:37.121Z',
|
||||
description: 'test_0',
|
||||
category: 'test',
|
||||
title: 'test_0'
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
node: {
|
||||
fields: {
|
||||
slug: '/test_1',
|
||||
categorySlug: '/test'
|
||||
},
|
||||
frontmatter: {
|
||||
date: '2016-09-01T23:46:37.121Z',
|
||||
description: 'test_1',
|
||||
category: 'test',
|
||||
title: 'test_1'
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
site: {
|
||||
siteMetadata: {
|
||||
title: 'test',
|
||||
subtitle: 'test'
|
||||
}
|
||||
}
|
||||
},
|
||||
pageContext: {
|
||||
category: 'test',
|
||||
page: 1
|
||||
}
|
||||
};
|
||||
|
||||
it('renders correctly', () => {
|
||||
const tree = renderer.create(<CategoryTemplate {...props} />).toJSON();
|
||||
expect(tree).toMatchSnapshot();
|
||||
});
|
||||
});
|
60
src/templates/index-template.js
Normal file
60
src/templates/index-template.js
Normal file
@@ -0,0 +1,60 @@
|
||||
import React from 'react';
|
||||
import { graphql } from 'gatsby';
|
||||
import Layout from '../components/Layout';
|
||||
import Sidebar from '../components/Sidebar';
|
||||
import Feed from '../components/Feed';
|
||||
import Page from '../components/Page';
|
||||
|
||||
const IndexTemplate = ({ data, pageContext }) => {
|
||||
const {
|
||||
title: siteTitle,
|
||||
subtitle: siteSubtitle
|
||||
} = data.site.siteMetadata;
|
||||
|
||||
const { page } = pageContext;
|
||||
const { edges } = data.allMarkdownRemark;
|
||||
const pageTitle = page > 0 ? `Posts - Page ${page} - ${siteTitle}` : siteTitle;
|
||||
|
||||
return (
|
||||
<Layout title={`${pageTitle}`} description={siteSubtitle}>
|
||||
<Sidebar />
|
||||
<Page>
|
||||
<Feed edges={edges} />
|
||||
</Page>
|
||||
</Layout>
|
||||
);
|
||||
};
|
||||
|
||||
export const query = graphql`
|
||||
query IndexTemplate($limit: Int!, $skip: Int!) {
|
||||
site {
|
||||
siteMetadata {
|
||||
title
|
||||
subtitle
|
||||
}
|
||||
}
|
||||
allMarkdownRemark(
|
||||
limit: $limit,
|
||||
skip: $skip,
|
||||
filter: { frontmatter: { layout: { eq: "post" }, draft: { ne: true } } },
|
||||
sort: { order: DESC, fields: [frontmatter___date] }
|
||||
){
|
||||
edges {
|
||||
node {
|
||||
fields {
|
||||
slug
|
||||
categorySlug
|
||||
}
|
||||
frontmatter {
|
||||
title
|
||||
date
|
||||
category
|
||||
description
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
`;
|
||||
|
||||
export default IndexTemplate;
|
56
src/templates/index-template.test.js
Normal file
56
src/templates/index-template.test.js
Normal file
@@ -0,0 +1,56 @@
|
||||
import React from 'react';
|
||||
import renderer from 'react-test-renderer';
|
||||
import IndexTemplate from './index-template';
|
||||
|
||||
describe('IndexTemplate', () => {
|
||||
const props = {
|
||||
data: {
|
||||
allMarkdownRemark: {
|
||||
edges: [
|
||||
{
|
||||
node: {
|
||||
fields: {
|
||||
slug: '/test_0',
|
||||
categorySlug: '/test_0'
|
||||
},
|
||||
frontmatter: {
|
||||
date: '2016-09-01T23:46:37.121Z',
|
||||
description: 'test_0',
|
||||
category: 'test_0',
|
||||
title: 'test_0'
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
node: {
|
||||
fields: {
|
||||
slug: '/test_1',
|
||||
categorySlug: '/test_1'
|
||||
},
|
||||
frontmatter: {
|
||||
date: '2016-09-01T23:46:37.121Z',
|
||||
description: 'test_1',
|
||||
category: 'test_1',
|
||||
title: 'test_1'
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
site: {
|
||||
siteMetadata: {
|
||||
title: 'test',
|
||||
subtitle: 'test'
|
||||
}
|
||||
}
|
||||
},
|
||||
pageContext: {
|
||||
page: 1
|
||||
}
|
||||
};
|
||||
|
||||
it('renders correctly', () => {
|
||||
const tree = renderer.create(<IndexTemplate {...props} />).toJSON();
|
||||
expect(tree).toMatchSnapshot();
|
||||
});
|
||||
});
|
34
src/templates/not-found-template.js
Normal file
34
src/templates/not-found-template.js
Normal file
@@ -0,0 +1,34 @@
|
||||
import React from 'react';
|
||||
import { graphql } from 'gatsby';
|
||||
import Sidebar from '../components/Sidebar';
|
||||
import Layout from '../components/Layout';
|
||||
import Page from '../components/Page';
|
||||
|
||||
const NotFoundTemplate = ({ data }) => {
|
||||
const {
|
||||
title,
|
||||
subtitle
|
||||
} = data.site.siteMetadata;
|
||||
|
||||
return (
|
||||
<Layout title={`Not Found - ${title}`} description={subtitle}>
|
||||
<Sidebar />
|
||||
<Page title="NOT FOUND">
|
||||
<p>You just hit a route that doesn't exist... the sadness.</p>
|
||||
</Page>
|
||||
</Layout>
|
||||
);
|
||||
};
|
||||
|
||||
export const query = graphql`
|
||||
query NotFoundQuery {
|
||||
site {
|
||||
siteMetadata {
|
||||
title
|
||||
subtitle
|
||||
}
|
||||
}
|
||||
}
|
||||
`;
|
||||
|
||||
export default NotFoundTemplate;
|
21
src/templates/not-found-template.test.js
Normal file
21
src/templates/not-found-template.test.js
Normal file
@@ -0,0 +1,21 @@
|
||||
import React from 'react';
|
||||
import renderer from 'react-test-renderer';
|
||||
import NotFoundTemplate from './not-found-template';
|
||||
|
||||
describe('NotFoundTemplate', () => {
|
||||
const props = {
|
||||
data: {
|
||||
site: {
|
||||
siteMetadata: {
|
||||
title: 'test',
|
||||
subtitle: 'test'
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
it('renders correctly', () => {
|
||||
const tree = renderer.create(<NotFoundTemplate {...props} />).toJSON();
|
||||
expect(tree).toMatchSnapshot();
|
||||
});
|
||||
});
|
52
src/templates/page-template.js
Normal file
52
src/templates/page-template.js
Normal file
@@ -0,0 +1,52 @@
|
||||
import React from 'react';
|
||||
import { graphql } from 'gatsby';
|
||||
import Layout from '../components/Layout';
|
||||
import Sidebar from '../components/Sidebar';
|
||||
import Page from '../components/Page';
|
||||
|
||||
const PageTemplate = ({ data }) => {
|
||||
const {
|
||||
title: siteTitle,
|
||||
subtitle: siteSubtitle
|
||||
} = data.site.siteMetadata;
|
||||
|
||||
const {
|
||||
title: pageTitle,
|
||||
description: pageDescription
|
||||
} = data.markdownRemark.frontmatter;
|
||||
|
||||
const { html: pageBody } = data.markdownRemark;
|
||||
|
||||
const metaDescription = pageDescription !== null ? pageDescription : siteSubtitle;
|
||||
|
||||
return (
|
||||
<Layout title={`${pageTitle} - ${siteTitle}`} description={metaDescription}>
|
||||
<Sidebar />
|
||||
<Page title={pageTitle}>
|
||||
<div dangerouslySetInnerHTML={{ __html: pageBody }} />
|
||||
</Page>
|
||||
</Layout>
|
||||
);
|
||||
};
|
||||
|
||||
export const query = graphql`
|
||||
query PageBySlug($slug: String!) {
|
||||
site {
|
||||
siteMetadata {
|
||||
title
|
||||
subtitle
|
||||
}
|
||||
}
|
||||
markdownRemark(fields: { slug: { eq: $slug } }) {
|
||||
id
|
||||
html
|
||||
frontmatter {
|
||||
title
|
||||
date
|
||||
description
|
||||
}
|
||||
}
|
||||
}
|
||||
`;
|
||||
|
||||
export default PageTemplate;
|
@@ -1,47 +0,0 @@
|
||||
import React from 'react';
|
||||
import Helmet from 'react-helmet';
|
||||
import PageTemplateDetails from '../components/PageTemplateDetails';
|
||||
|
||||
class PageTemplate extends React.Component {
|
||||
render() {
|
||||
const siteMetadata = this.props.data.site.siteMetadata;
|
||||
const { title, subtitle } = siteMetadata;
|
||||
const page = this.props.data.markdownRemark;
|
||||
const { title: pageTitle, description: pageDescription } = page.frontmatter;
|
||||
const description = pageDescription !== null ? pageDescription : subtitle;
|
||||
|
||||
return (
|
||||
<div>
|
||||
<Helmet>
|
||||
<title>{`${pageTitle} - ${title}`}</title>
|
||||
<meta name="description" content={description} />
|
||||
</Helmet>
|
||||
<PageTemplateDetails
|
||||
siteMetadata={siteMetadata}
|
||||
page={page}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export default PageTemplate;
|
||||
|
||||
export const pageQuery = graphql`
|
||||
query PageBySlug($slug: String!) {
|
||||
site {
|
||||
siteMetadata {
|
||||
...sidebarFragment
|
||||
}
|
||||
}
|
||||
markdownRemark(fields: { slug: { eq: $slug } }) {
|
||||
id
|
||||
html
|
||||
frontmatter {
|
||||
title
|
||||
date
|
||||
description
|
||||
}
|
||||
}
|
||||
}
|
||||
`;
|
28
src/templates/page-template.test.js
Normal file
28
src/templates/page-template.test.js
Normal file
@@ -0,0 +1,28 @@
|
||||
import React from 'react';
|
||||
import renderer from 'react-test-renderer';
|
||||
import PageTemplate from './page-template';
|
||||
|
||||
describe('PageTemplate', () => {
|
||||
const props = {
|
||||
data: {
|
||||
markdownRemark: {
|
||||
html: '<p>test</p>',
|
||||
frontmatter: {
|
||||
title: 'test',
|
||||
description: 'test'
|
||||
}
|
||||
},
|
||||
site: {
|
||||
siteMetadata: {
|
||||
title: 'test',
|
||||
subtitle: 'test'
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
it('renders correctly', () => {
|
||||
const tree = renderer.create(<PageTemplate {...props} />).toJSON();
|
||||
expect(tree).toMatchSnapshot();
|
||||
});
|
||||
});
|
58
src/templates/post-template.js
Normal file
58
src/templates/post-template.js
Normal file
@@ -0,0 +1,58 @@
|
||||
import React from 'react';
|
||||
import { graphql } from 'gatsby';
|
||||
import Layout from '../components/Layout';
|
||||
import Post from '../components/Post';
|
||||
|
||||
const PostTemplate = ({ data }) => {
|
||||
const {
|
||||
title: siteTitle,
|
||||
subtitle: siteSubtitle
|
||||
} = data.site.siteMetadata;
|
||||
|
||||
const {
|
||||
title: postTitle,
|
||||
description: postDescription
|
||||
} = data.markdownRemark.frontmatter;
|
||||
|
||||
const metaDescription = postDescription !== null ? postDescription : siteSubtitle;
|
||||
|
||||
return (
|
||||
<Layout title={`${postTitle} - ${siteTitle}`} description={metaDescription}>
|
||||
<Post post={data.markdownRemark} />
|
||||
</Layout>
|
||||
);
|
||||
};
|
||||
|
||||
export const query = graphql`
|
||||
query PostBySlug($slug: String!) {
|
||||
site {
|
||||
siteMetadata {
|
||||
author {
|
||||
name
|
||||
contacts {
|
||||
twitter
|
||||
}
|
||||
}
|
||||
disqusShortname
|
||||
subtitle
|
||||
title
|
||||
url
|
||||
}
|
||||
}
|
||||
markdownRemark(fields: { slug: { eq: $slug } }) {
|
||||
id
|
||||
html
|
||||
fields {
|
||||
tagSlugs
|
||||
}
|
||||
frontmatter {
|
||||
date
|
||||
description
|
||||
tags
|
||||
title
|
||||
}
|
||||
}
|
||||
}
|
||||
`;
|
||||
|
||||
export default PostTemplate;
|
@@ -1,55 +0,0 @@
|
||||
import React from 'react';
|
||||
import Helmet from 'react-helmet';
|
||||
import PostTemplateDetails from '../components/PostTemplateDetails';
|
||||
|
||||
class PostTemplate extends React.Component {
|
||||
render() {
|
||||
const siteMetadata = this.props.data.site.siteMetadata;
|
||||
const { title, subtitle } = siteMetadata;
|
||||
const post = this.props.data.markdownRemark;
|
||||
const { title: postTitle, description: postDescription } = post.frontmatter;
|
||||
const description = postDescription !== null ? postDescription : subtitle;
|
||||
|
||||
return (
|
||||
<div>
|
||||
<Helmet>
|
||||
<title>{`${postTitle} - ${title}`}</title>
|
||||
<meta name="description" content={description} />
|
||||
</Helmet>
|
||||
<PostTemplateDetails siteMetadata={siteMetadata} post={post} />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export default PostTemplate;
|
||||
|
||||
export const pageQuery = graphql`
|
||||
query PostBySlug($slug: String!) {
|
||||
site {
|
||||
siteMetadata {
|
||||
title
|
||||
subtitle
|
||||
author {
|
||||
name
|
||||
twitter
|
||||
}
|
||||
disqusShortname
|
||||
url
|
||||
}
|
||||
}
|
||||
markdownRemark(fields: { slug: { eq: $slug } }) {
|
||||
id
|
||||
html
|
||||
fields {
|
||||
tagSlugs
|
||||
}
|
||||
frontmatter {
|
||||
title
|
||||
tags
|
||||
date
|
||||
description
|
||||
}
|
||||
}
|
||||
}
|
||||
`;
|
39
src/templates/post-template.test.js
Normal file
39
src/templates/post-template.test.js
Normal file
@@ -0,0 +1,39 @@
|
||||
import React from 'react';
|
||||
import renderer from 'react-test-renderer';
|
||||
import PostTemplate from './post-template';
|
||||
|
||||
describe('PostTemplate', () => {
|
||||
const props = {
|
||||
data: {
|
||||
site: {
|
||||
siteMetadata: {
|
||||
title: 'test',
|
||||
subtitle: 'test'
|
||||
}
|
||||
},
|
||||
markdownRemark: {
|
||||
html: '<p>test</p>',
|
||||
fields: {
|
||||
tagSlugs: [
|
||||
'/test_0',
|
||||
'/test_1'
|
||||
]
|
||||
},
|
||||
frontmatter: {
|
||||
date: '2016-09-01T23:46:37.121Z',
|
||||
description: 'test',
|
||||
title: 'test',
|
||||
tags: [
|
||||
'test_0',
|
||||
'test_1'
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
it('renders correctly', () => {
|
||||
const tree = renderer.create(<PostTemplate {...props} />).toJSON();
|
||||
expect(tree).toMatchSnapshot();
|
||||
});
|
||||
});
|
64
src/templates/tag-template.js
Normal file
64
src/templates/tag-template.js
Normal file
@@ -0,0 +1,64 @@
|
||||
import React from 'react';
|
||||
import { graphql } from 'gatsby';
|
||||
import Layout from '../components/Layout';
|
||||
import Sidebar from '../components/Sidebar';
|
||||
import Feed from '../components/Feed';
|
||||
import Page from '../components/Page';
|
||||
|
||||
const TagTemplate = ({ data, pageContext }) => {
|
||||
const {
|
||||
title: siteTitle,
|
||||
subtitle: siteSubtitle
|
||||
} = data.site.siteMetadata;
|
||||
|
||||
const {
|
||||
page,
|
||||
tag
|
||||
} = pageContext;
|
||||
|
||||
const { edges } = data.allMarkdownRemark;
|
||||
const pageTitle = page > 0 ? `All Posts tagged as "${tag}" - Page ${page} - ${siteTitle}` : `All Posts tagged as "${tag}" - ${siteTitle}`;
|
||||
|
||||
return (
|
||||
<Layout title={pageTitle} description={siteSubtitle}>
|
||||
<Sidebar />
|
||||
<Page title={tag}>
|
||||
<Feed edges={edges} />
|
||||
</Page>
|
||||
</Layout>
|
||||
);
|
||||
};
|
||||
|
||||
export const query = graphql`
|
||||
query TagPage($tag: String, $limit: Int!, $skip: Int!) {
|
||||
site {
|
||||
siteMetadata {
|
||||
title
|
||||
subtitle
|
||||
}
|
||||
}
|
||||
allMarkdownRemark(
|
||||
limit: $limit,
|
||||
skip: $skip,
|
||||
filter: { frontmatter: { tags: { in: [$tag] }, layout: { eq: "post" }, draft: { ne: true } } },
|
||||
sort: { order: DESC, fields: [frontmatter___date] }
|
||||
){
|
||||
edges {
|
||||
node {
|
||||
fields {
|
||||
slug
|
||||
categorySlug
|
||||
}
|
||||
frontmatter {
|
||||
title
|
||||
date
|
||||
category
|
||||
description
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
`;
|
||||
|
||||
export default TagTemplate;
|
@@ -1,51 +0,0 @@
|
||||
import React from 'react';
|
||||
import Helmet from 'react-helmet';
|
||||
import Sidebar from '../components/Sidebar';
|
||||
import TagTemplateDetails from '../components/TagTemplateDetails';
|
||||
|
||||
class TagTemplate extends React.Component {
|
||||
render() {
|
||||
const { title } = this.props.data.site.siteMetadata;
|
||||
const { tag } = this.props.pathContext;
|
||||
|
||||
return (
|
||||
<div>
|
||||
<Helmet title={`All Posts tagged as "${tag}" - ${title}`} />
|
||||
<Sidebar siteMetadata={this.props.data.site.siteMetadata} />
|
||||
<TagTemplateDetails posts={this.props.data.allMarkdownRemark.edges} tag={tag} />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export default TagTemplate;
|
||||
|
||||
export const pageQuery = graphql`
|
||||
query TagPage($tag: String) {
|
||||
site {
|
||||
siteMetadata {
|
||||
...sidebarFragment
|
||||
}
|
||||
}
|
||||
allMarkdownRemark(
|
||||
limit: 1000,
|
||||
filter: { frontmatter: { tags: { in: [$tag] }, layout: { eq: "post" }, draft: { ne: true } } },
|
||||
sort: { order: DESC, fields: [frontmatter___date] }
|
||||
){
|
||||
edges {
|
||||
node {
|
||||
fields {
|
||||
slug
|
||||
categorySlug
|
||||
}
|
||||
frontmatter {
|
||||
title
|
||||
date
|
||||
category
|
||||
description
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
`;
|
67
src/templates/tag-template.test.js
Normal file
67
src/templates/tag-template.test.js
Normal file
@@ -0,0 +1,67 @@
|
||||
import React from 'react';
|
||||
import renderer from 'react-test-renderer';
|
||||
import TagTemplate from './tag-template';
|
||||
|
||||
describe('TagTemplate', () => {
|
||||
const props = {
|
||||
data: {
|
||||
allMarkdownRemark: {
|
||||
group: [
|
||||
{
|
||||
fieldValue: 'test_0',
|
||||
totalCount: 1
|
||||
},
|
||||
{
|
||||
fieldValue: 'test_1',
|
||||
totalCount: 2
|
||||
}
|
||||
],
|
||||
edges: [
|
||||
{
|
||||
node: {
|
||||
fields: {
|
||||
slug: '/test_0',
|
||||
categorySlug: '/test'
|
||||
},
|
||||
frontmatter: {
|
||||
date: '2016-09-01T23:46:37.121Z',
|
||||
description: 'test_0',
|
||||
category: 'test',
|
||||
title: 'test_0'
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
node: {
|
||||
fields: {
|
||||
slug: '/test_1',
|
||||
categorySlug: '/test'
|
||||
},
|
||||
frontmatter: {
|
||||
date: '2016-09-01T23:46:37.121Z',
|
||||
description: 'test_1',
|
||||
category: 'test',
|
||||
title: 'test_1'
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
site: {
|
||||
siteMetadata: {
|
||||
title: 'test',
|
||||
subtitle: 'test'
|
||||
}
|
||||
}
|
||||
},
|
||||
pageContext: {
|
||||
tag: 'test',
|
||||
page: 1
|
||||
}
|
||||
};
|
||||
|
||||
it('renders correctly', () => {
|
||||
const tree = renderer.create(<TagTemplate {...props} />).toJSON();
|
||||
expect(tree).toMatchSnapshot();
|
||||
});
|
||||
});
|
52
src/templates/tags-list-template.js
Normal file
52
src/templates/tags-list-template.js
Normal file
@@ -0,0 +1,52 @@
|
||||
import React from 'react';
|
||||
import { Link, graphql } from 'gatsby';
|
||||
import kebabCase from 'lodash/kebabCase';
|
||||
import Layout from '../components/Layout';
|
||||
import Sidebar from '../components/Sidebar';
|
||||
import Page from '../components/Page';
|
||||
|
||||
const TagsListTemplate = ({ data }) => {
|
||||
const {
|
||||
title,
|
||||
subtitle
|
||||
} = data.site.siteMetadata;
|
||||
const { group } = data.allMarkdownRemark;
|
||||
|
||||
return (
|
||||
<Layout title={`Tags - ${title}`} description={subtitle}>
|
||||
<Sidebar />
|
||||
<Page title="Tags">
|
||||
<ul>
|
||||
{group.map((tag) => (
|
||||
<li key={tag.fieldValue}>
|
||||
<Link to={`/tags/${kebabCase(tag.fieldValue)}/`}>
|
||||
{tag.fieldValue} ({tag.totalCount})
|
||||
</Link>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</Page>
|
||||
</Layout>
|
||||
);
|
||||
};
|
||||
|
||||
export const query = graphql`
|
||||
query TagsListQuery {
|
||||
site {
|
||||
siteMetadata {
|
||||
title,
|
||||
subtitle
|
||||
}
|
||||
}
|
||||
allMarkdownRemark(
|
||||
filter: { frontmatter: { layout: { eq: "post" }, draft: { ne: true } } }
|
||||
) {
|
||||
group(field: frontmatter___tags) {
|
||||
fieldValue
|
||||
totalCount
|
||||
}
|
||||
}
|
||||
}
|
||||
`;
|
||||
|
||||
export default TagsListTemplate;
|
33
src/templates/tags-list-template.test.js
Normal file
33
src/templates/tags-list-template.test.js
Normal file
@@ -0,0 +1,33 @@
|
||||
import React from 'react';
|
||||
import renderer from 'react-test-renderer';
|
||||
import TagsListTemplate from './tags-list-template';
|
||||
|
||||
describe('TagsListTemplate', () => {
|
||||
const props = {
|
||||
data: {
|
||||
allMarkdownRemark: {
|
||||
group: [
|
||||
{
|
||||
fieldValue: 'test_0',
|
||||
totalCount: 1
|
||||
},
|
||||
{
|
||||
fieldValue: 'test_1',
|
||||
totalCount: 2
|
||||
}
|
||||
]
|
||||
},
|
||||
site: {
|
||||
siteMetadata: {
|
||||
title: 'test',
|
||||
subtitle: 'test'
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
it('renders correctly', () => {
|
||||
const tree = renderer.create(<TagsListTemplate {...props} />).toJSON();
|
||||
expect(tree).toMatchSnapshot();
|
||||
});
|
||||
});
|
Reference in New Issue
Block a user