mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-13 19:41:49 +00:00
Bug 1409836 - Fix setting filters prefs when filters are reset or cleared; r=bgrins.
We were getting the filter state after dispatching the action, which made all the filters to have an enabled state. Getting the state before dispatching fixes the issue. This patch enhance the Service mock in order to have a better idea of what is going on with prefs. This allow us to introduce some tests to make sure prefs are updated in reaction to given actions. MozReview-Commit-ID: Byay0TwF25I --HG-- extra : rebase_source : fd9e022c872783e2c6baa6ee0be5bf98f7eced78
This commit is contained in:
parent
10b5ab8130
commit
9bf7d76660
@ -44,7 +44,7 @@ function filtersClear() {
|
||||
type: FILTERS_CLEAR,
|
||||
});
|
||||
|
||||
const filterState = getAllFilters(getState());
|
||||
const filterState = getAllFilters(getState()).toJS();
|
||||
for (let filter in filterState) {
|
||||
if (filter !== FILTERS.TEXT) {
|
||||
Services.prefs.clearUserPref(PREFS.FILTER[filter.toUpperCase()]);
|
||||
@ -61,11 +61,13 @@ function filtersClear() {
|
||||
*/
|
||||
function defaultFiltersReset() {
|
||||
return (dispatch, getState) => {
|
||||
// Get the state before dispatching so the action does not alter prefs reset.
|
||||
const filterState = getAllFilters(getState());
|
||||
|
||||
dispatch({
|
||||
type: DEFAULT_FILTERS_RESET,
|
||||
});
|
||||
|
||||
const filterState = getAllFilters(getState());
|
||||
DEFAULT_FILTERS.forEach(filter => {
|
||||
if (filterState[filter] === false) {
|
||||
Services.prefs.clearUserPref(PREFS.FILTER[filter.toUpperCase()]);
|
||||
|
@ -17,12 +17,18 @@ const { getAllFilters } = require("devtools/client/webconsole/new-console-output
|
||||
const {
|
||||
MESSAGES_CLEAR,
|
||||
FILTERS,
|
||||
PREFS,
|
||||
} = require("devtools/client/webconsole/new-console-output/constants");
|
||||
|
||||
const { setupStore } = require("devtools/client/webconsole/new-console-output/test/helpers");
|
||||
const serviceContainer = require("devtools/client/webconsole/new-console-output/test/fixtures/serviceContainer");
|
||||
const ServicesMock = require("Services");
|
||||
|
||||
describe("FilterBar component:", () => {
|
||||
afterEach(() => {
|
||||
ServicesMock.prefs.testHelpers.clearPrefs();
|
||||
});
|
||||
|
||||
it("initial render", () => {
|
||||
const store = setupStore([]);
|
||||
|
||||
@ -190,11 +196,13 @@ describe("FilterBar component:", () => {
|
||||
const store = setupStore([]);
|
||||
|
||||
expect(getAllUi(store.getState()).filterBarVisible).toBe(false);
|
||||
expect(ServicesMock.prefs.getBoolPref(PREFS.UI.FILTER_BAR), false);
|
||||
|
||||
const wrapper = mount(Provider({store}, FilterBar({ serviceContainer })));
|
||||
wrapper.find(".devtools-filter-icon").simulate("click");
|
||||
|
||||
expect(getAllUi(store.getState()).filterBarVisible).toBe(true);
|
||||
expect(ServicesMock.prefs.getBoolPref(PREFS.UI.FILTER_BAR), true);
|
||||
|
||||
const secondaryBar = wrapper.find(".webconsole-filterbar-secondary");
|
||||
expect(secondaryBar.length).toBe(1);
|
||||
@ -250,10 +258,12 @@ describe("FilterBar component:", () => {
|
||||
const store = setupStore([]);
|
||||
|
||||
expect(getAllUi(store.getState()).persistLogs).toBe(false);
|
||||
expect(ServicesMock.prefs.getBoolPref(PREFS.UI.PERSIST), false);
|
||||
|
||||
const wrapper = mount(Provider({store}, FilterBar({ serviceContainer })));
|
||||
wrapper.find(".filter-checkbox input").simulate("change");
|
||||
|
||||
expect(getAllUi(store.getState()).persistLogs).toBe(true);
|
||||
expect(ServicesMock.prefs.getBoolPref(PREFS.UI.PERSIST), true);
|
||||
});
|
||||
});
|
||||
|
@ -3,28 +3,44 @@
|
||||
|
||||
"use strict";
|
||||
|
||||
const { PREFS } = require("devtools/client/webconsole/new-console-output/constants");
|
||||
const {
|
||||
DEFAULT_FILTERS_VALUES,
|
||||
FILTERS,
|
||||
PREFS
|
||||
} = require("devtools/client/webconsole/new-console-output/constants");
|
||||
|
||||
function getDefaultPrefs() {
|
||||
return Object.assign({
|
||||
"devtools.hud.loglimit": 1000,
|
||||
[PREFS.UI.FILTER_BAR]: false,
|
||||
[PREFS.UI.PERSIST]: false,
|
||||
}, Object.entries(PREFS.FILTER).reduce((res, [key, pref]) => {
|
||||
res[pref] = DEFAULT_FILTERS_VALUES[FILTERS[key]];
|
||||
return res;
|
||||
}, {}));
|
||||
}
|
||||
|
||||
let prefs = Object.assign({}, getDefaultPrefs());
|
||||
|
||||
module.exports = {
|
||||
prefs: {
|
||||
getIntPref: pref => {
|
||||
switch (pref) {
|
||||
case "devtools.hud.loglimit":
|
||||
return 1000;
|
||||
getIntPref: pref => prefs[pref],
|
||||
getBoolPref: pref => prefs[pref],
|
||||
setBoolPref: (pref, value) => {
|
||||
prefs[pref] = value;
|
||||
},
|
||||
clearUserPref: (pref) => {
|
||||
prefs[pref] = (getDefaultPrefs())[pref];
|
||||
},
|
||||
testHelpers: {
|
||||
getAllPrefs: () => prefs,
|
||||
getFiltersPrefs: () => Object.values(PREFS.FILTER).reduce((res, pref) => {
|
||||
res[pref] = prefs[pref];
|
||||
return res;
|
||||
}, {}),
|
||||
clearPrefs: () => {
|
||||
prefs = Object.assign({}, getDefaultPrefs());
|
||||
}
|
||||
return null;
|
||||
},
|
||||
getBoolPref: pref => {
|
||||
const falsey = [
|
||||
PREFS.FILTER.CSS,
|
||||
PREFS.FILTER.NET,
|
||||
PREFS.FILTER.NETXHR,
|
||||
PREFS.UI.FILTER_BAR,
|
||||
PREFS.UI.PERSIST,
|
||||
];
|
||||
return !falsey.includes(pref);
|
||||
},
|
||||
setBoolPref: () => {},
|
||||
clearUserPref: () => {},
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@ -11,9 +11,10 @@ const { ConsoleCommand } = require("devtools/client/webconsole/new-console-outpu
|
||||
const { getVisibleMessages } = require("devtools/client/webconsole/new-console-output/selectors/messages");
|
||||
const { getAllFilters } = require("devtools/client/webconsole/new-console-output/selectors/filters");
|
||||
const { setupStore } = require("devtools/client/webconsole/new-console-output/test/helpers");
|
||||
const { FILTERS } = require("devtools/client/webconsole/new-console-output/constants");
|
||||
const { FILTERS, PREFS } = require("devtools/client/webconsole/new-console-output/constants");
|
||||
const { stubPackets } = require("devtools/client/webconsole/new-console-output/test/fixtures/stubs/index");
|
||||
const { stubPreparedMessages } = require("devtools/client/webconsole/new-console-output/test/fixtures/stubs/index");
|
||||
const ServicesMock = require("Services");
|
||||
|
||||
describe("Filtering", () => {
|
||||
let store;
|
||||
@ -215,31 +216,52 @@ describe("Clear filters", () => {
|
||||
let filters = getAllFilters(store.getState());
|
||||
expect(filters.toJS()).toEqual({
|
||||
// default
|
||||
"warn": true,
|
||||
"log": true,
|
||||
"info": true,
|
||||
"debug": true,
|
||||
"css": true,
|
||||
[FILTERS.WARN]: true,
|
||||
[FILTERS.LOG]: true,
|
||||
[FILTERS.INFO]: true,
|
||||
[FILTERS.DEBUG]: true,
|
||||
// changed
|
||||
"error": false,
|
||||
"net": true,
|
||||
"netxhr": true,
|
||||
"text": "foobar",
|
||||
[FILTERS.ERROR]: false,
|
||||
[FILTERS.CSS]: true,
|
||||
[FILTERS.NET]: true,
|
||||
[FILTERS.NETXHR]: true,
|
||||
[FILTERS.TEXT]: "foobar",
|
||||
});
|
||||
expect(ServicesMock.prefs.testHelpers.getFiltersPrefs()).toEqual({
|
||||
[PREFS.FILTER.WARN]: true,
|
||||
[PREFS.FILTER.LOG]: true,
|
||||
[PREFS.FILTER.INFO]: true,
|
||||
[PREFS.FILTER.DEBUG]: true,
|
||||
[PREFS.FILTER.ERROR]: false,
|
||||
[PREFS.FILTER.CSS]: true,
|
||||
[PREFS.FILTER.NET]: true,
|
||||
[PREFS.FILTER.NETXHR]: true,
|
||||
});
|
||||
|
||||
store.dispatch(actions.filtersClear());
|
||||
|
||||
filters = getAllFilters(store.getState());
|
||||
expect(filters.toJS()).toEqual({
|
||||
"css": false,
|
||||
"debug": true,
|
||||
"error": true,
|
||||
"info": true,
|
||||
"log": true,
|
||||
"net": false,
|
||||
"netxhr": false,
|
||||
"warn": true,
|
||||
"text": "",
|
||||
[FILTERS.CSS]: false,
|
||||
[FILTERS.DEBUG]: true,
|
||||
[FILTERS.ERROR]: true,
|
||||
[FILTERS.INFO]: true,
|
||||
[FILTERS.LOG]: true,
|
||||
[FILTERS.NET]: false,
|
||||
[FILTERS.NETXHR]: false,
|
||||
[FILTERS.WARN]: true,
|
||||
[FILTERS.TEXT]: "",
|
||||
});
|
||||
|
||||
expect(ServicesMock.prefs.testHelpers.getFiltersPrefs()).toEqual({
|
||||
[PREFS.FILTER.CSS]: false,
|
||||
[PREFS.FILTER.DEBUG]: true,
|
||||
[PREFS.FILTER.ERROR]: true,
|
||||
[PREFS.FILTER.INFO]: true,
|
||||
[PREFS.FILTER.LOG]: true,
|
||||
[PREFS.FILTER.NET]: false,
|
||||
[PREFS.FILTER.NETXHR]: false,
|
||||
[PREFS.FILTER.WARN]: true,
|
||||
});
|
||||
});
|
||||
});
|
||||
@ -259,16 +281,27 @@ describe("Resets filters", () => {
|
||||
let filters = getAllFilters(store.getState());
|
||||
expect(filters.toJS()).toEqual({
|
||||
// default
|
||||
"warn": true,
|
||||
"info": true,
|
||||
"debug": true,
|
||||
[FILTERS.WARN]: true,
|
||||
[FILTERS.INFO]: true,
|
||||
[FILTERS.DEBUG]: true,
|
||||
// changed
|
||||
"error": false,
|
||||
"log": false,
|
||||
"css": true,
|
||||
"net": true,
|
||||
"netxhr": true,
|
||||
"text": "foobar",
|
||||
[FILTERS.ERROR]: false,
|
||||
[FILTERS.LOG]: false,
|
||||
[FILTERS.CSS]: true,
|
||||
[FILTERS.NET]: true,
|
||||
[FILTERS.NETXHR]: true,
|
||||
[FILTERS.TEXT]: "foobar",
|
||||
});
|
||||
|
||||
expect(ServicesMock.prefs.testHelpers.getFiltersPrefs()).toEqual({
|
||||
[PREFS.FILTER.WARN]: true,
|
||||
[PREFS.FILTER.INFO]: true,
|
||||
[PREFS.FILTER.DEBUG]: true,
|
||||
[PREFS.FILTER.ERROR]: false,
|
||||
[PREFS.FILTER.LOG]: false,
|
||||
[PREFS.FILTER.CSS]: true,
|
||||
[PREFS.FILTER.NET]: true,
|
||||
[PREFS.FILTER.NETXHR]: true,
|
||||
});
|
||||
|
||||
store.dispatch(actions.defaultFiltersReset());
|
||||
@ -276,16 +309,27 @@ describe("Resets filters", () => {
|
||||
filters = getAllFilters(store.getState());
|
||||
expect(filters.toJS()).toEqual({
|
||||
// default
|
||||
"error": true,
|
||||
"warn": true,
|
||||
"log": true,
|
||||
"info": true,
|
||||
"debug": true,
|
||||
"text": "",
|
||||
[FILTERS.ERROR]: true,
|
||||
[FILTERS.WARN]: true,
|
||||
[FILTERS.LOG]: true,
|
||||
[FILTERS.INFO]: true,
|
||||
[FILTERS.DEBUG]: true,
|
||||
[FILTERS.TEXT]: "",
|
||||
// non-default filters weren't changed
|
||||
"css": true,
|
||||
"net": true,
|
||||
"netxhr": true,
|
||||
[FILTERS.CSS]: true,
|
||||
[FILTERS.NET]: true,
|
||||
[FILTERS.NETXHR]: true,
|
||||
});
|
||||
|
||||
expect(ServicesMock.prefs.testHelpers.getFiltersPrefs()).toEqual({
|
||||
[PREFS.FILTER.ERROR]: true,
|
||||
[PREFS.FILTER.WARN]: true,
|
||||
[PREFS.FILTER.LOG]: true,
|
||||
[PREFS.FILTER.INFO]: true,
|
||||
[PREFS.FILTER.DEBUG]: true,
|
||||
[PREFS.FILTER.CSS]: true,
|
||||
[PREFS.FILTER.NET]: true,
|
||||
[PREFS.FILTER.NETXHR]: true,
|
||||
});
|
||||
});
|
||||
});
|
||||
|
Loading…
x
Reference in New Issue
Block a user