fixtures: seed an unsynced Curies group
Marie and Pierre share Curies, a group no book will claim,
so a sync: rename in the admin UI brings them into the frame.
Two more cards move the replayed ctag from nineteen up to twenty-one;
the recorded requests are untouched, only four responses re-run.
Assisted-by: Claude Opus 5 via Claude Code
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
diff --git a/test/fixture_data.rb b/test/fixture_data.rb
index 67bae0e..67c3c3f 100644
--- a/test/fixture_data.rb
+++ b/test/fixture_data.rb
@@ -20,7 +20,7 @@ module FixtureData
# The first card is stamped now and each one after it is #SPREAD times
# older than the last, so the seed book runs from this minute out to
- # about five years at nineteen cards. Computed rather than tabulated
+ # about thirty years at twenty-one cards. Computed rather than tabulated
# because a table runs out: adding cards past the end of one either
# wraps — two cards sharing a stamp, and a recently-updated list that
# opens on a tie — or leaves the tail unstamped. Spread rather than
@@ -93,16 +93,21 @@ module FixtureData
cards.keys.grep(/\Aunsynced-/)
end
+ # A household nobody syncs yet: unsynced cards in a group with no
+ # `sync:` prefix, so joining them to a book is one rename in the admin UI.
+ CURIES = %w[unsynced-marie unsynced-pierre].freeze #: Array[String]
+
# The third is `sync:*`, holding every card but the unsynced ones, so
# every user's book is the rest of the seed — the replay's included,
# whose recorded sessions saw every card they asked for — and the
# admin UI still shows a contact that is in nobody's
- # (docs/plans/2026-09-12-per-user-books.md).
+ # (docs/plans/2026-09-12-per-user-books.md). The fourth is CURIES'.
#: (ProTacts::Store store) -> void
def self.seed_groups(store)
seed_group(store, name: "Booles", lines: HOUSEHOLD, members: MEMBERS)
seed_group(store, members: birthday_cards)
seed_group(store, name: ProTacts::Store::EVERYONE, members: cards.keys - unsynced_cards)
+ seed_group(store, name: "Curies", members: CURIES)
end
# A group, seeded without a change-log entry for any member it moves
diff --git a/test/fixtures/cards/unsynced-marie.vcf b/test/fixtures/cards/unsynced-marie.vcf
new file mode 100644
index 0000000..2024c2d
--- /dev/null
+++ b/test/fixtures/cards/unsynced-marie.vcf
@@ -0,0 +1,9 @@
+BEGIN:VCARD
+VERSION:3.0
+N:Curie;Marie;;;
+FN:Marie Curie
+EMAIL:marie@example.com
+TEL;TYPE=cell:+33 6 12 34 56 01
+BDAY:1867-11-07
+UID:unsynced-marie
+END:VCARD
diff --git a/test/fixtures/cards/unsynced-pierre.vcf b/test/fixtures/cards/unsynced-pierre.vcf
new file mode 100644
index 0000000..1eb6ab7
--- /dev/null
+++ b/test/fixtures/cards/unsynced-pierre.vcf
@@ -0,0 +1,9 @@
+BEGIN:VCARD
+VERSION:3.0
+N:Curie;Pierre;;;
+FN:Pierre Curie
+EMAIL:pierre@example.com
+TEL;TYPE=cell:+33 6 12 34 56 02
+BDAY:1859-05-15
+UID:unsynced-pierre
+END:VCARD
diff --git a/test/fixtures/ios-exchange/02-propfind-addressbook-ctag/response b/test/fixtures/ios-exchange/02-propfind-addressbook-ctag/response
index 2185e73..36751ea 100644
--- a/test/fixtures/ios-exchange/02-propfind-addressbook-ctag/response
+++ b/test/fixtures/ios-exchange/02-propfind-addressbook-ctag/response
@@ -18,8 +18,8 @@ Content-Type: text/xml
</d:report>
</d:supported-report>
</d:supported-report-set>
- <cs:getctag>19</cs:getctag>
- <d:sync-token>http://pro-tacts/sync/19/336e00f5e1ec2674</d:sync-token>
+ <cs:getctag>21</cs:getctag>
+ <d:sync-token>http://pro-tacts/sync/21/336e00f5e1ec2674</d:sync-token>
<d:current-user-privilege-set>
<d:privilege>
<d:read/>
diff --git a/test/fixtures/ios-exchange/03-propfind-addressbook-bootstrap/response b/test/fixtures/ios-exchange/03-propfind-addressbook-bootstrap/response
index c7bc124..2448324 100644
--- a/test/fixtures/ios-exchange/03-propfind-addressbook-bootstrap/response
+++ b/test/fixtures/ios-exchange/03-propfind-addressbook-bootstrap/response
@@ -18,8 +18,8 @@ Content-Type: text/xml
</d:report>
</d:supported-report>
</d:supported-report-set>
- <cs:getctag>19</cs:getctag>
- <d:sync-token>http://pro-tacts/sync/19/336e00f5e1ec2674</d:sync-token>
+ <cs:getctag>21</cs:getctag>
+ <d:sync-token>http://pro-tacts/sync/21/336e00f5e1ec2674</d:sync-token>
<d:current-user-privilege-set>
<d:privilege>
<d:read/>
diff --git a/test/fixtures/macos-exchange/05-propfind-addressbook-ctag/response b/test/fixtures/macos-exchange/05-propfind-addressbook-ctag/response
index 2185e73..36751ea 100644
--- a/test/fixtures/macos-exchange/05-propfind-addressbook-ctag/response
+++ b/test/fixtures/macos-exchange/05-propfind-addressbook-ctag/response
@@ -18,8 +18,8 @@ Content-Type: text/xml
</d:report>
</d:supported-report>
</d:supported-report-set>
- <cs:getctag>19</cs:getctag>
- <d:sync-token>http://pro-tacts/sync/19/336e00f5e1ec2674</d:sync-token>
+ <cs:getctag>21</cs:getctag>
+ <d:sync-token>http://pro-tacts/sync/21/336e00f5e1ec2674</d:sync-token>
<d:current-user-privilege-set>
<d:privilege>
<d:read/>
diff --git a/test/fixtures/macos-exchange/09-propfind-addressbook-bootstrap/response b/test/fixtures/macos-exchange/09-propfind-addressbook-bootstrap/response
index c7bc124..2448324 100644
--- a/test/fixtures/macos-exchange/09-propfind-addressbook-bootstrap/response
+++ b/test/fixtures/macos-exchange/09-propfind-addressbook-bootstrap/response
@@ -18,8 +18,8 @@ Content-Type: text/xml
</d:report>
</d:supported-report>
</d:supported-report-set>
- <cs:getctag>19</cs:getctag>
- <d:sync-token>http://pro-tacts/sync/19/336e00f5e1ec2674</d:sync-token>
+ <cs:getctag>21</cs:getctag>
+ <d:sync-token>http://pro-tacts/sync/21/336e00f5e1ec2674</d:sync-token>
<d:current-user-privilege-set>
<d:privilege>
<d:read/>