Removed "Subscription" member filter options when Stripe is not connected

no issue

- updated the filtering of available filter properties to remove any with the "Subscription" group when Stripe is not connected
This commit is contained in:
Kevin Ansfield 2022-02-24 11:24:39 +00:00
parent 8353a7b2dc
commit 4b137105ba
2 changed files with 35 additions and 2 deletions

View File

@ -126,6 +126,7 @@ class Filter {
export default class MembersFilter extends Component {
@service feature;
@service session;
@service settings;
@tracked filters = A([
new Filter({
@ -142,8 +143,17 @@ export default class MembersFilter extends Component {
nextFilterId = 1;
get availableFilterProperties() {
let availableFilters = FILTER_PROPERTIES;
// exclude any filters that are behind disabled feature flags
return FILTER_PROPERTIES.filter(prop => !prop.feature || this.feature[prop.feature]);
availableFilters = availableFilters.filter(prop => !prop.feature || this.feature[prop.feature]);
// exclude subscription filters if Stripe isn't connected
if (!this.settings.get('stripeConnectAccountId')) {
availableFilters = availableFilters.reject(prop => prop.group === 'Subscription');
}
return availableFilters;
}
get totalFilters() {

View File

@ -17,9 +17,11 @@ describe('Acceptance: Members filtering', function () {
beforeEach(async function () {
this.server.loadFixtures('configs');
enableLabsFlag(this.server, 'membersLastSeenFilter');
// enable stripe by default
this.server.create('setting', {group: 'members', key: 'stripe_connect_account_id', value: 'stripe_connected'});
let role = this.server.create('role', {name: 'Owner'});
this.server.create('user', {roles: [role]});
@ -678,6 +680,27 @@ describe('Acceptance: Members filtering', function () {
expect(findAll('[data-test-list="members-list-item"]').length, '# of members after email_count filter')
.to.equal(3);
});
it('hides paid filters when stripe isn\'t connected', async function () {
// disconnect stripe
this.server.db.settings.update({key: 'stripe_connect_account_id'}, {value: null});
this.server.createList('member', 10);
await visit('/members');
await click('[data-test-button="members-filter-actions"]');
expect(
find('[data-test-members-filter="0"] [data-test-select="members-filter"] optgroup[label="Subscription"]'),
'Subscription option group doesn\'t exist'
).to.not.exist;
const filterOptions = findAll('[data-test-members-filter="0"] [data-test-select="members-filter"] option')
.map(option => option.value);
expect(filterOptions).to.not.include('status');
expect(filterOptions).to.not.include('subscriptions.plan_interval');
expect(filterOptions).to.not.include('subscriptions.status');
});
});
describe('search', function () {