Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Empty file removed __fixtures__/.gitkeep
Empty file.
13 changes: 13 additions & 0 deletions __fixtures__/account-password.mts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
/**
* @file Fixtures - ACCOUNT_PASSWORD
* @module fixtures/ACCOUNT_PASSWORD
*/

/**
* User account password.
*
* @const {string} ACCOUNT_PASSWORD
*/
const ACCOUNT_PASSWORD: string = 'password'

export default ACCOUNT_PASSWORD
13 changes: 13 additions & 0 deletions __fixtures__/date.mts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
/**
* @file Fixtures - date
* @module fixtures/date
*/

/**
* Fixture date.
*
* @const {Date} date
*/
const date: Date = new Date(2025, 2, 13)

export default date
55 changes: 55 additions & 0 deletions __tests__/utils/account.factory.mts
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
/**
* @file Test Utilities - AccountFactory
* @module tests/utils/AccountFactory
*/

import Role from '#accounts/enums/role'
import ACCOUNT_PASSWORD from '#fixtures/account-password'
import SeedFactory from '#tests/utils/seed.factory'
import type { AccountDocument } from '@flex-development/sneusers/accounts'
import bcrypt from 'bcrypt'
import { ObjectId } from 'bson'
import random from 'random-item'

/**
* Account document factory.
*
* @class
* @extends {SeedFactory<AccountDocument>}
*/
class AccountFactory extends SeedFactory<AccountDocument> {
/**
* Get a random user account role.
*
* @public
* @static
*
* @return {Role}
* Random user account role
*/
public static get role(): Role {
return random(Object.values(Role))
}

/**
* Create a random account collection document.
*
* @public
* @instance
*
* @return {AccountDocument}
* Account collection document
*/
public makeOne(): AccountDocument {
return {
_id: new ObjectId(),
created_at: Date.now(),
email: this.faker.internet.email({ provider: 'test.sneusers.app' }),
password: bcrypt.hashSync(ACCOUNT_PASSWORD, 10),
role: AccountFactory.role,
updated_at: null
}
}
}

export default AccountFactory
13 changes: 13 additions & 0 deletions __tests__/utils/error-payload-keys.mts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
/**
* @file Test Utilities - ERROR_PAYLOAD_KEYS
* @module tests/utils/ERROR_PAYLOAD_KEYS
*/

/**
* List of expected error payload keys.
*
* @const {string[]} ERROR_PAYLOAD_KEYS
*/
const ERROR_PAYLOAD_KEYS: string[] = ['code', 'id', 'message', 'reason']

export default ERROR_PAYLOAD_KEYS
7 changes: 7 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,24 +29,31 @@
"src"
],
"exports": {
"./accounts": "./src/subdomains/accounts/index.mts",
"./accounts/errors": "./src/subdomains/accounts/errors/index.mts",
"./database": "./src/database/index.mts",
"./errors": "./src/errors/index.mts",
"./package.json": "./package.json",
"./types": "./src/types.mts"
},
"imports": {
"#accounts/index": null,
"#accounts/*/index": null,
"#accounts/*": "./src/subdomains/accounts/*.mts",
"#app": "./src/app.mts",
"#database/index": null,
"#database/*": "./src/database/*.mts",
"#decorators/*": "./src/decorators/*.mts",
"#enums/*": "./src/enums/*.mts",
"#errors/index": null,
"#errors/*": "./src/errors/*.mts",
"#filters/*": "./src/filters/*.mts",
"#fixtures/*": "./__fixtures__/*.mts",
"#hooks/*": "./src/hooks/*.mts",
"#interfaces/*": "./src/interfaces/*.mts",
"#models/*": "./src/models/*.mts",
"#modules/*": "./src/modules/*.mts",
"#pipes/*": "./src/pipes/*.mts",
"#tests/*": "./__tests__/*.mts",
"#types/*": "./src/types/*.mts"
},
Expand Down
Loading