Skip to content

Commit

Permalink
Post Status: Add component tests
Browse files Browse the repository at this point in the history
  • Loading branch information
mattm committed Sep 19, 2016
1 parent 2c804d6 commit 88c368c
Show file tree
Hide file tree
Showing 2 changed files with 93 additions and 1 deletion.
4 changes: 3 additions & 1 deletion client/blocks/post-status/index.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import { localize } from 'i18n-calypso';
import Gridicon from 'components/gridicon';
import { getNormalizedPost } from 'state/posts/selectors';

function PostStatus( { translate, post } ) {
export function PostStatus( { translate, post } ) {
if ( ! post ) {
return null;
}
Expand Down Expand Up @@ -56,6 +56,8 @@ function PostStatus( { translate, post } ) {
);
}

PostStatus.displayName = 'PostStatus';

PostStatus.propTypes = {
globalId: PropTypes.string,
translate: PropTypes.func,
Expand Down
90 changes: 90 additions & 0 deletions client/blocks/post-status/test/index.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
/**
* External dependencies
*/
import React from 'react';
import { expect } from 'chai';
import { shallow } from 'enzyme';
import identity from 'lodash/identity';
import Gridicon from 'components/gridicon';

describe( 'PostStatus', ( ) => {
let PostStatus;

before( ( ) => {
PostStatus = require( '..' ).PostStatus;
} );

context( 'no post', ( ) => {
it( 'should be empty', ( ) => {
const PostStatusComponent = ( <PostStatus translate={ identity } /> );
const wrapper = shallow( PostStatusComponent );

expect( wrapper ).to.be.empty;
} );
} );

context( 'post', ( ) => {
context( 'sticky', ( ) => {
it( 'should render the primary components', ( ) => {
const PostStatusComponent = ( <PostStatus post={ { sticky: true } } translate={ identity } /> );
const wrapper = shallow( PostStatusComponent );

expect( wrapper ).to.have.descendants( 'span' );
expect( wrapper ).to.have.className( 'is-sticky' );
expect( wrapper.childAt( 0 ).is( Gridicon ) ).to.be.true;
expect( wrapper.childAt( 0 ) ).to.have.prop( 'icon', 'bookmark-outline' );
expect( wrapper.childAt( 1 ) ).to.have.tagName( 'span' ).to.have.text( 'Sticky' );
} );
} );

context( 'not sticky', ( ) => {
context( 'pending', ( ) => {
it( 'should render the primary components', ( ) => {
const PostStatusComponent = ( <PostStatus post={ { sticky: false, status: 'pending' } } translate={ identity } /> );
const wrapper = shallow( PostStatusComponent );

expect( wrapper ).to.have.descendants( 'span' );
expect( wrapper ).to.have.className( 'is-pending' );
expect( wrapper.childAt( 0 ).is( Gridicon ) ).to.be.true;
expect( wrapper.childAt( 0 ) ).to.have.prop( 'icon', 'aside' );
expect( wrapper.childAt( 1 ) ).to.have.tagName( 'span' ).to.have.text( 'Pending Review' );
} );
} );

context( 'future', ( ) => {
it( 'should render the primary components', ( ) => {
const PostStatusComponent = ( <PostStatus post={ { sticky: false, status: 'future' } } translate={ identity } /> );
const wrapper = shallow( PostStatusComponent );

expect( wrapper ).to.have.descendants( 'span' );
expect( wrapper ).to.have.className( 'is-scheduled' );
expect( wrapper.childAt( 0 ).is( Gridicon ) ).to.be.true;
expect( wrapper.childAt( 0 ) ).to.have.prop( 'icon', 'calendar' );
expect( wrapper.childAt( 1 ) ).to.have.tagName( 'span' ).to.have.text( 'Scheduled' );
} );
} );

context( 'trash', ( ) => {
it( 'should render the primary components', ( ) => {
const PostStatusComponent = ( <PostStatus post={ { sticky: false, status: 'trash' } } translate={ identity } /> );
const wrapper = shallow( PostStatusComponent );

expect( wrapper ).to.have.descendants( 'span' );
expect( wrapper ).to.have.className( 'is-trash' );
expect( wrapper.childAt( 0 ).is( Gridicon ) ).to.be.true;
expect( wrapper.childAt( 0 ) ).to.have.prop( 'icon', 'trash' );
expect( wrapper.childAt( 1 ) ).to.have.tagName( 'span' ).to.have.text( 'Trashed' );
} );
} );

context( 'unhandled status', ( ) => {
it( 'should be empty', ( ) => {
const PostStatusComponent = ( <PostStatus post={ { sticky: false, status: 'wow' } } translate={ identity } /> );
const wrapper = shallow( PostStatusComponent );

expect( wrapper ).to.be.empty;
} );
} );
} );
} );
} );

0 comments on commit 88c368c

Please sign in to comment.