-
Notifications
You must be signed in to change notification settings - Fork 13.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[feat] Feature flag system via config (#5960)
* [feat] Feature flag system via config Adding a feature flag system that is driven by superset_config.py. This change includes: - Server side changes to specify a dedicated FEATURE_FLAG dictionary for listing feature flags. E.g. ``` FEATURE_FLAGS = { 'SCOPED_FILTER': true } ``` - Pass the new feature flags to client via bootstrap-data - Client side changes to inject feature flags into the redux state tree for dashboard, explore view and SqlLab - Client side refactor/clean up so the feature flags can be properly tested. Also avoid modifying incoming bootstrap data when creating initial state for the redux state tree - Re-enable tests that were previously disabled for ExploreViewContainer * Fix lint errors. * Remove the partial attempt to get reference to src working in tests (so we don't have to write ../../../src and such in tests). This will in a separate PR.
- Loading branch information
1 parent
414a4bf
commit 604524b
Showing
17 changed files
with
246 additions
and
113 deletions.
There are no files selected for viewing
39 changes: 39 additions & 0 deletions
39
superset/assets/spec/javascripts/dashboard/containers/Dashboard_spec.jsx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
import React from 'react'; | ||
import configureStore from 'redux-mock-store'; | ||
import thunk from 'redux-thunk'; | ||
import { shallow } from 'enzyme'; | ||
import { expect } from 'chai'; | ||
|
||
import Dashboard from '../../../../src/dashboard/containers/Dashboard'; | ||
import getInitialState from '../../../../src/dashboard/reducers/getInitialState'; | ||
|
||
describe('Dashboard Container', () => { | ||
const middlewares = [thunk]; | ||
const mockStore = configureStore(middlewares); | ||
let store; | ||
let wrapper; | ||
|
||
before(() => { | ||
const bootstrapData = { | ||
dashboard_data: { | ||
slices: [], | ||
metadata: {}, | ||
}, | ||
common: { | ||
feature_flags: { | ||
FOO_BAR: true, | ||
}, | ||
conf: {}, | ||
}, | ||
}; | ||
store = mockStore(getInitialState(bootstrapData), {}); | ||
}); | ||
|
||
beforeEach(() => { | ||
wrapper = shallow(<Dashboard />, { context: { store } }); | ||
}); | ||
|
||
it('should set feature flags', () => { | ||
expect(wrapper.prop('isFeatureEnabled')('FOO_BAR')).to.equal(true); | ||
}); | ||
}); |
38 changes: 0 additions & 38 deletions
38
superset/assets/spec/javascripts/explore/components/ExploreViewContainer_spec.js
This file was deleted.
Oops, something went wrong.
69 changes: 69 additions & 0 deletions
69
superset/assets/spec/javascripts/explore/components/ExploreViewContainer_spec.jsx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
import React from 'react'; | ||
import configureStore from 'redux-mock-store'; | ||
import thunk from 'redux-thunk'; | ||
import { expect } from 'chai'; | ||
import { shallow } from 'enzyme'; | ||
|
||
import getInitialState from '../../../../src/explore/reducers/getInitialState'; | ||
import ExploreViewContainer | ||
from '../../../../src/explore/components/ExploreViewContainer'; | ||
import QueryAndSaveBtns | ||
from '../../../../src/explore/components/QueryAndSaveBtns'; | ||
import ControlPanelsContainer | ||
from '../../../../src/explore/components/ControlPanelsContainer'; | ||
import ChartContainer | ||
from '../../../../src/explore/components/ExploreChartPanel'; | ||
|
||
describe('ExploreViewContainer', () => { | ||
const middlewares = [thunk]; | ||
const mockStore = configureStore(middlewares); | ||
let store; | ||
let wrapper; | ||
|
||
before(() => { | ||
const bootstrapData = { | ||
common: { | ||
feature_flags: { | ||
FOO_BAR: true, | ||
}, | ||
conf: {}, | ||
}, | ||
datasource: { | ||
columns: [], | ||
}, | ||
form_data: { | ||
datasource: {}, | ||
}, | ||
}; | ||
store = mockStore(getInitialState(bootstrapData), {}); | ||
}); | ||
|
||
beforeEach(() => { | ||
wrapper = shallow(<ExploreViewContainer />, { | ||
context: { store }, | ||
disableLifecycleMethods: true, | ||
}); | ||
}); | ||
|
||
it('should set feature flags', () => { | ||
expect(wrapper.prop('isFeatureEnabled')('FOO_BAR')).to.equal(true); | ||
}); | ||
|
||
it('renders', () => { | ||
expect( | ||
React.isValidElement(<ExploreViewContainer />), | ||
).to.equal(true); | ||
}); | ||
|
||
it('renders QueryAndSaveButtons', () => { | ||
expect(wrapper.dive().find(QueryAndSaveBtns)).to.have.length(1); | ||
}); | ||
|
||
it('renders ControlPanelsContainer', () => { | ||
expect(wrapper.dive().find(ControlPanelsContainer)).to.have.length(1); | ||
}); | ||
|
||
it('renders ChartContainer', () => { | ||
expect(wrapper.dive().find(ChartContainer)).to.have.length(1); | ||
}); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.