Skip to main content

faker_rust/default/
construction.rs

1//! Construction generator - generates random construction-related data
2
3use crate::base::sample;
4use crate::locale::fetch_locale;
5
6/// Generate a random construction material
7pub fn material() -> String {
8    fetch_locale("construction.materials", "en")
9        .map(|v| sample(&v))
10        .unwrap_or_else(|| "Steel".to_string())
11}
12
13/// Generate a random subcontract category
14pub fn subcontract_category() -> String {
15    fetch_locale("construction.subcontract_categories", "en")
16        .map(|v| sample(&v))
17        .unwrap_or_else(|| "Plumbing".to_string())
18}
19
20/// Generate a random heavy equipment name
21pub fn heavy_equipment() -> String {
22    fetch_locale("construction.heavy_equipment", "en")
23        .map(|v| sample(&v))
24        .unwrap_or_else(|| "Excavator".to_string())
25}
26
27/// Generate a random trade
28pub fn trade() -> String {
29    fetch_locale("construction.trades", "en")
30        .map(|v| sample(&v))
31        .unwrap_or_else(|| "Carpenter".to_string())
32}
33
34/// Generate a random standard cost code
35pub fn standard_cost_code() -> String {
36    fetch_locale("construction.standard_cost_codes", "en")
37        .map(|v| sample(&v))
38        .unwrap_or_else(|| "1000".to_string())
39}
40
41/// Generate a random construction role
42pub fn role() -> String {
43    fetch_locale("construction.roles", "en")
44        .map(|v| sample(&v))
45        .unwrap_or_else(|| "Project Manager".to_string())
46}
47
48#[cfg(test)]
49mod tests {
50    use super::*;
51
52    #[test]
53    fn test_material() {
54        let m = material();
55        assert!(!m.is_empty());
56    }
57}