fix faker image seed (#8422)

Images now display properly and there is diffent images now

allow to provide url, urls msut be valid in seed

Co-authored-by: Wolfgang Huß <wolle.huss@pjannto.com>
This commit is contained in:
Ulf Gebhardt 2025-04-22 13:06:27 +02:00 committed by GitHub
parent c0918f2c35
commit 74b79e0b14
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 36 additions and 47 deletions

View File

@ -102,7 +102,7 @@
}, },
"devDependencies": { "devDependencies": {
"@eslint-community/eslint-plugin-eslint-comments": "^4.5.0", "@eslint-community/eslint-plugin-eslint-comments": "^4.5.0",
"@faker-js/faker": "9.6.0", "@faker-js/faker": "9.7.0",
"@types/jest": "^29.5.14", "@types/jest": "^29.5.14",
"@types/node": "^22.14.1", "@types/node": "^22.14.1",
"@typescript-eslint/eslint-plugin": "^5.62.0", "@typescript-eslint/eslint-plugin": "^5.62.0",

View File

@ -12,7 +12,6 @@ import { Factory } from 'rosie'
import slugify from 'slug' import slugify from 'slug'
import { v4 as uuid } from 'uuid' import { v4 as uuid } from 'uuid'
import CONFIG from '@config/index'
import generateInviteCode from '@schema/resolvers/helpers/generateInviteCode' import generateInviteCode from '@schema/resolvers/helpers/generateInviteCode'
import { getDriver, getNeode } from './neo4j' import { getDriver, getNeode } from './neo4j'
@ -20,7 +19,7 @@ import { getDriver, getNeode } from './neo4j'
const neode = getNeode() const neode = getNeode()
const uniqueImageUrl = (imageUrl) => { const uniqueImageUrl = (imageUrl) => {
const newUrl = new URL(imageUrl, CONFIG.CLIENT_URI) const newUrl = new URL(imageUrl)
newUrl.search = `random=${uuid()}` newUrl.search = `random=${uuid()}`
return newUrl.toString() return newUrl.toString()
} }
@ -60,13 +59,22 @@ Factory.define('badge')
}) })
Factory.define('image') Factory.define('image')
.attr('url', faker.image.url) .attr('width', 400)
.attr('aspectRatio', 1.3333333333333333) .attr('height', 300)
.attr('blur', 0)
.attr('alt', faker.lorem.sentence) .attr('alt', faker.lorem.sentence)
.attr('type', 'image/jpeg') .attr('type', 'image/jpeg')
.attr('url', null)
.after((buildObject, _options) => { .after((buildObject, _options) => {
const { url: imageUrl } = buildObject if (!buildObject.url) {
if (imageUrl) buildObject.url = uniqueImageUrl(imageUrl) buildObject.url = faker.image.urlPicsumPhotos({
width: buildObject.width,
height: buildObject.height,
blur: buildObject.blur,
})
}
buildObject.url = uniqueImageUrl(buildObject.url)
buildObject.aspectRatio = buildObject.width / buildObject.height
return neode.create('Image', buildObject) return neode.create('Image', buildObject)
}) })

View File

@ -670,9 +670,9 @@ const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl']
categoryIds: ['cat16'], categoryIds: ['cat16'],
author: peterLustig, author: peterLustig,
image: Factory.build('image', { image: Factory.build('image', {
url: faker.image.urlLoremFlickr({ category: 'food', width: 300, height: 169 }), width: 300,
height: 169,
sensitive: true, sensitive: true,
aspectRatio: 300 / 169,
}), }),
}, },
) )
@ -686,8 +686,8 @@ const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl']
categoryIds: ['cat1'], categoryIds: ['cat1'],
author: bobDerBaumeister, author: bobDerBaumeister,
image: Factory.build('image', { image: Factory.build('image', {
url: faker.image.urlLoremFlickr({ category: 'technics', width: 300, height: 1500 }), width: 300,
aspectRatio: 300 / 1500, height: 1500,
}), }),
}, },
) )
@ -734,8 +734,8 @@ const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl']
categoryIds: ['cat6'], categoryIds: ['cat6'],
author: peterLustig, author: peterLustig,
image: Factory.build('image', { image: Factory.build('image', {
url: faker.image.urlLoremFlickr({ category: 'city', width: 300, height: 857 }), width: 300,
aspectRatio: 300 / 857, height: 857,
}), }),
}, },
) )
@ -773,8 +773,8 @@ const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl']
categoryIds: ['cat11'], categoryIds: ['cat11'],
author: louie, author: louie,
image: Factory.build('image', { image: Factory.build('image', {
url: faker.image.urlLoremFlickr({ category: 'people', width: 300, height: 901 }), width: 300,
aspectRatio: 300 / 901, height: 901,
}), }),
}, },
) )
@ -799,8 +799,8 @@ const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl']
categoryIds: ['cat14'], categoryIds: ['cat14'],
author: jennyRostock, author: jennyRostock,
image: Factory.build('image', { image: Factory.build('image', {
url: faker.image.urlLoremFlickr({ category: 'abstract', width: 300, height: 200 }), width: 300,
aspectRatio: 300 / 450, height: 200,
}), }),
}, },
) )
@ -859,7 +859,6 @@ const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl']
mutation: createPostMutation(), mutation: createPostMutation(),
variables: { variables: {
id: 'p8', id: 'p8',
image: faker.image.urlLoremFlickr({ category: 'nature' }),
title: `Quantum Flow Theory explains Quantum Gravity`, title: `Quantum Flow Theory explains Quantum Gravity`,
content: hashtagAndMention1, content: hashtagAndMention1,
categoryIds: ['cat8'], categoryIds: ['cat8'],
@ -1218,9 +1217,6 @@ const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl']
{ {
categoryIds: ['cat1'], categoryIds: ['cat1'],
author: jennyRostock, author: jennyRostock,
image: Factory.build('image', {
url: faker.image.urlLoremFlickr({ category: 'abstract' }),
}),
}, },
) )
} }
@ -1269,9 +1265,6 @@ const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl']
{ {
categoryIds: ['cat1'], categoryIds: ['cat1'],
author: peterLustig, author: peterLustig,
image: Factory.build('image', {
url: faker.image.urlLoremFlickr({ category: 'city' }),
}),
}, },
) )
} }
@ -1320,9 +1313,6 @@ const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl']
{ {
categoryIds: ['cat1'], categoryIds: ['cat1'],
author: dewey, author: dewey,
image: Factory.build('image', {
url: faker.image.urlLoremFlickr({ category: 'food' }),
}),
}, },
) )
} }
@ -1371,9 +1361,6 @@ const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl']
{ {
categoryIds: ['cat1'], categoryIds: ['cat1'],
author: louie, author: louie,
image: Factory.build('image', {
url: faker.image.urlLoremFlickr({ category: 'technics' }),
}),
}, },
) )
} }
@ -1422,9 +1409,6 @@ const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl']
{ {
categoryIds: ['cat1'], categoryIds: ['cat1'],
author: bobDerBaumeister, author: bobDerBaumeister,
image: Factory.build('image', {
url: faker.image.urlLoremFlickr({ category: 'people' }),
}),
}, },
) )
} }
@ -1473,9 +1457,6 @@ const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl']
{ {
categoryIds: ['cat1'], categoryIds: ['cat1'],
author: huey, author: huey,
image: Factory.build('image', {
url: faker.image.urlLoremFlickr({ category: 'nature' }),
}),
}, },
) )
} }

View File

@ -48,7 +48,7 @@ beforeAll(async () => {
}, },
{ {
avatar: Factory.build('image', { avatar: Factory.build('image', {
url: '/some/offensive/avatar.jpg', url: 'http://localhost/some/offensive/avatar.jpg',
}), }),
}, },
), ),
@ -116,7 +116,7 @@ beforeAll(async () => {
}, },
{ {
image: Factory.build('image', { image: Factory.build('image', {
url: '/some/offensive/image.jpg', url: 'http://localhost/some/offensive/image.jpg',
}), }),
author: troll, author: troll,
categoryIds, categoryIds,
@ -278,7 +278,7 @@ describe('softDeleteMiddleware', () => {
expect(subject.about).toEqual('This self description is very offensive')) expect(subject.about).toEqual('This self description is very offensive'))
it('displays avatar', () => it('displays avatar', () =>
expect(subject.avatar).toEqual({ expect(subject.avatar).toEqual({
url: expect.stringContaining('/some/offensive/avatar.jpg'), url: expect.stringMatching('http://localhost/some/offensive/avatar.jpg'),
})) }))
}) })
@ -293,7 +293,7 @@ describe('softDeleteMiddleware', () => {
expect(subject.contentExcerpt).toEqual('This is an offensive post content')) expect(subject.contentExcerpt).toEqual('This is an offensive post content'))
it('displays image', () => it('displays image', () =>
expect(subject.image).toEqual({ expect(subject.image).toEqual({
url: expect.stringContaining('/some/offensive/image.jpg'), url: expect.stringMatching('http://localhost/some/offensive/image.jpg'),
})) }))
}) })

View File

@ -47,7 +47,7 @@ describe('deleteImage', () => {
{}, {},
{ {
avatar: Factory.build('image', { avatar: Factory.build('image', {
url: '/some/avatar/url/', url: 'http://localhost/some/avatar/url/',
alt: 'This is the avatar image of a user', alt: 'This is the avatar image of a user',
}), }),
}, },
@ -336,7 +336,7 @@ describe('mergeImage', () => {
), ),
image: Factory.build('image', { image: Factory.build('image', {
alt: 'This is the previous, not updated image', alt: 'This is the previous, not updated image',
url: '/some/original/url', url: 'http://localhost/some/original/url',
}), }),
}, },
) )

View File

@ -1468,7 +1468,7 @@ describe('DeletePost', () => {
}, },
{ {
image: Factory.build('image', { image: Factory.build('image', {
url: 'path/to/some/image', url: 'http://localhost/path/to/some/image',
}), }),
author, author,
categoryIds, categoryIds,

View File

@ -1143,10 +1143,10 @@
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.1.tgz#de633db3ec2ef6a3c89e2f19038063e8a122e2c2" resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.1.tgz#de633db3ec2ef6a3c89e2f19038063e8a122e2c2"
integrity sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q== integrity sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==
"@faker-js/faker@9.6.0": "@faker-js/faker@9.7.0":
version "9.6.0" version "9.7.0"
resolved "https://registry.yarnpkg.com/@faker-js/faker/-/faker-9.6.0.tgz#64235d20330b142eef3d1d1638ba56c083b4bf1d" resolved "https://registry.yarnpkg.com/@faker-js/faker/-/faker-9.7.0.tgz#1cf1fecfcad5e2da2332140bf3b5f23cc1c2a7f4"
integrity sha512-3vm4by+B5lvsFPSyep3ELWmZfE3kicDtmemVpuwl1yH7tqtnHdsA6hG8fbXedMVdkzgtvzWoRgjSB4Q+FHnZiw== integrity sha512-aozo5vqjCmDoXLNUJarFZx2IN/GgGaogY4TMJ6so/WLZOWpSV7fvj2dmrV6sEAnUm1O7aCrhTibjpzeDFgNqbg==
"@graphql-toolkit/common@0.10.4": "@graphql-toolkit/common@0.10.4":
version "0.10.4" version "0.10.4"