Skip to main content

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