Skip to content

Commit

Permalink
feat: sort projects by name (#976)
Browse files Browse the repository at this point in the history
Co-authored-by: Connor Clark <[email protected]>
  • Loading branch information
RaHehl and connorjclark authored Dec 14, 2023
1 parent 72b79d8 commit 2bf36f4
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 22 deletions.
22 changes: 17 additions & 5 deletions packages/server/src/api/storage/sql/sql.js
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,13 @@ function normalizeStatistic(statistic) {
* Sort all records by most recently created
* @type {import("sequelize").Order}
*/
const order = [['createdAt', 'desc']];
const orderByCreated = [['createdAt', 'DESC']];

/**
* Sort all records by name
* @type {import("sequelize").Order}
*/
const orderByName = [['name', 'ASC']];

class SqlStorageMethod {
constructor() {
Expand Down Expand Up @@ -298,7 +304,7 @@ class SqlStorageMethod {
*/
async getProjects() {
const {projectModel} = this._sql();
const projects = await this._findAll(projectModel, {order});
const projects = await this._findAll(projectModel, {order: orderByName});
return projects.map(clone);
}

Expand Down Expand Up @@ -414,7 +420,7 @@ class SqlStorageMethod {
const {buildModel} = this._sql();
const builds = await this._findAll(buildModel, {
where: {projectId, ...omit(options, ['limit'], {dropUndefined: true})},
order,
order: orderByCreated,
limit: options.limit || 10,
});
return clone(builds);
Expand Down Expand Up @@ -632,7 +638,10 @@ class SqlStorageMethod {
*/
async getRuns(projectId, buildId, options) {
const {runModel} = this._sql();
const runs = await this._findAll(runModel, {where: {...options, projectId, buildId}, order});
const runs = await this._findAll(runModel, {
where: {...options, projectId, buildId},
order: orderByCreated,
});
return clone(runs);
}

Expand Down Expand Up @@ -724,7 +733,10 @@ class SqlStorageMethod {
*/
async _getStatistics(projectId, buildId) {
const {statisticModel} = this._sql();
const statistics = await this._findAll(statisticModel, {where: {projectId, buildId}, order});
const statistics = await this._findAll(statisticModel, {
where: {projectId, buildId},
order: orderByCreated,
});
return clone(statistics).map(normalizeStatistic);
}

Expand Down
34 changes: 17 additions & 17 deletions packages/server/test/server-test-suite.js
Original file line number Diff line number Diff line change
Expand Up @@ -51,50 +51,50 @@ function runTests(state) {

describe('/v1/projects', () => {
it('should create a project', async () => {
const payload = {name: 'Lighthouse', externalUrl: 'https://github.com/lighthouse'};
const payload = {name: 'Lighthouse A', externalUrl: 'https://github.com/lighthouse'};
projectA = await client.createProject(payload);
expect(projectA).toHaveProperty('id');
expect(projectA).toHaveProperty('token');
expect(projectA).toHaveProperty('adminToken');
expect(projectA).toHaveProperty('baseBranch', 'master');
expect(projectA).toHaveProperty('slug', 'lighthouse');
expect(projectA).toHaveProperty('slug', 'lighthouse-a');
expect(projectA).toMatchObject(payload);
expect(projectA.token).toMatch(/^\w{8}-\w{4}/);
expect(projectA.adminToken).toMatch(/^\w{40}$/);
});

it('should create a 2nd project', async () => {
const payload = {
name: 'Lighthouse 2',
name: 'Lighthouse C',
externalUrl: 'https://gitlab.com/lighthouse',
baseBranch: '',
};
projectB = await client.createProject(payload);
expect(projectB.id).not.toEqual(projectA.id);
expect(projectB).toHaveProperty('id');
expect(projectB).toHaveProperty('slug', 'lighthouse-2');
expect(projectB).toMatchObject({...payload, baseBranch: 'master'});
projectC = await client.createProject(payload);
expect(projectC.id).not.toEqual(projectA.id);
expect(projectC).toHaveProperty('id');
expect(projectC).toHaveProperty('slug', 'lighthouse-c');
expect(projectC).toMatchObject({...payload, baseBranch: 'master'});
});

it('should create a 3rd project', async () => {
const payload = {
name: 'Lighthouse 3',
name: 'Lighthouse B',
externalUrl: 'https://gitlab.com/lighthouse',
baseBranch: 'dev',
};
projectC = await client.createProject(payload);
expect(projectC.id).not.toEqual(projectA.id);
expect(projectC).toHaveProperty('id');
expect(projectC).toHaveProperty('slug', 'lighthouse-3');
expect(projectC).toMatchObject(payload);
projectB = await client.createProject(payload);
expect(projectB.id).not.toEqual(projectA.id);
expect(projectB).toHaveProperty('id');
expect(projectB).toHaveProperty('slug', 'lighthouse-b');
expect(projectB).toMatchObject(payload);
});

it('should list projects', async () => {
const projects = await client.getProjects();
expect(projects).toEqual([
{...projectC, adminToken: '', token: ''},
{...projectB, adminToken: '', token: ''},
{...projectA, adminToken: '', token: ''},
{...projectB, adminToken: '', token: ''},
{...projectC, adminToken: '', token: ''},
]);
});

Expand All @@ -109,7 +109,7 @@ function runTests(state) {
});

it('should fetch a project by slug', async () => {
const project = await client.findProjectBySlug('lighthouse');
const project = await client.findProjectBySlug('lighthouse-a');
expect(project).toEqual({...projectA, adminToken: '', token: ''});
});

Expand Down

0 comments on commit 2bf36f4

Please sign in to comment.