Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • test/feed-wait.test.js

    rd14bf1c r4f322bc  
    5757    assert.notEqual(AP.feedCursor('me'), voor, `${naam} hoort de merksteen te bewegen`);
    5858  }
    59 });
    60 
    61 test('een BEWERKING beweegt hem ook', () => {
    62   // De reden dat de merksteen niet meer op MAX(rowid) leunt. Een Update schrijft
    63   // dezelfde rij, dus de rowid bleef staan en een wachtende client sliep door.
    64   db.prepare("INSERT INTO ap_timeline (id, slug, author_uri, content) VALUES ('bw','me','https://r.test/u/a','<p>oud</p>')").run();
    65   const voor = AP.feedCursor('me');
    66   db.prepare("UPDATE ap_timeline SET content = '<p>nieuw</p>' WHERE id = 'bw'").run();
    67   assert.notEqual(AP.feedCursor('me'), voor);
    68 });
    69 
    70 test('en een VERWIJDERING, ook als het niet de laatste is', () => {
    71   db.prepare("INSERT INTO ap_timeline (id, slug, author_uri, content) VALUES ('later','me','https://r.test/u/a','<p>x</p>')").run();
    72   const voor = AP.feedCursor('me');
    73   db.prepare("DELETE FROM ap_timeline WHERE id = 'bw'").run();
    74   assert.notEqual(AP.feedCursor('me'), voor, 'anders blijft een verwijderde post staan tot je toevallig ververst');
    75 });
    76 
    77 test('maar een LIKE of BOOST van jezelf niet', () => {
    78   // De val waar dit bijna in liep: een like schrijft ap_timeline.liked en een 🔁
    79   // schrijft .boosted. Zonder de UPDATE OF-kolomlijst zou je eigen like het
    80   // bericht als BEWERKT merken en elke wachtende client wekken.
    81   const voor = AP.feedCursor('me');
    82   db.prepare("UPDATE ap_timeline SET liked = 1 WHERE id = 'later'").run();
    83   db.prepare("UPDATE ap_timeline SET boosted = 1 WHERE id = 'later'").run();
    84   db.prepare("UPDATE ap_interactions SET acted_like = 1 WHERE post_id = 'p1'").run();
    85   assert.equal(AP.feedCursor('me'), voor, 'je eigen reactie is geen nieuws');
    86 });
    87 
    88 test('een INSERT OR IGNORE die niets doet beweegt hem niet', () => {
    89   const voor = AP.feedCursor('me');
    90   db.prepare("INSERT OR IGNORE INTO ap_timeline (id, slug, author_uri, content) VALUES ('later','me','https://r.test/u/a','<p>x</p>')").run();
    91   assert.equal(AP.feedCursor('me'), voor);
    92 });
    93 
    94 test('de teller loopt nooit achteruit', () => {
    95   // Met MAX(rowid) zakte hij terug zodra de nieuwste rij verdween, en dan denkt
    96   // een client dat er niets gebeurd is.
    97   const hoog = parseInt(AP.feedCursor('me'), 10);
    98   db.prepare('DELETE FROM ap_timeline WHERE slug = ?').run('me');
    99   assert.ok(parseInt(AP.feedCursor('me'), 10) >= hoog);
    100 });
    101 
    102 test('en hij vertelt WAT er veranderd is', () => {
    103   // Dit is wat een revisieteller niet kan en deze tabel gratis meegeeft: de
    104   // "bewerkt"-markering hoeft er later geen eigen bouwsel voor te worden.
    105   const stand = (uri) => (AP.feedChangesSince('me', 0).find((r) => r.object_uri === uri) || {}).kind;
    106 
    107   db.prepare("INSERT INTO ap_timeline (id, slug, author_uri, content) VALUES ('vers','me','https://r.test/u/a','<p>x</p>')").run();
    108   assert.equal(stand('vers'), 'new');
    109 
    110   db.prepare("UPDATE ap_timeline SET content = '<p>anders</p>' WHERE id = 'vers'").run();
    111   assert.equal(stand('vers'), 'updated');
    112 
    113   db.prepare("DELETE FROM ap_timeline WHERE id = 'vers'").run();
    114   assert.equal(stand('vers'), 'deleted');
    115 });
    116 
    117 test('het is een STAND en geen logboek: bewerkt-en-toen-weg leest als weg', () => {
    118   // Een rij per bericht, niet een rij per gebeurtenis. Vijf keer bewerken blijft
    119   // één rij, en dat is waarom er niets te snoeien valt. Mijn eerste test ging uit
    120   // van een log en viel daar terecht over.
    121   const alles = AP.feedChangesSince('me', 0);
    122   const perUri = new Set(alles.map((r) => r.object_uri));
    123   assert.equal(alles.length, perUri.size, 'geen enkel bericht komt twee keer voor');
    12459});
    12560
Note: See TracChangeset for help on using the changeset viewer.