macro_rules! define {
($($tokens:tt)*) => { ... };
}Expand description
Defines a Factory.
ยงUsage
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize)]
struct Post {
id: u16,
title: String,
approved: bool,
}
beaver::define! {
PostFactory (Post) {
id -> |n| n,
title -> |n| format!("post-{}", n),
approved -> |_| false,
}
}If you want to use a sub factory, you can use build(n) like the following. (Example)
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize)]
struct File {
id: u16,
path: String,
}
#[derive(Serialize, Deserialize)]
struct User {
id: u16,
name: String,
file: File,
}
beaver::define! {
UserFactory (User) {
id -> |n| n,
name -> |n| format!("user-{}", n),
file -> |n| FileFactory::build(n),
}
}
beaver::define! {
FileFactory (File) {
id -> |n| n,
path -> |n| format!("path/to/file-{}", n),
}
}If you want to use a vector of sub factories, you can use build_list(number, n) like the following. (Example)
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize)]
struct Post {
id: u16,
title: String,
approved: bool,
tags: Vec<Tag>,
}
#[derive(Serialize, Deserialize)]
struct Tag {
id: u16,
name: String,
}
beaver::define! {
PostFactory (Post) {
id -> |n| n,
title -> |n| format!("post-{}", n),
approved -> |_| true,
tags -> |n| TagFactory::build_list(3, n),
}
}
beaver::define! {
TagFactory (Tag) {
id -> |n| beaver::sequence(100, n),
name -> |n| format!("tag-{}", n),
}
}If you want to use factories outside modules, you need to make factories public. (Example)
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize)]
// `Post` needs to be public.
pub struct Post {
id: u16,
title: String,
approved: bool,
}
beaver::define! {
// `PostFactory` needs to be public.
pub PostFactory (Post) {
id -> |n| n,
title -> |n| format!("post-{}", n),
approved -> |_| false,
}
}