summaryrefslogtreecommitdiffstats
path: root/tests/fixtures
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-09-18 14:58:58 +0200
committerDanilo M. <danix@danix.xyz>2026-09-18 14:58:58 +0200
commit3303c7855cb22a6bb4f36aa1a17707187320f5d2 (patch)
tree6a2328cffaab820c8247f267785cc2782d77e154 /tests/fixtures
parent7d4654536de5be4bd3555eb4b81a2e07c1d4148d (diff)
downloadqtmaildir-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.vcf5
-rw-r--r--tests/fixtures/contact_extra.vcf9
-rw-r--r--tests/fixtures/contact_folded.vcf7
-rw-r--r--tests/fixtures/contact_lowercase.vcf5
-rw-r--r--tests/fixtures/contact_noemail.vcf7
-rw-r--r--tests/fixtures/contact_noname.vcf4
-rw-r--r--tests/fixtures/contact_params.vcf6
-rw-r--r--tests/fixtures/contact_plain.vcf6
-rw-r--r--tests/fixtures/contact_twoemails.vcf6
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