mirror of
https://github.com/Unleash/unleash.git
synced 2025-08-23 13:46:45 +02:00
Some tweaks to favorites (#2563)
This is follow up PR to https://github.com/Unleash/unleash/pull/2550, which addresses the issues that came up from reviews.
This commit is contained in:
parent
9ac6b945be
commit
0d58371f11
@ -259,14 +259,16 @@ class FeatureStrategiesStore implements IFeatureStrategiesStore {
|
|||||||
|
|
||||||
let selectColumns = ['features_view.*'];
|
let selectColumns = ['features_view.*'];
|
||||||
if (userId && this.flagResolver.isEnabled('favorites')) {
|
if (userId && this.flagResolver.isEnabled('favorites')) {
|
||||||
query = query.leftJoin(`favorite_features as ff`, function () {
|
query = query.leftJoin(`favorite_features`, function () {
|
||||||
this.on('ff.feature', 'features_view.name').andOnVal(
|
this.on(
|
||||||
'ff.user_id',
|
'favorite_features.feature',
|
||||||
'=',
|
'features_view.name',
|
||||||
userId,
|
).andOnVal('favorite_features.user_id', '=', userId);
|
||||||
);
|
|
||||||
});
|
});
|
||||||
selectColumns = [...selectColumns, 'ff.feature as favorite'];
|
selectColumns = [
|
||||||
|
...selectColumns,
|
||||||
|
'favorite_features.feature as favorite',
|
||||||
|
];
|
||||||
}
|
}
|
||||||
const rows = await query.select(selectColumns);
|
const rows = await query.select(selectColumns);
|
||||||
stopTimer();
|
stopTimer();
|
||||||
|
@ -20,8 +20,6 @@ const createFeature = async (featureName: string) => {
|
|||||||
})
|
})
|
||||||
.set('Content-Type', 'application/json')
|
.set('Content-Type', 'application/json')
|
||||||
.expect(201);
|
.expect(201);
|
||||||
|
|
||||||
// await projectService.addEnvironmentToProject('default', environment);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const loginRegularUser = () =>
|
const loginRegularUser = () =>
|
||||||
@ -39,6 +37,20 @@ const createUserEditorAccess = async (name, email) => {
|
|||||||
return user;
|
return user;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const favoriteFeature = async (featureName: string) => {
|
||||||
|
await app.request
|
||||||
|
.post(`/api/admin/projects/default/features/${featureName}/favorites`)
|
||||||
|
.set('Content-Type', 'application/json')
|
||||||
|
.expect(200);
|
||||||
|
};
|
||||||
|
|
||||||
|
const unfavoriteFeature = async (featureName: string) => {
|
||||||
|
await app.request
|
||||||
|
.delete(`/api/admin/projects/default/features/${featureName}/favorites`)
|
||||||
|
.set('Content-Type', 'application/json')
|
||||||
|
.expect(200);
|
||||||
|
};
|
||||||
|
|
||||||
beforeAll(async () => {
|
beforeAll(async () => {
|
||||||
db = await dbInit('favorites_api_serial', getLogger);
|
db = await dbInit('favorites_api_serial', getLogger);
|
||||||
app = await setupAppWithAuth(db.stores);
|
app = await setupAppWithAuth(db.stores);
|
||||||
@ -67,14 +79,10 @@ beforeEach(async () => {
|
|||||||
await loginRegularUser();
|
await loginRegularUser();
|
||||||
});
|
});
|
||||||
|
|
||||||
test('should have favorites true in project endpoint', async () => {
|
test('should be favorited in project endpoint', async () => {
|
||||||
const featureName = 'test-feature';
|
const featureName = 'test-feature';
|
||||||
await createFeature(featureName);
|
await createFeature(featureName);
|
||||||
|
await favoriteFeature(featureName);
|
||||||
await app.request
|
|
||||||
.post(`/api/admin/projects/default/features/${featureName}/favorites`)
|
|
||||||
.set('Content-Type', 'application/json')
|
|
||||||
.expect(200);
|
|
||||||
|
|
||||||
const { body } = await app.request
|
const { body } = await app.request
|
||||||
.get(`/api/admin/projects/default/features`)
|
.get(`/api/admin/projects/default/features`)
|
||||||
@ -88,7 +96,7 @@ test('should have favorites true in project endpoint', async () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
test('should have favorites false by default', async () => {
|
test('feature should not be favorited by default', async () => {
|
||||||
const featureName = 'test-feature';
|
const featureName = 'test-feature';
|
||||||
await createFeature(featureName);
|
await createFeature(featureName);
|
||||||
|
|
||||||
@ -104,14 +112,10 @@ test('should have favorites false by default', async () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
test('should have favorites true in admin endpoint', async () => {
|
test('should be favorited in admin endpoint', async () => {
|
||||||
const featureName = 'test-feature';
|
const featureName = 'test-feature';
|
||||||
await createFeature(featureName);
|
await createFeature(featureName);
|
||||||
|
await favoriteFeature(featureName);
|
||||||
await app.request
|
|
||||||
.post(`/api/admin/projects/default/features/${featureName}/favorites`)
|
|
||||||
.set('Content-Type', 'application/json')
|
|
||||||
.expect(200);
|
|
||||||
|
|
||||||
const { body } = await app.request
|
const { body } = await app.request
|
||||||
.get(`/api/admin/features`)
|
.get(`/api/admin/features`)
|
||||||
@ -125,14 +129,10 @@ test('should have favorites true in admin endpoint', async () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
test('should have favorites true in project single feature endpoint', async () => {
|
test('should be favorited in project single feature endpoint', async () => {
|
||||||
const featureName = 'test-feature';
|
const featureName = 'test-feature';
|
||||||
await createFeature(featureName);
|
await createFeature(featureName);
|
||||||
|
await favoriteFeature(featureName);
|
||||||
await app.request
|
|
||||||
.post(`/api/admin/projects/default/features/${featureName}/favorites`)
|
|
||||||
.set('Content-Type', 'application/json')
|
|
||||||
.expect(200);
|
|
||||||
|
|
||||||
const { body } = await app.request
|
const { body } = await app.request
|
||||||
.get(`/api/admin/projects/default/features/${featureName}`)
|
.get(`/api/admin/projects/default/features/${featureName}`)
|
||||||
@ -145,19 +145,12 @@ test('should have favorites true in project single feature endpoint', async () =
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
test('should have favorites false after deleting favorite', async () => {
|
test('should be able to unfavorite feature', async () => {
|
||||||
const featureName = 'test-feature';
|
const featureName = 'test-feature';
|
||||||
await createFeature(featureName);
|
await createFeature(featureName);
|
||||||
|
|
||||||
await app.request
|
await favoriteFeature(featureName);
|
||||||
.post(`/api/admin/projects/default/features/${featureName}/favorites`)
|
await unfavoriteFeature(featureName);
|
||||||
.set('Content-Type', 'application/json')
|
|
||||||
.expect(200);
|
|
||||||
|
|
||||||
await app.request
|
|
||||||
.delete(`/api/admin/projects/default/features/${featureName}/favorites`)
|
|
||||||
.set('Content-Type', 'application/json')
|
|
||||||
.expect(200);
|
|
||||||
|
|
||||||
const { body } = await app.request
|
const { body } = await app.request
|
||||||
.get(`/api/admin/projects/default/features/${featureName}`)
|
.get(`/api/admin/projects/default/features/${featureName}`)
|
||||||
|
Loading…
Reference in New Issue
Block a user