diff options
| author | Danilo M. <danix@danix.xyz> | 2026-09-18 14:58:58 +0200 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-09-18 14:58:58 +0200 |
| commit | 3303c7855cb22a6bb4f36aa1a17707187320f5d2 (patch) | |
| tree | 6a2328cffaab820c8247f267785cc2782d77e154 /tests/fixtures | |
| parent | 7d4654536de5be4bd3555eb4b81a2e07c1d4148d (diff) | |
| download | qtmaildir-3303c7855cb22a6bb4f36aa1a17707187320f5d2.tar.gz qtmaildir-3303c7855cb22a6bb4f36aa1a17707187320f5d2.zip | |
feat: add ContactStore, the vCard address-book parse
Reads a vdirsyncer contacts directory of vCard 3.0 files into a
QList<Contact> for the completion work that follows. Pure over values,
no widget and no QCompleter, so the parse is testable without a window.
unfold() joins folded lines before any field is looked at; parseCard()
splits property from value on the first colon outside a quoted
parameter, unescapes FN, and yields one contact per EMAIL line;
loadDirectory() walks recursively, skips unreadable or addressless
cards, de-duplicates on the address case-insensitively, and sorts by
name then address. N, PHOTO, ADR and TEL are deliberately not used.
23 new tests. No user-facing strings, so no tr() change.
Diffstat (limited to 'tests/fixtures')
| -rw-r--r-- | tests/fixtures/contact_escaped.vcf | 5 | ||||
| -rw-r--r-- | tests/fixtures/contact_extra.vcf | 9 | ||||
| -rw-r--r-- | tests/fixtures/contact_folded.vcf | 7 | ||||
| -rw-r--r-- | tests/fixtures/contact_lowercase.vcf | 5 | ||||
| -rw-r--r-- | tests/fixtures/contact_noemail.vcf | 7 | ||||
| -rw-r--r-- | tests/fixtures/contact_noname.vcf | 4 | ||||
| -rw-r--r-- | tests/fixtures/contact_params.vcf | 6 | ||||
| -rw-r--r-- | tests/fixtures/contact_plain.vcf | 6 | ||||
| -rw-r--r-- | tests/fixtures/contact_twoemails.vcf | 6 |
9 files changed, 55 insertions, 0 deletions
diff --git a/tests/fixtures/contact_escaped.vcf b/tests/fixtures/contact_escaped.vcf new file mode 100644 index 0000000..4467562 --- /dev/null +++ b/tests/fixtures/contact_escaped.vcf @@ -0,0 +1,5 @@ +BEGIN:VCARD +VERSION:3.0 +FN:Rossi\, Mario +EMAIL:mario@example.org +END:VCARD diff --git a/tests/fixtures/contact_extra.vcf b/tests/fixtures/contact_extra.vcf new file mode 100644 index 0000000..1f5223a --- /dev/null +++ b/tests/fixtures/contact_extra.vcf @@ -0,0 +1,9 @@ +BEGIN:VCARD +VERSION:3.0 +N:Extra;Fields;;; +FN:Extra Fields +ADR;TYPE=HOME:;;2 Example Rd;Exampleton;;11111;Examplestan +TEL;TYPE=CELL:+1-555-0199 +PHOTO;ENCODING=b;TYPE=JPEG:iVBORw0KGgo= +EMAIL:extra@example.org +END:VCARD diff --git a/tests/fixtures/contact_folded.vcf b/tests/fixtures/contact_folded.vcf new file mode 100644 index 0000000..8ef8729 --- /dev/null +++ b/tests/fixtures/contact_folded.vcf @@ -0,0 +1,7 @@ +BEGIN:VCARD +VERSION:3.0 +FN:Fold + ed Person +EMAIL:folded@exam + ple.org +END:VCARD diff --git a/tests/fixtures/contact_lowercase.vcf b/tests/fixtures/contact_lowercase.vcf new file mode 100644 index 0000000..9a2ce7b --- /dev/null +++ b/tests/fixtures/contact_lowercase.vcf @@ -0,0 +1,5 @@ +BEGIN:VCARD +VERSION:3.0 +fn:Carol Example +email:carol@example.org +END:VCARD diff --git a/tests/fixtures/contact_noemail.vcf b/tests/fixtures/contact_noemail.vcf new file mode 100644 index 0000000..6fbd458 --- /dev/null +++ b/tests/fixtures/contact_noemail.vcf @@ -0,0 +1,7 @@ +BEGIN:VCARD +VERSION:3.0 +FN:No Address +TEL;TYPE=CELL:+1-555-0100 +ADR;TYPE=HOME:;;1 Example St;Exampleville;;00000;Examplestan +PHOTO;ENCODING=b;TYPE=JPEG:iVBORw0KGgo= +END:VCARD diff --git a/tests/fixtures/contact_noname.vcf b/tests/fixtures/contact_noname.vcf new file mode 100644 index 0000000..c9bf087 --- /dev/null +++ b/tests/fixtures/contact_noname.vcf @@ -0,0 +1,4 @@ +BEGIN:VCARD +VERSION:3.0 +EMAIL:noname@example.org +END:VCARD diff --git a/tests/fixtures/contact_params.vcf b/tests/fixtures/contact_params.vcf new file mode 100644 index 0000000..f935ce5 --- /dev/null +++ b/tests/fixtures/contact_params.vcf @@ -0,0 +1,6 @@ +BEGIN:VCARD +VERSION:3.0 +FN:Bob Example +EMAIL;TYPE=WORK:bob@example.org +EMAIL;TYPE=INTERNET;LABEL="work: main":bob.work@example.org +END:VCARD diff --git a/tests/fixtures/contact_plain.vcf b/tests/fixtures/contact_plain.vcf new file mode 100644 index 0000000..7daaa01 --- /dev/null +++ b/tests/fixtures/contact_plain.vcf @@ -0,0 +1,6 @@ +BEGIN:VCARD +VERSION:3.0 +N:Example;Alice;;; +FN:Alice Example +EMAIL:alice@example.org +END:VCARD diff --git a/tests/fixtures/contact_twoemails.vcf b/tests/fixtures/contact_twoemails.vcf new file mode 100644 index 0000000..41325ed --- /dev/null +++ b/tests/fixtures/contact_twoemails.vcf @@ -0,0 +1,6 @@ +BEGIN:VCARD +VERSION:3.0 +FN:Dana Two +EMAIL:dana@example.org +EMAIL;TYPE=HOME:dana.home@example.org +END:VCARD |
