1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-08-18 13:48:58 +02:00

test: fixes to support postgres10

This commit is contained in:
Nuno Góis 2023-11-27 17:51:11 +00:00
parent 31a65d00b9
commit 26cd47396a
No known key found for this signature in database
GPG Key ID: 71ECC689F1091765
9 changed files with 415 additions and 381 deletions

View File

@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
postgres-version: [11, 12, 13, 14, 15, 16] # 10, 11, 12, 13, 14, 15, 16
postgres-version: [10, 11, 12, 13, 14, 15, 16]
services:
# Label used to access the service container
postgres:

View File

@ -215,10 +215,11 @@ export class ClientMetricsStoreV2 implements IClientMetricsStoreV2 {
.on(`${TABLE_VARIANTS}.environment`, `${TABLE}.environment`)
.on(`${TABLE_VARIANTS}.timestamp`, `${TABLE}.timestamp`);
})
.leftJoin('environments', 'environments.name', `${TABLE}.environment`)
.where(`${TABLE}.feature_name`, featureName)
.andWhereRaw(
`${TABLE}.timestamp >= NOW() - INTERVAL '${hoursBack} hours'`,
);
).orderBy('environments.sort_order', 'ASC');
const tokens = rows.reduce(variantRowReducer, {});
return Object.values(tokens);

View File

@ -89,6 +89,7 @@ export class FeatureToggleRowConverter {
name: row.last_seen_at_env,
lastSeenAt: row.env_last_seen_at,
enabled: row.enabled || false,
sortOrder: Number(row.env_sort_order) || 0,
};
if (!newEnvironment.name || !newEnvironment.lastSeenAt) {
@ -174,6 +175,18 @@ export class FeatureToggleRowConverter {
return feature;
};
sortEnvironments(environments: any[]) { // TODO: Better types
return environments?.sort((a, b) => {
if (a.sortOrder && b.sortOrder && a.name && b.name) {
if (a.sortOrder === b.sortOrder) {
return a.name.localeCompare(b.name);
}
return a.sortOrder - b.sortOrder;
}
return 0;
});
}
buildFeatureToggleListFromRows = (
rows: any[],
featureQuery?: IFeatureToggleQuery,
@ -193,6 +206,12 @@ export class FeatureToggleRowConverter {
this.addLastSeenByEnvironment(feature, r);
}
if (feature.environments) {
feature.environments = this.sortEnvironments(
feature.environments,
);
}
acc[r.name] = feature;
return acc;
}, {});
@ -250,6 +269,12 @@ export class FeatureToggleRowConverter {
this.addLastSeenByEnvironment(feature, row);
}
if (feature.environments) {
feature.environments = this.sortEnvironments(
feature.environments,
);
}
acc[row.name] = feature;
return acc;
}, {});

View File

@ -179,6 +179,9 @@ export default class FeatureToggleStore implements IFeatureToggleStore {
builder.addSelectColumn(
'last_seen_at_metrics.environment as last_seen_at_env',
);
builder.addSelectColumn(
'environments.sort_order as env_sort_order',
);
}
if (userId) {
@ -261,6 +264,7 @@ export default class FeatureToggleStore implements IFeatureToggleStore {
builder.addSelectColumn(
'last_seen_at_metrics.environment as last_seen_at_env',
);
builder.addSelectColumn('environments.sort_order as env_sort_order');
let rows;

View File

@ -125,6 +125,8 @@ export class FeatureToggleListBuilder {
);
}
this.internalQuery.leftJoin('environments', 'environments.name', 'last_seen_at_metrics.environment');
return this;
};

View File

@ -37,14 +37,14 @@ beforeAll(async () => {
await db.stores.environmentStore.create({
name: 'development',
type: 'development',
sortOrder: 1,
sortOrder: 2,
enabled: true,
});
await db.stores.environmentStore.create({
name: 'production',
type: 'production',
sortOrder: 2,
sortOrder: 3,
enabled: true,
});

View File

@ -267,86 +267,11 @@ exports[`Favor permission name over id migration correctly assigns permissions b
"permission": "ADMIN",
"role_id": 6,
},
{
"environment": null,
"permission": "CREATE_FEATURE",
"role_id": 7,
},
{
"environment": null,
"permission": "CREATE_STRATEGY",
"role_id": 7,
},
{
"environment": null,
"permission": "CREATE_ADDON",
"role_id": 7,
},
{
"environment": null,
"permission": "DELETE_ADDON",
"role_id": 7,
},
{
"environment": null,
"permission": "UPDATE_ADDON",
"role_id": 7,
},
{
"environment": null,
"permission": "UPDATE_FEATURE",
"role_id": 7,
},
{
"environment": null,
"permission": "DELETE_FEATURE",
"role_id": 7,
},
{
"environment": null,
"permission": "UPDATE_APPLICATION",
"role_id": 7,
},
{
"environment": null,
"permission": "UPDATE_TAG_TYPE",
"role_id": 7,
},
{
"environment": null,
"permission": "DELETE_TAG_TYPE",
"role_id": 7,
},
{
"environment": null,
"permission": "CREATE_PROJECT",
"role_id": 7,
},
{
"environment": null,
"permission": "UPDATE_PROJECT",
"role_id": 7,
},
{
"environment": null,
"permission": "DELETE_PROJECT",
"role_id": 7,
},
{
"environment": null,
"permission": "UPDATE_STRATEGY",
"role_id": 7,
},
{
"environment": null,
"permission": "DELETE_STRATEGY",
"role_id": 7,
},
{
"environment": null,
"permission": "UPDATE_CONTEXT_FIELD",
"role_id": 7,
},
{
"environment": null,
"permission": "CREATE_CONTEXT_FIELD",
@ -354,112 +279,67 @@ exports[`Favor permission name over id migration correctly assigns permissions b
},
{
"environment": null,
"permission": "DELETE_CONTEXT_FIELD",
"permission": "CREATE_FEATURE",
"role_id": 7,
},
{
"environment": null,
"permission": "UPDATE_FEATURE_VARIANTS",
"role_id": 7,
"permission": "CREATE_FEATURE",
"role_id": 9,
},
{
"environment": null,
"permission": "CREATE_FEATURE",
"role_id": 10,
},
{
"environment": "default",
"permission": "CREATE_FEATURE_STRATEGY",
"role_id": 7,
},
{
"environment": "default",
"permission": "CREATE_FEATURE_STRATEGY",
"role_id": 9,
},
{
"environment": "default",
"permission": "CREATE_FEATURE_STRATEGY",
"role_id": 10,
},
{
"environment": "development",
"permission": "CREATE_FEATURE_STRATEGY",
"role_id": 7,
},
{
"environment": "development",
"permission": "CREATE_FEATURE_STRATEGY",
"role_id": 9,
},
{
"environment": "development",
"permission": "CREATE_FEATURE_STRATEGY",
"role_id": 10,
},
{
"environment": "production",
"permission": "CREATE_FEATURE_STRATEGY",
"role_id": 7,
},
{
"environment": "production",
"permission": "CREATE_FEATURE_STRATEGY",
"role_id": 7,
},
{
"environment": "default",
"permission": "UPDATE_FEATURE_STRATEGY",
"role_id": 7,
},
{
"environment": "development",
"permission": "UPDATE_FEATURE_STRATEGY",
"role_id": 7,
"role_id": 9,
},
{
"environment": "production",
"permission": "UPDATE_FEATURE_STRATEGY",
"role_id": 7,
},
{
"environment": "default",
"permission": "DELETE_FEATURE_STRATEGY",
"role_id": 7,
},
{
"environment": "development",
"permission": "DELETE_FEATURE_STRATEGY",
"role_id": 7,
},
{
"environment": "production",
"permission": "DELETE_FEATURE_STRATEGY",
"role_id": 7,
},
{
"environment": "default",
"permission": "UPDATE_FEATURE_ENVIRONMENT",
"role_id": 7,
},
{
"environment": "development",
"permission": "UPDATE_FEATURE_ENVIRONMENT",
"role_id": 7,
},
{
"environment": "production",
"permission": "UPDATE_FEATURE_ENVIRONMENT",
"role_id": 7,
},
{
"environment": "default",
"permission": "UPDATE_FEATURE_ENVIRONMENT_VARIANTS",
"role_id": 7,
},
{
"environment": "development",
"permission": "UPDATE_FEATURE_ENVIRONMENT_VARIANTS",
"role_id": 7,
},
{
"environment": "production",
"permission": "UPDATE_FEATURE_ENVIRONMENT_VARIANTS",
"role_id": 7,
"permission": "CREATE_FEATURE_STRATEGY",
"role_id": 10,
},
{
"environment": null,
"permission": "MOVE_FEATURE_TOGGLE",
"role_id": 7,
},
{
"environment": null,
"permission": "CREATE_SEGMENT",
"role_id": 7,
},
{
"environment": null,
"permission": "UPDATE_SEGMENT",
"role_id": 7,
},
{
"environment": null,
"permission": "DELETE_SEGMENT",
"role_id": 7,
},
{
"environment": null,
"permission": "READ_PROJECT_API_TOKEN",
"permission": "CREATE_PROJECT",
"role_id": 7,
},
{
@ -467,11 +347,151 @@ exports[`Favor permission name over id migration correctly assigns permissions b
"permission": "CREATE_PROJECT_API_TOKEN",
"role_id": 7,
},
{
"environment": null,
"permission": "CREATE_PROJECT_API_TOKEN",
"role_id": 9,
},
{
"environment": null,
"permission": "CREATE_PROJECT_API_TOKEN",
"role_id": 10,
},
{
"environment": null,
"permission": "CREATE_SEGMENT",
"role_id": 7,
},
{
"environment": null,
"permission": "CREATE_STRATEGY",
"role_id": 7,
},
{
"environment": null,
"permission": "CREATE_TAG_TYPE",
"role_id": 7,
},
{
"environment": null,
"permission": "DELETE_ADDON",
"role_id": 7,
},
{
"environment": null,
"permission": "DELETE_CONTEXT_FIELD",
"role_id": 7,
},
{
"environment": null,
"permission": "DELETE_FEATURE",
"role_id": 7,
},
{
"environment": null,
"permission": "DELETE_FEATURE",
"role_id": 9,
},
{
"environment": null,
"permission": "DELETE_FEATURE",
"role_id": 10,
},
{
"environment": "default",
"permission": "DELETE_FEATURE_STRATEGY",
"role_id": 7,
},
{
"environment": "default",
"permission": "DELETE_FEATURE_STRATEGY",
"role_id": 9,
},
{
"environment": "default",
"permission": "DELETE_FEATURE_STRATEGY",
"role_id": 10,
},
{
"environment": "development",
"permission": "DELETE_FEATURE_STRATEGY",
"role_id": 7,
},
{
"environment": "development",
"permission": "DELETE_FEATURE_STRATEGY",
"role_id": 9,
},
{
"environment": "development",
"permission": "DELETE_FEATURE_STRATEGY",
"role_id": 10,
},
{
"environment": "production",
"permission": "DELETE_FEATURE_STRATEGY",
"role_id": 7,
},
{
"environment": "production",
"permission": "DELETE_FEATURE_STRATEGY",
"role_id": 9,
},
{
"environment": "production",
"permission": "DELETE_FEATURE_STRATEGY",
"role_id": 10,
},
{
"environment": null,
"permission": "DELETE_PROJECT",
"role_id": 7,
},
{
"environment": null,
"permission": "DELETE_PROJECT",
"role_id": 9,
},
{
"environment": null,
"permission": "DELETE_PROJECT_API_TOKEN",
"role_id": 7,
},
{
"environment": null,
"permission": "DELETE_PROJECT_API_TOKEN",
"role_id": 9,
},
{
"environment": null,
"permission": "DELETE_PROJECT_API_TOKEN",
"role_id": 10,
},
{
"environment": null,
"permission": "DELETE_SEGMENT",
"role_id": 7,
},
{
"environment": null,
"permission": "DELETE_STRATEGY",
"role_id": 7,
},
{
"environment": null,
"permission": "DELETE_TAG_TYPE",
"role_id": 7,
},
{
"environment": null,
"permission": "MOVE_FEATURE_TOGGLE",
"role_id": 7,
},
{
"environment": null,
"permission": "MOVE_FEATURE_TOGGLE",
"role_id": 9,
},
{
"environment": null,
"permission": "READ_CLIENT_API_TOKEN",
@ -484,14 +504,39 @@ exports[`Favor permission name over id migration correctly assigns permissions b
},
{
"environment": null,
"permission": "CREATE_TAG_TYPE",
"permission": "READ_PROJECT_API_TOKEN",
"role_id": 7,
},
{
"environment": null,
"permission": "CREATE_FEATURE",
"permission": "READ_PROJECT_API_TOKEN",
"role_id": 9,
},
{
"environment": null,
"permission": "READ_PROJECT_API_TOKEN",
"role_id": 10,
},
{
"environment": null,
"permission": "UPDATE_ADDON",
"role_id": 7,
},
{
"environment": null,
"permission": "UPDATE_APPLICATION",
"role_id": 7,
},
{
"environment": null,
"permission": "UPDATE_CONTEXT_FIELD",
"role_id": 7,
},
{
"environment": null,
"permission": "UPDATE_FEATURE",
"role_id": 7,
},
{
"environment": null,
"permission": "UPDATE_FEATURE",
@ -499,9 +544,174 @@ exports[`Favor permission name over id migration correctly assigns permissions b
},
{
"environment": null,
"permission": "DELETE_FEATURE",
"permission": "UPDATE_FEATURE",
"role_id": 10,
},
{
"environment": null,
"permission": "UPDATE_FEATURE_DEPENDENCY",
"role_id": 9,
},
{
"environment": null,
"permission": "UPDATE_FEATURE_DEPENDENCY",
"role_id": 10,
},
{
"environment": "default",
"permission": "UPDATE_FEATURE_ENVIRONMENT",
"role_id": 7,
},
{
"environment": "default",
"permission": "UPDATE_FEATURE_ENVIRONMENT",
"role_id": 9,
},
{
"environment": "default",
"permission": "UPDATE_FEATURE_ENVIRONMENT",
"role_id": 10,
},
{
"environment": "development",
"permission": "UPDATE_FEATURE_ENVIRONMENT",
"role_id": 7,
},
{
"environment": "development",
"permission": "UPDATE_FEATURE_ENVIRONMENT",
"role_id": 9,
},
{
"environment": "development",
"permission": "UPDATE_FEATURE_ENVIRONMENT",
"role_id": 10,
},
{
"environment": "production",
"permission": "UPDATE_FEATURE_ENVIRONMENT",
"role_id": 7,
},
{
"environment": "production",
"permission": "UPDATE_FEATURE_ENVIRONMENT",
"role_id": 9,
},
{
"environment": "production",
"permission": "UPDATE_FEATURE_ENVIRONMENT",
"role_id": 10,
},
{
"environment": "default",
"permission": "UPDATE_FEATURE_ENVIRONMENT_VARIANTS",
"role_id": 7,
},
{
"environment": "default",
"permission": "UPDATE_FEATURE_ENVIRONMENT_VARIANTS",
"role_id": 9,
},
{
"environment": "default",
"permission": "UPDATE_FEATURE_ENVIRONMENT_VARIANTS",
"role_id": 10,
},
{
"environment": "development",
"permission": "UPDATE_FEATURE_ENVIRONMENT_VARIANTS",
"role_id": 7,
},
{
"environment": "development",
"permission": "UPDATE_FEATURE_ENVIRONMENT_VARIANTS",
"role_id": 9,
},
{
"environment": "development",
"permission": "UPDATE_FEATURE_ENVIRONMENT_VARIANTS",
"role_id": 10,
},
{
"environment": "production",
"permission": "UPDATE_FEATURE_ENVIRONMENT_VARIANTS",
"role_id": 7,
},
{
"environment": "production",
"permission": "UPDATE_FEATURE_ENVIRONMENT_VARIANTS",
"role_id": 9,
},
{
"environment": "production",
"permission": "UPDATE_FEATURE_ENVIRONMENT_VARIANTS",
"role_id": 10,
},
{
"environment": "default",
"permission": "UPDATE_FEATURE_STRATEGY",
"role_id": 7,
},
{
"environment": "default",
"permission": "UPDATE_FEATURE_STRATEGY",
"role_id": 9,
},
{
"environment": "default",
"permission": "UPDATE_FEATURE_STRATEGY",
"role_id": 10,
},
{
"environment": "development",
"permission": "UPDATE_FEATURE_STRATEGY",
"role_id": 7,
},
{
"environment": "development",
"permission": "UPDATE_FEATURE_STRATEGY",
"role_id": 9,
},
{
"environment": "development",
"permission": "UPDATE_FEATURE_STRATEGY",
"role_id": 10,
},
{
"environment": "production",
"permission": "UPDATE_FEATURE_STRATEGY",
"role_id": 7,
},
{
"environment": "production",
"permission": "UPDATE_FEATURE_STRATEGY",
"role_id": 9,
},
{
"environment": "production",
"permission": "UPDATE_FEATURE_STRATEGY",
"role_id": 10,
},
{
"environment": null,
"permission": "UPDATE_FEATURE_VARIANTS",
"role_id": 7,
},
{
"environment": null,
"permission": "UPDATE_FEATURE_VARIANTS",
"role_id": 9,
},
{
"environment": null,
"permission": "UPDATE_FEATURE_VARIANTS",
"role_id": 10,
},
{
"environment": null,
"permission": "UPDATE_PROJECT",
"role_id": 7,
},
{
"environment": null,
"permission": "UPDATE_PROJECT",
@ -509,228 +719,18 @@ exports[`Favor permission name over id migration correctly assigns permissions b
},
{
"environment": null,
"permission": "DELETE_PROJECT",
"role_id": 9,
"permission": "UPDATE_SEGMENT",
"role_id": 7,
},
{
"environment": null,
"permission": "UPDATE_FEATURE_VARIANTS",
"role_id": 9,
},
{
"environment": "default",
"permission": "CREATE_FEATURE_STRATEGY",
"role_id": 9,
},
{
"environment": "development",
"permission": "CREATE_FEATURE_STRATEGY",
"role_id": 9,
},
{
"environment": "production",
"permission": "CREATE_FEATURE_STRATEGY",
"role_id": 9,
},
{
"environment": "default",
"permission": "UPDATE_FEATURE_STRATEGY",
"role_id": 9,
},
{
"environment": "development",
"permission": "UPDATE_FEATURE_STRATEGY",
"role_id": 9,
},
{
"environment": "production",
"permission": "UPDATE_FEATURE_STRATEGY",
"role_id": 9,
},
{
"environment": "default",
"permission": "DELETE_FEATURE_STRATEGY",
"role_id": 9,
},
{
"environment": "development",
"permission": "DELETE_FEATURE_STRATEGY",
"role_id": 9,
},
{
"environment": "production",
"permission": "DELETE_FEATURE_STRATEGY",
"role_id": 9,
},
{
"environment": "default",
"permission": "UPDATE_FEATURE_ENVIRONMENT",
"role_id": 9,
},
{
"environment": "development",
"permission": "UPDATE_FEATURE_ENVIRONMENT",
"role_id": 9,
},
{
"environment": "production",
"permission": "UPDATE_FEATURE_ENVIRONMENT",
"role_id": 9,
},
{
"environment": "default",
"permission": "UPDATE_FEATURE_ENVIRONMENT_VARIANTS",
"role_id": 9,
},
{
"environment": "development",
"permission": "UPDATE_FEATURE_ENVIRONMENT_VARIANTS",
"role_id": 9,
},
{
"environment": "production",
"permission": "UPDATE_FEATURE_ENVIRONMENT_VARIANTS",
"role_id": 9,
"permission": "UPDATE_STRATEGY",
"role_id": 7,
},
{
"environment": null,
"permission": "MOVE_FEATURE_TOGGLE",
"role_id": 9,
},
{
"environment": null,
"permission": "READ_PROJECT_API_TOKEN",
"role_id": 9,
},
{
"environment": null,
"permission": "CREATE_PROJECT_API_TOKEN",
"role_id": 9,
},
{
"environment": null,
"permission": "DELETE_PROJECT_API_TOKEN",
"role_id": 9,
},
{
"environment": null,
"permission": "UPDATE_FEATURE_DEPENDENCY",
"role_id": 9,
},
{
"environment": null,
"permission": "CREATE_FEATURE",
"role_id": 10,
},
{
"environment": null,
"permission": "UPDATE_FEATURE",
"role_id": 10,
},
{
"environment": null,
"permission": "DELETE_FEATURE",
"role_id": 10,
},
{
"environment": null,
"permission": "UPDATE_FEATURE_VARIANTS",
"role_id": 10,
},
{
"environment": "default",
"permission": "CREATE_FEATURE_STRATEGY",
"role_id": 10,
},
{
"environment": "development",
"permission": "CREATE_FEATURE_STRATEGY",
"role_id": 10,
},
{
"environment": "production",
"permission": "CREATE_FEATURE_STRATEGY",
"role_id": 10,
},
{
"environment": "default",
"permission": "UPDATE_FEATURE_STRATEGY",
"role_id": 10,
},
{
"environment": "development",
"permission": "UPDATE_FEATURE_STRATEGY",
"role_id": 10,
},
{
"environment": "production",
"permission": "UPDATE_FEATURE_STRATEGY",
"role_id": 10,
},
{
"environment": "default",
"permission": "DELETE_FEATURE_STRATEGY",
"role_id": 10,
},
{
"environment": "development",
"permission": "DELETE_FEATURE_STRATEGY",
"role_id": 10,
},
{
"environment": "production",
"permission": "DELETE_FEATURE_STRATEGY",
"role_id": 10,
},
{
"environment": "default",
"permission": "UPDATE_FEATURE_ENVIRONMENT",
"role_id": 10,
},
{
"environment": "development",
"permission": "UPDATE_FEATURE_ENVIRONMENT",
"role_id": 10,
},
{
"environment": "production",
"permission": "UPDATE_FEATURE_ENVIRONMENT",
"role_id": 10,
},
{
"environment": "default",
"permission": "UPDATE_FEATURE_ENVIRONMENT_VARIANTS",
"role_id": 10,
},
{
"environment": "development",
"permission": "UPDATE_FEATURE_ENVIRONMENT_VARIANTS",
"role_id": 10,
},
{
"environment": "production",
"permission": "UPDATE_FEATURE_ENVIRONMENT_VARIANTS",
"role_id": 10,
},
{
"environment": null,
"permission": "READ_PROJECT_API_TOKEN",
"role_id": 10,
},
{
"environment": null,
"permission": "CREATE_PROJECT_API_TOKEN",
"role_id": 10,
},
{
"environment": null,
"permission": "DELETE_PROJECT_API_TOKEN",
"role_id": 10,
},
{
"environment": null,
"permission": "UPDATE_FEATURE_DEPENDENCY",
"role_id": 10,
"permission": "UPDATE_TAG_TYPE",
"role_id": 7,
},
]
`;

View File

@ -22,10 +22,12 @@ beforeAll(async () => {
await db.stores.environmentStore.create({
name: 'development',
type: 'development',
sortOrder: 2,
});
await db.stores.environmentStore.create({
name: 'production',
type: 'production',
sortOrder: 3,
});
});

View File

@ -114,7 +114,7 @@ test('Favor permission name over id migration correctly assigns permissions by n
`);
const { rows: resultsDefaultRolePermissions } = await client.query(`
SELECT role_id, environment, permission FROM "favor_permission_name_over_id_test"."role_permission" WHERE role_id != 101 ORDER BY created_at;
SELECT role_id, environment, permission FROM "favor_permission_name_over_id_test"."role_permission" WHERE role_id != 101 ORDER BY created_at, permission, environment, role_id;
`);
expect(resultsRoles.length).toEqual(5);