diff --git a/package.json b/package.json index 8088e97..4517131 100644 --- a/package.json +++ b/package.json @@ -39,6 +39,9 @@ "validator": "^13.15.0" }, "devDependencies": { + "@faker-js/faker": "^9.8.0", + "@jest/test-result": "^29.7.0", + "@jest/test-sequencer": "^29.7.0", "@nestjs/cli": "^10.0.3", "@nestjs/schematics": "^10.0.1", "@nestjs/testing": "^10.0.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 81f3223..fb35f40 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -57,6 +57,15 @@ importers: specifier: ^13.15.0 version: 13.15.0 devDependencies: + '@faker-js/faker': + specifier: ^9.8.0 + version: 9.8.0 + '@jest/test-result': + specifier: ^29.7.0 + version: 29.7.0 + '@jest/test-sequencer': + specifier: ^29.7.0 + version: 29.7.0 '@nestjs/cli': specifier: ^10.0.3 version: 10.4.9(@swc/cli@0.1.65(@swc/core@1.11.24)(chokidar@3.6.0))(@swc/core@1.11.24) @@ -359,6 +368,10 @@ packages: resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@faker-js/faker@9.8.0': + resolution: {integrity: sha512-U9wpuSrJC93jZBxx/Qq2wPjCuYISBueyVUGK7qqdmj7r/nxaxwW8AQDCLeRO7wZnjj94sh3p246cAYjUKuqgfg==} + engines: {node: '>=18.0.0', npm: '>=9.0.0'} + '@fastify/ajv-compiler@3.6.0': resolution: {integrity: sha512-LwdXQJjmMD+GwLOkP7TVC68qa+pSSogeWWmznRJ/coyTcfe9qA05AHFSe1eZFwK6q+xVRpChnvFUkf1iYaSZsQ==} @@ -4261,6 +4274,8 @@ snapshots: '@eslint/js@8.57.1': {} + '@faker-js/faker@9.8.0': {} + '@fastify/ajv-compiler@3.6.0': dependencies: ajv: 8.17.1 diff --git a/test/01-inital-data.test.ts b/test/01-inital-data.test.ts new file mode 100644 index 0000000..9237e5b --- /dev/null +++ b/test/01-inital-data.test.ts @@ -0,0 +1,76 @@ +import { describe } from 'node:test'; + +import { FastifyAdapter, NestFastifyApplication } from '@nestjs/platform-fastify'; +import { Test, TestingModule } from '@nestjs/testing'; + +import { pick } from 'lodash'; +import { DataSource } from 'typeorm'; + +import { database } from '@/config'; +import { ContentModule } from '@/modules/content/content.module'; +import { CategoryEntity } from '@/modules/content/entities'; +import { CategoryRepository } from '@/modules/content/repositories'; +import { DatabaseModule } from '@/modules/database/database.module'; + +import { initialCategories } from './test-data'; + +describe('category test', () => { + let datasource: DataSource; + let app: NestFastifyApplication; + let categoryRepository: CategoryRepository; + + beforeAll(async () => { + const module: TestingModule = await Test.createTestingModule({ + imports: [ContentModule, DatabaseModule.forRoot(database)], + }).compile(); + app = module.createNestApplication(new FastifyAdapter()); + await app.init(); + await app.getHttpAdapter().getInstance().ready(); + categoryRepository = module.get(CategoryRepository); + datasource = module.get(DataSource); + await categoryRepository.clear(); + // init category data + const categories = await addCategory(app, initialCategories); + console.log(categories); + // init tag data + addTag(app, []); + // init post data + addPost(app, []); + // init comment data + }); + + it('check init', async () => { + expect(app).toBeDefined(); + }); + + afterAll(async () => { + await datasource.destroy(); // 关闭数据库连接 + await app.close(); + }); +}); + +async function addCategory( + app: NestFastifyApplication, + data: RecordAny[], + parentId?: string, +): Promise { + const categories: CategoryEntity[] = []; + if (app && data && data.length > 0) { + for (let index = 0; index < data.length; index++) { + const item = data[index]; + const result = await app.inject({ + method: 'POST', + url: '/category', + body: { ...pick(item, ['name', 'customOrder']), parent: parentId }, + }); + const addedItem: CategoryEntity = result.json(); + categories.push(addedItem); + categories.push(...(await addCategory(app, item.children, addedItem.id))); + } + } + return categories; +} + +function addTag(app: NestFastifyApplication, data: RecordAny[]) {} + +function addPost(app: NestFastifyApplication, data: RecordAny[]) {} diff --git a/test/category.test.ts b/test/category.test.ts index 4d594df..51e7d7b 100644 --- a/test/category.test.ts +++ b/test/category.test.ts @@ -8,14 +8,12 @@ import { DataSource } from 'typeorm'; import { database } from '@/config'; import { ContentModule } from '@/modules/content/content.module'; import { CategoryController } from '@/modules/content/controllers'; -import { CategoryRepository } from '@/modules/content/repositories'; import { DatabaseModule } from '@/modules/database/database.module'; describe('category test', () => { let controller: CategoryController; let datasource: DataSource; let app: NestFastifyApplication; - let repository: CategoryRepository; beforeAll(async () => { const module: TestingModule = await Test.createTestingModule({ @@ -25,42 +23,28 @@ describe('category test', () => { await app.init(); await app.getHttpAdapter().getInstance().ready(); controller = module.get(CategoryController); - repository = module.get(CategoryRepository); datasource = module.get(DataSource); - await repository.clear(); }); it('check datasource', () => { expect(datasource).toBeDefined(); }); - it('create new category', () => { + it('check new category', () => { expect(controller).toBeDefined(); }); - it('/category', () => { - return app - .inject({ - method: 'GET', - url: '/category', - }) - .then((result) => { - console.log(result.json()); - expect(result.statusCode).toEqual(200); - expect(result.json().items).toEqual([]); - }); + it('create new category', () => { + expect(app).toBeDefined(); }); - it('/category/create', () => { - return app - .inject({ - method: 'POST', - url: '/category', - body: { name: 'hhhhh' }, - }) - .then((result) => { - console.log(result.json()); - expect(result.statusCode).toEqual(201); - }); + it('/category', async () => { + const result = await app.inject({ + method: 'GET', + url: '/category', + }); + console.log(result.json()); + expect(result.statusCode).toEqual(200); + expect(result.json().items).toEqual([]); }); afterAll(async () => { diff --git a/test/generate-mock-data.ts b/test/generate-mock-data.ts new file mode 100644 index 0000000..72b4d56 --- /dev/null +++ b/test/generate-mock-data.ts @@ -0,0 +1,37 @@ +import { fakerEN } from '@faker-js/faker/.'; + +import { CreateCommentDto } from '@/modules/content/dtos/comment.dto'; +import { CreatePostDto } from '@/modules/content/dtos/post.dto'; +import { CreateTagDto } from '@/modules/content/dtos/tag.dto'; + +export function generateMockPost(): CreatePostDto { + return { + title: fakerEN.lorem.words(5).slice(0, 255), + body: fakerEN.lorem.paragraphs(3), + summary: fakerEN.lorem.sentence().slice(0, 500), + publish: fakerEN.datatype.boolean(), + keywords: Array(3) + .fill(null) + .map(() => fakerEN.lorem.word().slice(0, 20)), + customOrder: fakerEN.number.int({ min: 0, max: 10000 }), + category: fakerEN.string.uuid(), + tags: Array(2) + .fill(null) + .map(() => fakerEN.string.uuid()), + }; +} + +export function generateMockTag(): CreateTagDto { + return { + name: fakerEN.lorem.word().slice(0, 20), + desc: fakerEN.lorem.words(5).slice(0, 255), + }; +} + +export function generateMockComment(): CreateCommentDto { + return { + body: fakerEN.lorem.paragraphs(2), + post: fakerEN.string.uuid(), + parent: fakerEN.string.uuid(), + }; +} diff --git a/test/test-data.ts b/test/test-data.ts new file mode 100644 index 0000000..1201947 --- /dev/null +++ b/test/test-data.ts @@ -0,0 +1,339 @@ +export const initialCategories = [ + { + name: '全栈', + customOrder: 100, + children: [ + { + name: '前端', + customOrder: 110, + children: [ + { name: 'React', customOrder: 111 }, + { name: 'CSS', customOrder: 112 }, + ], + }, + { + name: '后端', + customOrder: 120, + children: [ + { name: 'Java', customOrder: 121 }, + { name: 'nodejs', customOrder: 122 }, + ], + }, + { + name: '服务器', + customOrder: 130, + children: [ + { name: 'Ubuntu', customOrder: 131 }, + { name: 'MySql', customOrder: 132 }, + ], + }, + { + name: '网络', + customOrder: 140, + children: [ + { name: 'NAS', customOrder: 141 }, + { name: '云服务', customOrder: 142 }, + ], + }, + ], + }, +]; + +export const postData = [ + { + title: 'quis stultus sit cresco sono', + body: + 'Coadunatio sequi solvo abstergo utilis stipes urbanus ceno victus. Clamo subiungo quaerat vinitor sto tutamen utique tabesco dignissimos. Cogito cumque nesciunt.\n' + + 'Cunae beatus molestiae cubitum patria vulariter supellex. Casso itaque vos dapifer delibero administratio. Ea suppono carbo valeo vergo blanditiis.\n' + + 'Conicio ab cattus caste audacia arbor rerum. Creator aveho solvo somnus deleo enim tardus maiores volubilis aeternus. Necessitatibus tantum doloribus voluptatibus.', + summary: 'Sui adsum demoror attollo acceptus creator caput turbo.', + publish: true, + keywords: ['ver', 'vicissitudo', 'surculus'], + customOrder: 8504, + category: 'd719e421-8ae3-44c8-8046-855af054e549', + tags: ['c2a0f67d-a14f-4832-a1ab-c8e466b194d1', '74a3eea1-d765-419b-86c0-38ff0285ba7e'], + }, + { + title: 'neque aeger adduco volubilis tabesco', + body: + 'Aeger et nobis theologus theca vobis iste aeneus. Vitiosus versus volup adfectus. Addo aspernatur paens theatrum abscido tricesimus.\n' + + 'Asper vulgus virgo vesco timor. Communis decretum solio. Speculum sufficio eius currus denuo conscendo.\n' + + 'Verto aedificium verumtamen. Ab conicio sequi. Sol triduana tepidus curtus.', + summary: 'Alter quam nihil depereo adficio.', + publish: true, + keywords: ['bis', 'accommodo', 'patria'], + customOrder: 7704, + category: 'f9aed287-792b-4354-8bcf-776813e1b6cc', + tags: ['82fda4bd-329d-410b-a302-9bad76744959', '9ff5b9c5-1706-4bde-af9b-b80f3635a80f'], + }, + { + title: 'abduco vere fugit conspergo timidus', + body: + 'Defessus iste termes cedo acquiro vicissitudo spiritus. Volubilis dens summisse crapula cupiditas. Delectatio barba urbanus cresco omnis tergeo deludo.\n' + + 'Voluptatum cupiditate comprehendo verto trans. Clementia benigne videlicet. Teres dapifer tripudio ambulo catena dolore vapulus aequitas urbanus.\n' + + 'Praesentium agnosco censura cultura. Strenuus volutabrum despecto doloribus. Volutabrum cui pauper altus angustus.', + summary: 'Adeptio nostrum statua.', + publish: true, + keywords: ['defendo', 'decens', 'volutabrum'], + customOrder: 4705, + category: '5de47931-5a56-4615-a6cf-15109901bc62', + tags: ['de1756a0-4fd1-4d7e-9965-4507d291206f', '3b4f42a7-9fd6-4320-930f-fa3270830087'], + }, + { + title: 'cura ea cedo veritatis illo', + body: + 'Denuncio necessitatibus arto abduco amiculum. Absens tendo audentia denique conspergo curso stips decerno claudeo. Acervus virgo solus quo tondeo advoco quaerat vacuus.\n' + + 'Valeo coepi velum cum beneficium caries taceo tepesco. Tendo totam debitis subiungo arca venio adstringo accusantium sol super. Tenuis appono copia adversus.\n' + + 'Conicio quo tabgo aperio civis thermae incidunt capitulus. Terebro cribro ademptio adopto alius via aiunt aeger tempus. Solus iure bibo utilis verecundia sint adversus tepesco comparo.', + summary: + 'Coerceo cohors vinculum conitor crux provident corrupti commodo advenio deserunt.', + publish: false, + keywords: ['cimentarius', 'amitto', 'spoliatio'], + customOrder: 969, + category: '95d5d020-25c4-4952-a615-24f529da4ed8', + tags: ['2b52b1db-5dad-4e51-88fa-ec8581d439f9', '419831b4-f12e-48c4-99a3-94500b527ec5'], + }, + { + title: 'coniecto viridis adicio aptus aequitas', + body: + 'Decumbo et ad. Varietas approbo cunctatio comedo tenax. Vereor blanditiis cilicium urbs apparatus dedecor aperiam cubo.\n' + + 'Viduo convoco tabernus curatio comparo teneo caste. Conduco apto molestias modi amitto acsi calcar laborum subiungo. Spargo decipio cras carcer.\n' + + 'Vicinus comitatus spero acies cribro denique. Repudiandae spiculum tabernus voluptatem ascisco aegre comitatus acerbitas cogito. Agnitio veritatis compello apto viscus decet.', + summary: 'Defungo ducimus voro vado.', + publish: true, + keywords: ['vilis', 'demonstro', 'mollitia'], + customOrder: 8182, + category: 'f3519ed3-c43f-4982-99b7-e056c2621071', + tags: ['1653f2f4-735e-4816-b73c-7b6d878f72d2', '31d1d489-6f6c-44ad-9591-eb5873f74d32'], + }, + { + title: 'temperantia tonsor summisse labore aestas', + body: + 'Circumvenio solitudo desidero velociter thermae libero ambitus tantillus. Animi vergo coepi tunc urbanus. Cogo charisma culpo admitto labore inventore calamitas cariosus.\n' + + 'Comedo tabella modi aggero alias auxilium thesaurus asperiores alveus bene. Vulgivagus succedo suscipio eligendi vulgivagus reprehenderit titulus credo conitor. Eligendi tracto vester.\n' + + 'Animi taceo strues soluta stipes speculum. Tolero vulnero delectatio aestas admitto minus tonsor absens. Solitudo compello adsuesco vinco fuga calcar testimonium.', + summary: 'Patria beatae dens tenuis ventus corroboro catena adnuo comptus.', + publish: false, + keywords: ['nesciunt', 'cupio', 'dedecor'], + customOrder: 7334, + category: '5388c241-c9c9-477c-8e67-ea09fff97405', + tags: ['1efeeb0c-99f0-4755-99e1-0001fbd6370e', '5d3ed97a-574c-41d1-8dd9-81f22b6bd7bd'], + }, + { + title: 'demum stultus quam laborum collum', + body: + 'Corona aliqua suffoco thema defetiscor quisquam ter commodo. Cruentus eos suppono tremo somnus sonitus pecto valeo. Amet quidem ullam venia nisi umquam.\n' + + 'Trans patruus architecto auctus validus. Coaegresco vapulus desparatus. Uxor tripudio vae vinitor theologus.\n' + + 'Solvo hic rerum thesaurus crapula caecus trucido iste. Avarus suffragium corporis. Chirographum ab cubitum deludo ars tracto abbas depulso cresco absconditus.', + summary: 'Vapulus arbor eius velut sui termes.', + publish: true, + keywords: ['creptio', 'illum', 'taedium'], + customOrder: 1672, + category: 'e125d38d-a38e-45b3-868b-2e6838ae2552', + tags: ['c8a3bba2-e736-4a1e-ae94-2b9b4152751d', '7aaf4fd3-bb4e-4daa-b80f-50df9e25738c'], + }, + { + title: 'pax ipsam attonbitus capillus curatio', + body: + 'Amplus sperno quas. Conservo decimus aestivus vita patria crustulum sunt aperio capto uberrime. Autus ter voco astrum provident decet pecto.\n' + + 'Tergum carpo argentum nobis surgo. Est alter turpis. Tracto conduco deleniti molestiae cinis civitas talus antepono.\n' + + 'Vindico cuppedia dedico ustilo tredecim supplanto valeo. Vomica exercitationem votum delinquo colo contabesco consectetur velociter deinde temporibus. Cena cresco tergo carcer defluo virgo.', + summary: 'Calculus claudeo rem tum.', + publish: false, + keywords: ['vilis', 'toties', 'tunc'], + customOrder: 7021, + category: 'e3082f1a-5338-4d39-9437-f9e48055d2af', + tags: ['3050bc94-264c-458f-989f-a059e8cd94e0', '4accfde6-d25a-4bc4-b4b4-7b9132b342d8'], + }, + { + title: 'sapiente beatus centum vorago spiritus', + body: + 'Vorago talus ratione victus. Solus porro coerceo collum spiritus verecundia theca tredecim. Amplexus utique comburo veniam cotidie ventosus.\n' + + 'Nemo crastinus confugo aurum. Triumphus aequitas vulgo cumque solutio censura adduco animus. Comptus territo arma summisse vomer bestia.\n' + + 'Desparatus corroboro adduco tres patria averto. Civis valeo vociferor stipes barba. Sono tribuo deficio currus peior quas tibi.', + summary: 'Creator sapiente ademptio vulgaris custodia calculus.', + publish: true, + keywords: ['cum', 'dolorem', 'sonitus'], + customOrder: 618, + category: '11403e50-fe26-493b-98bc-e2978e8114cb', + tags: ['ffa3aaf9-90af-4758-88be-1990d903e713', 'c30270d2-4f09-4c54-98b8-95ef3b72c4b9'], + }, + { + title: 'caritas deduco trado statua ducimus', + body: + 'Voluptatibus asperiores ulterius aduro decet pauci peccatus vulgaris distinctio cavus. Cornu confero abduco tabula undique bos asper. Cado omnis cum adicio demens uxor virga acer bibo ater.\n' + + 'Libero autus anser comburo adulescens vigor ante cum triduana spiritus. Deinde cupio soluta ustulo peior amor incidunt tam. Vulgaris caveo ipsa ratione cibus.\n' + + 'Tollo venustas tenuis crux thesis summisse sperno trepide. Canonicus stultus coniuratio clamo conventus vinum. Volo caveo annus deludo eveniet decimus.', + summary: 'Cauda claro censura caste corrigo censura deinde concido coniuratio cibus.', + publish: true, + keywords: ['tempora', 'socius', 'abstergo'], + customOrder: 2309, + category: 'e0783c35-de51-489e-bb36-31a3b96a47f4', + tags: ['e7f4f0fc-55e7-4f8a-b632-a6acc5cf41c6', '52499d51-16c6-47dd-9919-3c4f4b8a51c0'], + }, +]; + +export const tagData = [ + { name: 'talus', desc: 'trucido amo bardus nulla degusto' }, + { name: 'studio', desc: 'patria deleniti volutabrum sponte vinitor' }, + { name: 'arx', desc: 'viduo vilitas videlicet baiulus canonicus' }, + { name: 'auctus', desc: 'aestus theologus deporto cunctatio caelum' }, + { name: 'tego', desc: 'cuius adduco armarium cunctatio error' }, + { name: 'ancilla', desc: 'adipisci audacia vorago somnus tumultus' }, + { + name: 'assentator', + desc: 'usitas vis consectetur arbustum tergum', + }, + { + name: 'victoria', + desc: 'damno voluntarius cimentarius deprimo aureus', + }, + { name: 'impedit', desc: 'statim cresco thorax abbas benigne' }, + { + name: 'tertius', + desc: 'denuo vicissitudo trepide agnitio cohibeo', + }, +]; + +export const commentData = [ + { + body: + 'Doloribus triduana libero tero laboriosam aspernatur desidero cilicium demens ubi. Cohaero ustilo acervus antepono antea balbus sulum angustus peccatus. Verus callide aptus deserunt infit defero.\n' + + 'Expedita teneo clam degenero suscipio aliquid. Crudelis amicitia congregatio tredecim. Cena auctor possimus.', + post: '24a677c6-face-4055-938e-4bb48f7ff915', + parent: '320a8f49-d394-44d0-aa50-27130d8d7183', + }, + { + body: + 'Degenero claudeo stillicidium cunctatio vicinus custodia videlicet vis tantum. Unde quas adsuesco. Valeo inventore cauda attollo.\n' + + 'Debeo vester amaritudo arguo natus cedo. Vox velum candidus barba tres aegrus. Cerno harum cruciamentum triumphus tondeo tres quod collum ventito socius.', + post: 'd7d919e8-e262-47ce-9e2d-6d0e3733eab4', + parent: 'e1ee7a47-a7f2-40df-a51d-d7174bfa7f7a', + }, + { + body: + 'Coerceo auctus occaecati ventus deporto terebro acidus talis credo tabula. Addo cruciamentum bene. Acquiro culpa alioqui.\n' + + 'Admiratio odit conspergo tactus quo officia supplanto blanditiis calculus. Sit debitis vestrum delectus patria tergiversatio circumvenio apostolus. Supplanto vesper stabilis.', + post: 'bf9b06e0-7807-4730-b683-b4beffd43b7c', + parent: '3d312618-1039-4678-bb78-f5dbf6c14db1', + }, + { + body: + 'Vae tamdiu reprehenderit tero derideo cuppedia arma. Ter amissio decerno agnosco earum. Benevolentia sodalitas beatae perspiciatis cavus agnitio sponte ultra super utrimque.\n' + + 'Delicate tumultus ipsa tergum vere. Voluptatum ultra carus. Abutor delibero pecco sollers tamquam commodo virtus vergo.', + post: 'bd46f0f3-5e19-425b-b476-dfabfe89e3bd', + parent: '332ab139-eba8-434e-b45b-120e8cf42a1a', + }, + { + body: + 'Vesper aptus delego valetudo vociferor desino harum. Tolero velum amissio tandem patria deinde vicinus facere defendo crebro. Talus approbo urbanus adnuo colligo defungo.\n' + + 'Antepono brevis supra summa tenetur depopulo. Paulatim dolorum votum stultus deputo volup curia. Vulticulus utroque carpo.', + post: 'fb1da82f-4911-4bc8-9f9e-ec8ab19deab2', + parent: '4a60b894-069e-4225-aabd-2cccefff292f', + }, + { + body: + 'Trucido calco totus ustulo patria templum non angelus. Amplitudo occaecati adficio somnus cubitum degero cupressus aliquid cinis accendo. Admitto auctus dolorum alioqui hic crepusculum adulatio.\n' + + 'Dolore fuga studio tero vox viscus iure vilis demitto. Considero torqueo speciosus thema carmen timidus terror utor alioqui angustus. Defessus reprehenderit careo debilito.', + post: '6138ace3-5cfe-4e4b-92fc-51e26ce1f8b8', + parent: 'cda51125-c0a6-44e2-a57a-a0f343ab9f53', + }, + { + body: + 'Quis ipsum acquiro bis vae arcus addo acervus antepono defero. In absens tres deputo thymum thorax centum chirographum cilicium expedita. Adstringo civitas delicate defetiscor undique alias validus curriculum defluo bellum.\n' + + 'Vehemens callide vulgivagus dolores tantum volubilis sufficio certe abeo sulum. Odit sed tres caput tremo. Adflicto vaco alter blanditiis delego aufero dignissimos enim defendo.', + post: '8175cb02-79b9-4a53-bf57-7de4e2108dbe', + parent: 'fd4d7a9b-73ac-490b-b17b-753d861a9314', + }, + { + body: + 'Summopere depraedor aegrotatio recusandae arca theologus appositus caritas rerum admoveo. Torqueo vulnus adiuvo vesper uterque. Cresco nihil vesper textor capio aufero vulgaris arca tertius tredecim.\n' + + 'Aurum commodi totidem compello venio ocer adeptio aegre. Capillus quae acies tubineus corrumpo denego. Sollers thema paens ustulo venio.', + post: '8b7013a3-9445-4d76-9234-8b17fefbe09c', + parent: 'e21d7993-94c9-4d49-bbf0-83eac9b9c88d', + }, + { + body: + 'Alter usque constans blandior admoveo ante tergeo una tum. Chirographum cognomen agnosco. Aegre contigo cupio cupio.\n' + + 'Decumbo capto ascit. Deporto ara cultura adaugeo aestas audentia. Aggredior aggero depereo civis.', + post: '2624c3d2-8e77-41d2-9bf6-ebf570a42439', + parent: 'db362594-7b00-46f4-8987-d06b97a1d228', + }, + { + body: + 'Contego condico vorago conatus. Texo autem vester deinde apparatus accommodo similique. Cornu vesper tremo concedo.\n' + + 'Coepi quam dignissimos aegre coniecto. Spiritus taedium timor earum. Adhaero suffoco verto beneficium derideo tantillus.', + post: '145be150-a533-4383-af8d-e200d051755d', + parent: '2c736ca2-0a9b-4119-b559-f13f23d0779b', + }, + { + body: + 'Veritatis ter reiciendis adimpleo. Tribuo creator cariosus solus adsum tempora. Cultura pecus ut conduco verumtamen arcus succurro sequi.\n' + + 'Civitas caput tabella commodi vado apto concedo. Curto volaticus virga veniam tribuo vespillo. Vulnero auxilium placeat comprehendo vicinus templum perferendis aqua adfectus.', + post: 'bb440164-4004-4d02-a247-77fb6c5a8ff3', + parent: '5c41cccf-0b75-41b7-ba45-d4a5ce5249c5', + }, + { + body: + 'Virgo ars celo comes ventosus corrigo candidus. Valetudo adflicto debitis cenaculum magni dignissimos combibo occaecati tepesco comprehendo. Timor magni copiose tum amaritudo vulgus celebrer carus vespillo aperiam.\n' + + 'Adhaero infit umquam subvenio villa delectus vulnus attonbitus veritatis. Ante exercitationem trans contigo ipsa vorago adipiscor vulariter. Adulescens suggero censura.', + post: '81575076-cf2b-4cd9-a1c3-f742d916f744', + parent: '93af6e22-240e-4aca-b3c1-0c74e84bfc9c', + }, + { + body: + 'Coma aedificium thymbra tenuis avarus. Vix barba bestia accendo vinitor ater tandem voluptate compello decumbo. Curatio urbanus laboriosam copia theologus demens aegrus.\n' + + 'Molestiae nam corporis decumbo iusto alias territo esse attollo. Statua coadunatio suscipit contigo trucido careo defero templum. Aptus colligo deprecator cogito maxime theologus acerbitas.', + post: 'a3e15a40-e242-4bea-b0ae-d3946a8350a1', + parent: 'eb8d9cc2-d029-4320-af00-ed3be06f2ae3', + }, + { + body: + 'Cui alii capillus. Alveus varius commodi solus cogito. Verus maiores et.\n' + + 'Avarus surgo coniuratio impedit conservo doloremque odit. Incidunt vulpes blandior curso solum veritatis spoliatio. Quo curso thymum theatrum sto validus defetiscor paens cursim.', + post: '37a62506-70c1-40cd-aa73-8191d5627f6d', + parent: 'e1f63e02-6afe-4fff-9c58-2072285e0d06', + }, + { + body: + 'Cras tepidus strenuus dolor decor subiungo verecundia. Delibero defessus vix conduco ceno. Cras cena atque.\n' + + 'Tenus veritas valens ubi conqueror velociter excepturi. Audeo arbitro cunae amet suspendo. Crapula sodalitas ratione thalassinus vesper xiphias aegre.', + post: '7dec60d3-d491-4008-93d8-9dcb971e2bc6', + parent: '3462079d-b172-4a4a-b8a0-23771a64f52b', + }, + { + body: + 'Tempus arca consequatur sublime adduco suasoria. Verumtamen pauper decet suadeo ipsa ocer tolero. Strenuus bellum thalassinus tripudio dapifer atrocitas unde umquam tantum.\n' + + 'Averto amaritudo amicitia collum. Adflicto desino tersus adflicto cras vitium defetiscor quae via cibus. Canto mollitia tabula comminor speciosus repellendus.', + post: '23194290-e301-4c21-9283-6d0d4adbf690', + parent: '565d8ceb-1a2a-47db-a249-bf0a9d415740', + }, + { + body: + 'Cupressus doloribus calamitas tener. Voluptates cubicularis atqui. Tergo tergo adstringo.\n' + + 'Dicta atrox pax audacia. Vulgivagus temeritas audax tamdiu qui vigilo universe. Coniuratio vitium corporis tener aeternus agnitio.', + post: 'ee02b43f-e707-4623-badf-f882191803f2', + parent: 'ccb90772-e623-4919-8073-80f17bfc9a3c', + }, + { + body: + 'Terminatio carcer cogo sed cultellus temeritas. Quia considero exercitationem sufficio dignissimos voro officia cilicium asperiores aegrotatio. Amitto adduco surgo paulatim decumbo amitto.\n' + + 'Attonbitus ab averto. Acidus terebro teres thesis xiphias dolor. Caute amo error uter supra sophismata comprehendo volo appono.', + post: 'f06ec121-2f2c-4b2c-8864-507149face8d', + parent: 'a01f8315-4989-4a52-94c5-3b01760eac65', + }, + { + body: + 'Comburo deleniti vix tempore. Id ab quasi ars cervus benigne pecto. Vigilo annus averto acidus temeritas ater.\n' + + 'Vomer pauci catena sperno abstergo ventito vinculum vilitas. Culpo maiores absconditus stella optio facere spiculum nostrum vulgivagus decimus. Super facere varius commodi concedo deleniti conforto.', + post: '47d8a591-436f-42d8-9e99-5aa950b62107', + parent: '0be7b91e-e781-4c35-80f1-a25cccabfa8b', + }, + { + body: + 'Vapulus arx vorago. Utor vorago admitto officia advoco casso ambitus subiungo. Constans corona depopulo vulgaris alius subseco socius vomer animadverto.\n' + + 'Deprecator sed quasi vetus tenax theologus. Sol totus ipsam animus sustineo textilis color tener vir. Coadunatio pecco vel adhuc capto decor comminor suspendo accedo tonsor.', + post: 'b15d711b-3d5e-4dfd-9bc7-9a848f58e604', + parent: 'a64987c2-0256-4d1d-b271-26c65e3cb4df', + }, +]; diff --git a/test/test-sequencer.ts b/test/test-sequencer.ts new file mode 100644 index 0000000..8e57df5 --- /dev/null +++ b/test/test-sequencer.ts @@ -0,0 +1,18 @@ +import path from 'path'; + +import { Test } from '@jest/test-result'; +import TestSequencer from '@jest/test-sequencer'; + +export default class CustomSequencer extends TestSequencer { + private getOrder(filePath: string): number { + const filename = path.basename(filePath); + const match = filename.match(/^(\d+)-/); + return match ? parseInt(match[1], 10) : Infinity; + } + + sort(tests: Array) { + return [...tests].sort((a, b) => { + return this.getOrder(a.path) - this.getOrder(b.path); + }); + } +}