Here is my example factory code
import { defineFactory } from '@julr/factorify';
interface Member {
createId:string
username:string
password:string
name:string
refreshToken:string
id:string
type:string
loginType:string
nickname:string
mobileNumber:string
email:string
birthYear:string
birthday:string
isAutoLogin:boolean
}
// it has memberId column which is FK of member.id
interface LoginHsitory {
id:number
currentIp:string
}
export const LoginHistoryFacotry = defineFactory<LoginHsitory>('member_login_history', ({ faker, isStubbed }) => ({
id: +faker.random.numeric(4),
currentIp:faker.random.alpha(6),
}))
.build()
export const MemberFactory = defineFactory<Member>('member', ({ faker, isStubbed }) => ({
createId: faker.random.alpha(6),
username: faker.random.alpha(6),
password: faker.random.alpha(6),
name: faker.random.alpha(6),
refreshToken: faker.random.alpha(6),
id: faker.random.alpha(6),
type: faker.random.alpha(6),
loginType: faker.random.alpha(6),
nickname: faker.random.alpha(6),
mobileNumber: faker.random.alpha(6),
email: faker.random.alpha(6),
birthYear: faker.random.alpha(6),
birthday: faker.random.alpha(6),
isAutoLogin: true,
}))
.hasMany('loginHistories',() => LoginHistoryFacotry,{
localKey: 'id',
foreignKey: 'memberId'
})
.build()
and this is my usage code
import { MemberFactory } from '../defineFactory';
import { defineFactorifyConfig } from '@julr/factorify';
describe('MemberFactory Test', () => {
let disconnect:any;
beforeAll(() => {
disconnect = defineFactorifyConfig({
casing:{
insert:'camel',
return:'camel'
},
database: {
// See https://knexjs.org/guide/#configuration-options
// for more information about the possible options
client: 'mysql',
connection: {
host: '127.0.0.1',
port: 8922,
user: 'root',
password: 'test',
database: 'eco_test',
},
},
})
})
it('MemberFactory With LoginHistory Test', async () => {
// Given
const user = await MemberFactory.with('loginHistories',1).create()
});
});
But await MemberFactory.with('loginHistories',1).create()
invoke error below.
insert into
member_login_history (
currentIp,
id) values ('qswwnh', 7921) - ER_NO_DEFAULT_FOR_FIELD: Field 'memberId' doesn't have a default value Error: ER_NO_DEFAULT_FOR_FIELD: Field 'memberId' doesn't have a default value
My member_login_history Table looks like this
How can I make await MemberFactory.with('loginHistories',1).create()
work ?
Pay now to fund the work behind this issue.
Get updates on progress being made.
Maintainer is rewarded once the issue is completed.
You're funding impactful open source efforts
You want to contribute to this effort
You want to get funding like this too