@activelylearn/material-ui
Version:
Material-UI's workspace package
114 lines (100 loc) • 4.68 kB
JavaScript
import React from 'react';
import { assert } from 'chai';
import { createShallow, getClasses } from '../test-utils';
import CircularProgress from './CircularProgress';
describe('<CircularProgress />', () => {
let shallow;
let classes;
before(() => {
shallow = createShallow({ dive: true });
classes = getClasses(<CircularProgress />);
});
it('should render a div with the root class', () => {
const wrapper = shallow(<CircularProgress />);
assert.strictEqual(wrapper.name(), 'div');
});
it('should render with the primary color by default', () => {
const wrapper = shallow(<CircularProgress />);
assert.strictEqual(wrapper.hasClass(classes.colorPrimary), true);
});
it('should render with the primary color', () => {
const wrapper = shallow(<CircularProgress color="primary" />);
assert.strictEqual(wrapper.hasClass(classes.colorPrimary), true);
});
it('should render with the secondary color', () => {
const wrapper = shallow(<CircularProgress color="secondary" />);
assert.strictEqual(wrapper.hasClass(classes.colorSecondary), true);
});
it('should render with the user and root classes', () => {
const wrapper = shallow(<CircularProgress className="woofCircularProgress" />);
assert.strictEqual(wrapper.hasClass('woofCircularProgress'), true);
assert.strictEqual(wrapper.hasClass(classes.root), true);
assert.strictEqual(wrapper.props().role, 'progressbar');
});
it('should contain an SVG with the svg class, and a circle with the circle class', () => {
const wrapper = shallow(<CircularProgress />);
const svg = wrapper.childAt(0);
assert.strictEqual(svg.name(), 'svg');
assert.strictEqual(wrapper.hasClass(classes.indeterminate), true);
assert.strictEqual(svg.childAt(0).name(), 'circle', 'should be a circle');
assert.strictEqual(
svg.childAt(0).hasClass(classes.circle),
true,
'should have the circle class',
);
});
it('should render intermediate variant by default', () => {
const wrapper = shallow(<CircularProgress />);
assert.strictEqual(wrapper.hasClass(classes.root), true);
const svg = wrapper.childAt(0);
assert.strictEqual(
svg.childAt(0).hasClass(classes.circleIndeterminate),
true,
'should have the circleIndeterminate class',
);
});
it('should render with a different size', () => {
const wrapper = shallow(<CircularProgress size={60} />);
assert.strictEqual(wrapper.hasClass(classes.root), true);
assert.strictEqual(wrapper.props().style.width, 60, 'should have width correctly set');
assert.strictEqual(wrapper.props().style.height, 60, 'should have width correctly set');
const svg = wrapper.childAt(0);
assert.strictEqual(svg.name(), 'svg');
assert.strictEqual(svg.childAt(0).name(), 'circle');
assert.strictEqual(svg.childAt(0).props().cx, 25, 'should have cx correctly set');
assert.strictEqual(svg.childAt(0).props().cy, 25, 'should have cx correctly set');
});
describe('prop: variant="static', () => {
it('should set strokeDasharray of circle', () => {
const wrapper = shallow(<CircularProgress variant="static" value={70} />);
assert.strictEqual(wrapper.hasClass(classes.root), true);
const svg = wrapper.childAt(0);
const style = svg.childAt(0).props().style;
assert.strictEqual(style.strokeDasharray, '125.664', 'should have strokeDasharray set');
assert.strictEqual(style.strokeDashoffset, '37.699px', 'should have strokeDashoffset set');
assert.strictEqual(wrapper.props()['aria-valuenow'], 70);
});
});
describe('prop: variant="determinate"', () => {
it('should render with determinate classes', () => {
const wrapper = shallow(<CircularProgress variant="determinate" />);
assert.strictEqual(wrapper.hasClass(classes.root), true);
const svg = wrapper.childAt(0);
assert.strictEqual(svg.name(), 'svg');
assert.strictEqual(
svg.hasClass(classes.svgIndeterminate),
false,
'should not have the svgIndeterminate class',
);
});
it('should set strokeDasharray of circle', () => {
const wrapper = shallow(<CircularProgress variant="determinate" value={70} />);
assert.strictEqual(wrapper.hasClass(classes.root), true);
const svg = wrapper.childAt(0);
const style = svg.childAt(0).props().style;
assert.strictEqual(style.strokeDasharray, '125.664', 'should have strokeDasharray set');
assert.strictEqual(style.strokeDashoffset, '11.310px', 'should have strokeDashoffset set');
assert.strictEqual(wrapper.props()['aria-valuenow'], 70);
});
});
});