Skip to content

Commit 8f73166

Browse files
committed
Added split name unit tests
1 parent f9b8a2a commit 8f73166

File tree

1 file changed

+169
-0
lines changed

1 file changed

+169
-0
lines changed

crates/bitwarden-exporters/src/cxf/identity.rs

Lines changed: 169 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -290,3 +290,172 @@ fn split_name(
290290
}
291291
})
292292
}
293+
294+
#[cfg(test)]
295+
mod tests {
296+
use super::*;
297+
298+
#[test]
299+
fn test_split_name_none() {
300+
let full_name = None;
301+
let (first, last) = split_name(&full_name);
302+
assert_eq!(first, None);
303+
assert_eq!(last, None);
304+
}
305+
306+
#[test]
307+
fn test_split_name_empty_string() {
308+
let full_name = Some(EditableField {
309+
value: EditableFieldString("".to_string()),
310+
label: None,
311+
id: None,
312+
extensions: None,
313+
});
314+
let (first, last) = split_name(&full_name);
315+
assert_eq!(first, None);
316+
assert_eq!(last, None);
317+
}
318+
319+
#[test]
320+
fn test_split_name_whitespace_only() {
321+
let full_name = Some(EditableField {
322+
value: EditableFieldString(" \t\n ".to_string()),
323+
label: None,
324+
id: None,
325+
extensions: None,
326+
});
327+
let (first, last) = split_name(&full_name);
328+
assert_eq!(first, None);
329+
assert_eq!(last, None);
330+
}
331+
332+
#[test]
333+
fn test_split_name_single_name() {
334+
let full_name = Some(EditableField {
335+
value: EditableFieldString("John".to_string()),
336+
label: None,
337+
id: None,
338+
extensions: None,
339+
});
340+
let (first, last) = split_name(&full_name);
341+
assert_eq!(first, Some("John".to_string()));
342+
assert_eq!(last, None);
343+
}
344+
345+
#[test]
346+
fn test_split_name_single_name_with_whitespace() {
347+
let full_name = Some(EditableField {
348+
value: EditableFieldString(" John ".to_string()),
349+
label: None,
350+
id: None,
351+
extensions: None,
352+
});
353+
let (first, last) = split_name(&full_name);
354+
assert_eq!(first, Some("John".to_string()));
355+
assert_eq!(last, None);
356+
}
357+
358+
#[test]
359+
fn test_split_name_first_last() {
360+
let full_name = Some(EditableField {
361+
value: EditableFieldString("John Doe".to_string()),
362+
label: None,
363+
id: None,
364+
extensions: None,
365+
});
366+
let (first, last) = split_name(&full_name);
367+
assert_eq!(first, Some("John".to_string()));
368+
assert_eq!(last, Some("Doe".to_string()));
369+
}
370+
371+
#[test]
372+
fn test_split_name_first_middle_last() {
373+
let full_name = Some(EditableField {
374+
value: EditableFieldString("John Michael Doe".to_string()),
375+
label: None,
376+
id: None,
377+
extensions: None,
378+
});
379+
let (first, last) = split_name(&full_name);
380+
assert_eq!(first, Some("John".to_string()));
381+
assert_eq!(last, Some("Michael Doe".to_string()));
382+
}
383+
384+
#[test]
385+
fn test_split_name_multiple_middle_names() {
386+
let full_name = Some(EditableField {
387+
value: EditableFieldString("John Michael Andrew Doe".to_string()),
388+
label: None,
389+
id: None,
390+
extensions: None,
391+
});
392+
let (first, last) = split_name(&full_name);
393+
assert_eq!(first, Some("John".to_string()));
394+
assert_eq!(last, Some("Michael Andrew Doe".to_string()));
395+
}
396+
397+
#[test]
398+
fn test_split_name_complex_surname() {
399+
let full_name = Some(EditableField {
400+
value: EditableFieldString("Jane van der Berg".to_string()),
401+
label: None,
402+
id: None,
403+
extensions: None,
404+
});
405+
let (first, last) = split_name(&full_name);
406+
assert_eq!(first, Some("Jane".to_string()));
407+
assert_eq!(last, Some("van der Berg".to_string()));
408+
}
409+
410+
#[test]
411+
fn test_split_name_hyphenated_surname() {
412+
let full_name = Some(EditableField {
413+
value: EditableFieldString("Mary Smith-Johnson".to_string()),
414+
label: None,
415+
id: None,
416+
extensions: None,
417+
});
418+
let (first, last) = split_name(&full_name);
419+
assert_eq!(first, Some("Mary".to_string()));
420+
assert_eq!(last, Some("Smith-Johnson".to_string()));
421+
}
422+
423+
#[test]
424+
fn test_split_name_extra_whitespace() {
425+
let full_name = Some(EditableField {
426+
value: EditableFieldString(" John Michael Doe ".to_string()),
427+
label: None,
428+
id: None,
429+
extensions: None,
430+
});
431+
let (first, last) = split_name(&full_name);
432+
assert_eq!(first, Some("John".to_string()));
433+
assert_eq!(last, Some("Michael Doe".to_string()));
434+
}
435+
436+
#[test]
437+
fn test_split_name_special_characters() {
438+
let full_name = Some(EditableField {
439+
value: EditableFieldString("José María González".to_string()),
440+
label: None,
441+
id: None,
442+
extensions: None,
443+
});
444+
let (first, last) = split_name(&full_name);
445+
assert_eq!(first, Some("José".to_string()));
446+
assert_eq!(last, Some("María González".to_string()));
447+
}
448+
449+
#[test]
450+
fn test_split_name_single_character_names() {
451+
let full_name = Some(EditableField {
452+
value: EditableFieldString("A B C".to_string()),
453+
label: None,
454+
id: None,
455+
extensions: None,
456+
});
457+
let (first, last) = split_name(&full_name);
458+
assert_eq!(first, Some("A".to_string()));
459+
assert_eq!(last, Some("B C".to_string()));
460+
}
461+
}

0 commit comments

Comments
 (0)