5 -- event_definition 1 uses checkout.due (passive) hook
8 -- event_definition 1 uses format.po.html (active) hook
11 /* ---------------------------------------------------------------
12 * Test Interval Constraints
13 * ---------------------------------------------------------------*/
15 UPDATE action_trigger.event_definition
16 SET delay = '1 day', max_delay = NULL WHERE id = :evt_def_pasv;
18 PREPARE delay_required AS
19 UPDATE action_trigger.event_definition
20 SET retention_interval = '1 hour' WHERE id = :evt_def_pasv;
22 SELECT throws_ok('delay_required', 'P0001',
23 'retention_interval requires max_delay', 'No Max Delay Test');
25 UPDATE action_trigger.event_definition
26 SET max_delay = '2 days' WHERE id = :evt_def_pasv;
28 PREPARE short_interval AS
29 UPDATE action_trigger.event_definition
30 SET retention_interval = '1 hour' WHERE id = :evt_def_pasv;
32 SELECT throws_ok('short_interval', 'P0001',
33 'retention_interval is too short', 'Short Interval Update Test');
35 -- '2 days' is longer than " '2 days' - '1 day' "
36 PREPARE ok_interval AS
37 UPDATE action_trigger.event_definition
38 SET retention_interval = '2 days' WHERE id = :evt_def_pasv;
40 SELECT lives_ok('ok_interval', 'Long Interval Update Test');
42 PREPARE any_interval AS
43 UPDATE action_trigger.event_definition
44 SET retention_interval = '1 min' WHERE id = :evt_def_actv;
46 SELECT lives_ok('any_interval', 'Active hooks allow any interval');
48 /* ---------------------------------------------------------------
50 * ---------------------------------------------------------------*/
52 INSERT INTO action_trigger.event_output (id, data, create_time)
54 (1010, '', NOW()), -- passive, non-purged
55 (1011, '', NOW() - '4 days'::INTERVAL), -- passive purge
56 (1012, '', NOW() - '4 days'::INTERVAL), -- active purge
57 (1013, '', NOW()) -- orphan purge
60 INSERT INTO action_trigger.event (id, target, event_def, run_time,
61 start_time, update_time, state, template_output) VALUES
62 (1010, 1, :evt_def_pasv, NOW(), NOW(), NOW(), 'pending', NULL),
63 (1011, 1, :evt_def_pasv, NOW(), NOW(), NOW(), 'error', NULL),
64 (1012, 1, :evt_def_pasv, NOW(), NOW(), NOW() - '4 days'::INTERVAL, 'complete', 1011), -- purge
65 (1013, 1, :evt_def_pasv, NOW(), NOW(), NOW() - '4 days'::INTERVAL, 'pending', NULL),
66 (1014, 1, :evt_def_actv, NOW(), NOW(), NOW() - '10 minutes'::INTERVAL, 'complete', 1012), -- purge
67 (1015, 1, :evt_def_pasv, NOW(), NOW(), NOW(), 'complete', 1010)
70 SELECT action_trigger.purge_events();
72 SELECT is( -- purged outputs
73 (SELECT COUNT(*) FROM action_trigger.event_output WHERE id IN (1011,1012,1013)),
74 0::BIGINT, 'Expired Template Output Purged');
76 SELECT is( -- non-purged outputs
77 (SELECT COUNT(*) FROM action_trigger.event_output WHERE id IN (1010)),
78 1::BIGINT, 'Non-Expired Template Output Retained');
80 SELECT is( -- purged events
81 (SELECT COUNT(*) FROM action_trigger.event WHERE id IN (1012,1014)),
82 0::BIGINT, 'Expired Event Purged');
84 SELECT is( -- non-purged events
85 (SELECT COUNT(*) FROM action_trigger.event WHERE id IN (1010,1011,1013,1015)),
86 4::BIGINT, 'Non-Expired Event Retained');
88 SELECT * FROM finish();