Avoid fetch fav dashboard stat not logged in (#8527)

* Avoid fetch fav dashboard stat not logged in

* Fix old Header tests and add a new one

* Add userId to other Header tests to be consistent

* Format code to make 'prettier' tests pass
This commit is contained in:
aspedrosa 2020-01-29 23:45:20 +00:00 committed by GitHub
parent fd9a713c7e
commit 5f499b9545
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 75 additions and 12 deletions

View File

@ -31,7 +31,12 @@ describe('Header', () => {
const props = {
addSuccessToast: () => {},
addDangerToast: () => {},
dashboardInfo: { id: 1, dash_edit_perm: true, dash_save_perm: true },
dashboardInfo: {
id: 1,
dash_edit_perm: true,
dash_save_perm: true,
userId: 1,
},
dashboardTitle: 'title',
charts: {},
layout: {},
@ -74,7 +79,12 @@ describe('Header', () => {
describe('read-only-user', () => {
const overrideProps = {
dashboardInfo: { id: 1, dash_edit_perm: false, dash_save_perm: false },
dashboardInfo: {
id: 1,
dash_edit_perm: false,
dash_save_perm: false,
userId: 1,
},
};
it('should render the EditableTitle', () => {
@ -111,7 +121,12 @@ describe('Header', () => {
describe('write-user', () => {
const overrideProps = {
editMode: false,
dashboardInfo: { id: 1, dash_edit_perm: true, dash_save_perm: true },
dashboardInfo: {
id: 1,
dash_edit_perm: true,
dash_save_perm: true,
userId: 1,
},
};
it('should render the EditableTitle', () => {
@ -148,7 +163,12 @@ describe('Header', () => {
describe('write-user-with-edit-mode', () => {
const overrideProps = {
editMode: true,
dashboardInfo: { id: 1, dash_edit_perm: true, dash_save_perm: true },
dashboardInfo: {
id: 1,
dash_edit_perm: true,
dash_save_perm: true,
userId: 1,
},
};
it('should render the EditableTitle', () => {
@ -181,4 +201,45 @@ describe('Header', () => {
expect(wrapper.find(UndoRedoKeylisteners)).toHaveLength(1);
});
});
describe('logged-out-user', () => {
const overrideProps = {
dashboardInfo: {
id: 1,
dash_edit_perm: false,
dash_save_perm: false,
userId: null,
},
};
it('should render the EditableTitle', () => {
const wrapper = setup(overrideProps);
expect(wrapper.find(EditableTitle)).toHaveLength(1);
});
it('should render the PublishedStatus', () => {
const wrapper = setup(overrideProps);
expect(wrapper.find(PublishedStatus)).toHaveLength(1);
});
it('should not render the FaveStar', () => {
const wrapper = setup(overrideProps);
expect(wrapper.find(FaveStar)).toHaveLength(0);
});
it('should render the HeaderActionsDropdown', () => {
const wrapper = setup(overrideProps);
expect(wrapper.find(HeaderActionsDropdown)).toHaveLength(1);
});
it('should render one Button', () => {
const wrapper = setup(overrideProps);
expect(wrapper.find(Button)).toHaveLength(1);
});
it('should not set up undo/redo', () => {
const wrapper = setup(overrideProps);
expect(wrapper.find(UndoRedoKeylisteners)).toHaveLength(0);
});
});
});

View File

@ -317,14 +317,16 @@ class Header extends React.PureComponent {
canSave={userCanSaveAs}
/>
</span>
<span className="favstar">
<FaveStar
itemId={dashboardInfo.id}
fetchFaveStar={this.props.fetchFaveStar}
saveFaveStar={this.props.saveFaveStar}
isStarred={this.props.isStarred}
/>
</span>
{dashboardInfo.userId && (
<span className="favstar">
<FaveStar
itemId={dashboardInfo.id}
fetchFaveStar={this.props.fetchFaveStar}
saveFaveStar={this.props.saveFaveStar}
isStarred={this.props.isStarred}
/>
</span>
)}
</div>
<div className="button-container">