Ignore:
File:
1 edited

Legend:

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

    r4f322bc rd14bf1c  
    5757    assert.notEqual(AP.feedCursor('me'), voor, `${naam} hoort de merksteen te bewegen`);
    5858  }
     59});
     60
     61test('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
     70test('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
     77test('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
     88test('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
     94test('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
     102test('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
     117test('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');
    59124});
    60125
Note: See TracChangeset for help on using the changeset viewer.