Allowing non-connected views and components; Adding tests

This commit is contained in:
James Barnsley
2019-03-20 16:51:09 +13:00
parent b9d6d99d4d
commit 269bf005ed
16 changed files with 1421 additions and 693 deletions

68
tests/components/Dater.test.js Executable file
View File

@ -0,0 +1,68 @@
import React from 'react';
import { BrowserRouter } from "react-router-dom";
// Testing-specific
import { shallow, mount, render } from 'enzyme';
// Test subjects
import Dater from '../../src/js/components/Dater';
describe('<Dater />', () => {
it('should handle milliseconds', () => {
const dom = shallow(<Dater type="length" data={30000} />);
expect(dom.text()).toEqual('0:30');
});
it('should handle date (yyyy-mm-dd)', () => {
const dom = shallow(<Dater type="date" data="2015-10-23" />);
expect(dom.text()).toEqual("23/10/2015");
});
it('should handle date (mm/dd/yyyy)', () => {
const dom = shallow(<Dater type="date" data="10/23/2015" />);
expect(dom.text()).toEqual("23/10/2015");
});
it('should handle ago (days)', () => {
var date = new Date();
date.setDate( date.getDate() - 3 );
const dom = shallow(<Dater type="ago" data={date} />);
expect(dom.text()).toEqual('3 days');
});
it('should handle ago (hours)', () => {
var date = new Date();
date.setTime( date.getTime() - 3 * 3600000 );
const dom = shallow(<Dater type="ago" data={date} />);
expect(dom.text()).toEqual('3 hours');
});
it('should handle ago (minutes)', () => {
var date = new Date();
date.setTime( date.getTime() - 3 * 60000 );
const dom = shallow(<Dater type="ago" data={date} />);
expect(dom.text()).toEqual('3 minutes');
});
it('should handle total time', () => {
var data = {
tracks: [
{
duration: 5 * 60000
},
{
duration: 5 * 60000
},
{
duration: 5 * 60000
}
]
}
const dom = shallow(<Dater type="total-time" data={data} />);
expect(dom.text()).toEqual('15 mins');
});
});

28
tests/components/Link.test.js Executable file
View File

@ -0,0 +1,28 @@
import React from 'react';
import { BrowserRouter } from "react-router-dom";
// Testing-specific
import { shallow, mount, render } from 'enzyme';
// Test subjects
import Link from '../../src/js/components/Link';
describe('<Link />', () => {
const dom = mount(
<BrowserRouter>
<Link to="test" className="test-classname">Link contents</Link>
</BrowserRouter>
);
it('should render a valid <a> tag', () => {
const a = dom.find('a');
expect(a.length).toBe(1);
expect(a.find('[href]').length).toBe(1);
expect(a.text()).toEqual('Link contents');
});
it('should handle className prop', () => {
expect(dom.find('a').hasClass('test-classname')).toBe(true);
});
});