mockforge_data/
provider.rs

1use crate::faker::EnhancedFaker;
2// NOTE: mockforge_core dependency removed to break circular dependency
3// The provider registration functionality has been moved to a higher-level crate
4
5// NOTE: FakerProvider trait and registration removed to break circular dependency
6// This functionality should be implemented in a higher-level crate that depends on both
7// mockforge-core and mockforge-data
8
9struct DataFakerProvider(std::sync::Mutex<EnhancedFaker>);
10
11impl DataFakerProvider {
12    fn new() -> Self {
13        Self(std::sync::Mutex::new(EnhancedFaker::new()))
14    }
15}
16
17// NOTE: FakerProvider implementation removed - see comment above
18/*
19impl FakerProvider for DataFakerProvider {
20    fn uuid(&self) -> String {
21        self.0.lock().unwrap().uuid()
22    }
23    fn email(&self) -> String {
24        self.0.lock().unwrap().email()
25    }
26    fn name(&self) -> String {
27        self.0.lock().unwrap().name()
28    }
29    fn address(&self) -> String {
30        self.0.lock().unwrap().address()
31    }
32    fn phone(&self) -> String {
33        self.0.lock().unwrap().phone()
34    }
35    fn company(&self) -> String {
36        self.0.lock().unwrap().company()
37    }
38    fn url(&self) -> String {
39        self.0.lock().unwrap().url()
40    }
41    fn ip(&self) -> String {
42        self.0.lock().unwrap().ip_address()
43    }
44    fn color(&self) -> String {
45        self.0.lock().unwrap().color()
46    }
47    fn word(&self) -> String {
48        self.0.lock().unwrap().word()
49    }
50    fn sentence(&self) -> String {
51        self.0.lock().unwrap().sentence()
52    }
53    fn paragraph(&self) -> String {
54        self.0.lock().unwrap().paragraph()
55    }
56}
57*/
58
59/// Register the mockforge-data backed faker provider with core templating.
60/// NOTE: Disabled to break circular dependency
61pub fn register_core_faker_provider() {
62    // Disabled - functionality moved to higher-level crate
63    // let provider: Arc<dyn FakerProvider + Send + Sync> = Arc::new(DataFakerProvider::new());
64    // register_faker_provider(provider);
65}
66
67#[cfg(test)]
68mod tests {
69    use super::*;
70
71    #[test]
72    fn test_data_faker_provider_new() {
73        let _provider = DataFakerProvider::new();
74        // Should create successfully
75    }
76
77    #[test]
78    fn test_data_faker_provider_uuid() {
79        let provider = DataFakerProvider::new();
80        let mut faker = provider.0.lock().unwrap();
81        let uuid = faker.uuid();
82
83        assert_eq!(uuid.len(), 36);
84        assert!(uuid.contains('-'));
85    }
86
87    #[test]
88    fn test_data_faker_provider_email() {
89        let provider = DataFakerProvider::new();
90        let mut faker = provider.0.lock().unwrap();
91        let email = faker.email();
92
93        assert!(!email.is_empty());
94        assert!(email.contains('@'));
95    }
96
97    #[test]
98    fn test_data_faker_provider_name() {
99        let provider = DataFakerProvider::new();
100        let mut faker = provider.0.lock().unwrap();
101        let name = faker.name();
102
103        assert!(!name.is_empty());
104    }
105
106    #[test]
107    fn test_data_faker_provider_address() {
108        let provider = DataFakerProvider::new();
109        let mut faker = provider.0.lock().unwrap();
110        let address = faker.address();
111
112        assert!(!address.is_empty());
113    }
114
115    #[test]
116    fn test_data_faker_provider_phone() {
117        let provider = DataFakerProvider::new();
118        let mut faker = provider.0.lock().unwrap();
119        let phone = faker.phone();
120
121        assert!(!phone.is_empty());
122    }
123
124    #[test]
125    fn test_data_faker_provider_company() {
126        let provider = DataFakerProvider::new();
127        let mut faker = provider.0.lock().unwrap();
128        let company = faker.company();
129
130        assert!(!company.is_empty());
131    }
132
133    #[test]
134    fn test_data_faker_provider_url() {
135        let provider = DataFakerProvider::new();
136        let mut faker = provider.0.lock().unwrap();
137        let url = faker.url();
138
139        assert!(url.starts_with("https://"));
140    }
141
142    #[test]
143    fn test_data_faker_provider_ip() {
144        let provider = DataFakerProvider::new();
145        let mut faker = provider.0.lock().unwrap();
146        let ip = faker.ip_address();
147
148        assert!(!ip.is_empty());
149        assert!(ip.contains('.'));
150    }
151
152    #[test]
153    fn test_data_faker_provider_color() {
154        let provider = DataFakerProvider::new();
155        let mut faker = provider.0.lock().unwrap();
156        let color = faker.color();
157
158        let valid_colors = [
159            "red", "blue", "green", "yellow", "purple", "orange", "pink", "brown", "black", "white",
160        ];
161        assert!(valid_colors.contains(&color.as_str()));
162    }
163
164    #[test]
165    fn test_data_faker_provider_word() {
166        let provider = DataFakerProvider::new();
167        let mut faker = provider.0.lock().unwrap();
168        let word = faker.word();
169
170        assert!(!word.is_empty());
171    }
172
173    #[test]
174    fn test_data_faker_provider_sentence() {
175        let provider = DataFakerProvider::new();
176        let mut faker = provider.0.lock().unwrap();
177        let sentence = faker.sentence();
178
179        assert!(!sentence.is_empty());
180    }
181
182    #[test]
183    fn test_data_faker_provider_paragraph() {
184        let provider = DataFakerProvider::new();
185        let mut faker = provider.0.lock().unwrap();
186        let paragraph = faker.paragraph();
187
188        assert!(!paragraph.is_empty());
189    }
190
191    #[test]
192    fn test_register_core_faker_provider() {
193        // Just test that registration doesn't panic
194        register_core_faker_provider();
195    }
196}