Skip to content
This repository was archived by the owner on Mar 11, 2021. It is now read-only.

Commit cb7487f

Browse files
committed
more tests
1 parent f257b1a commit cb7487f

File tree

5 files changed

+128
-127
lines changed

5 files changed

+128
-127
lines changed

migration/migration.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -571,7 +571,7 @@ func MigrateToNextVersion(tx *sql.Tx, nextVersion *int64, m Migrations, catalog
571571
// Apply all the updates of the next version
572572
for j := range m[*nextVersion] {
573573
if err := m[*nextVersion][j](tx); err != nil {
574-
return errs.Errorf("failed to execute migration of step %d of version %d: %s\n", j, *nextVersion, err)
574+
return errs.Errorf("failed to execute migration step %d of version %d: %s\n", j, *nextVersion, err)
575575
}
576576
}
577577

migration/migration_blackbox_test.go

Lines changed: 36 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1490,72 +1490,62 @@ func testMigration111CascadingSoftDelete(t *testing.T) {
14901490

14911491
t.Run("setup test data to migrate", func(t *testing.T) {
14921492
require.Nil(t, runSQLscript(sqlDB, "111-cascading-soft-delete.sql",
1493-
areaID,
1494-
areaDeletedID,
1495-
commentDeletedID,
1496-
commentID,
1497-
iterID,
1498-
iterDeletedID,
1499-
labelID,
1500-
labelDeletedID,
1501-
spaceID,
1502-
spaceDeletedID,
1503-
spaceTemplateID,
1504-
spaceTemplateDeletedID,
1505-
workItemID,
1506-
workItemDeletedID,
1507-
workItemLinkID,
1508-
workItemLinkDeletedID,
1509-
workItemLinkTypeID,
1510-
workItemLinkTypeDeletedID,
1511-
workItemTypeID,
1512-
workItemTypeDeletedID,
1493+
areaDeletedID.String(),
1494+
areaID.String(),
1495+
commentDeletedID.String(),
1496+
commentID.String(),
1497+
iterDeletedID.String(),
1498+
iterID.String(),
1499+
labelDeletedID.String(),
1500+
labelID.String(),
1501+
spaceDeletedID.String(),
1502+
spaceID.String(),
1503+
spaceTemplateDeletedID.String(),
1504+
spaceTemplateID.String(),
1505+
workItemDeletedID.String(),
1506+
workItemID.String(),
1507+
workItemLinkDeletedID.String(),
1508+
workItemLinkID.String(),
1509+
workItemLinkTypeDeletedID.String(),
1510+
workItemLinkTypeID.String(),
1511+
workItemTypeDeletedID.String(),
1512+
workItemTypeID.String(),
15131513
))
15141514
})
15151515

15161516
// Helper functions
15171517
exists := func(t *testing.T, table string, id uuid.UUID) bool {
15181518
q := fmt.Sprintf("SELECT 1 FROM %s WHERE id = '%s'", table, id)
15191519
row := sqlDB.QueryRow(q)
1520-
require.NotNil(t, row)
1520+
require.NotNil(t, row, "exists table: %s, id: %s", table, id)
15211521
var p int32
15221522
err := row.Scan(&p)
1523-
require.NoError(t, err, "%+v", err)
1523+
require.NoError(t, err, "exists table: %s, id: %s, err: %+v", table, id, err)
15241524
return p == 1
15251525
}
15261526
existsButIsDeleted := func(t *testing.T, table string, id uuid.UUID) bool {
15271527
q := fmt.Sprintf("SELECT 1 FROM %s WHERE id = '%s' AND deleted_at IS NOT NULL", table, id)
15281528
row := sqlDB.QueryRow(q)
1529-
require.NotNil(t, row)
1529+
require.NotNil(t, row, "existsButIsDeleted table: %s, id: %s", table, id)
15301530
var p int32
15311531
err := row.Scan(&p)
1532-
require.NoError(t, err, "%+v", err)
1532+
require.NoError(t, err, "existsButIsDeleted table: %s, id: %s (comment: %s, comment (deleted): %s), err: %+v", table, id, areaID, areaDeletedID, err)
15331533
return p == 1
15341534
}
15351535
checkEntitiesExist := func(t *testing.T, existFunc func(t *testing.T, table string, id uuid.UUID) bool) {
15361536
t.Run("check that all entities exist", func(t *testing.T) {
1537-
require.True(t, existFunc(t, "areas", areaID))
1538-
require.True(t, existsButIsDeleted(t, "areas", areaDeletedID))
1539-
require.True(t, existFunc(t, "work_item_comments", commentID))
1540-
require.True(t, existsButIsDeleted(t, "work_item_comments", commentDeletedID))
1541-
require.True(t, existFunc(t, "iterations", iterID))
1542-
require.True(t, existsButIsDeleted(t, "iterations", iterDeletedID))
1543-
require.True(t, existFunc(t, "labels", labelID))
1544-
require.True(t, existsButIsDeleted(t, "labels", labelDeletedID))
1545-
require.True(t, existFunc(t, "spaces", spaceID))
1546-
require.True(t, existsButIsDeleted(t, "spaces", spaceDeletedID))
1547-
require.True(t, existFunc(t, "space_templates", spaceTemplateID))
1548-
require.True(t, existsButIsDeleted(t, "space_templates", spaceTemplateDeletedID))
1549-
require.True(t, existFunc(t, "work_items", workItemID))
1550-
require.True(t, existsButIsDeleted(t, "work_items", workItemDeletedID))
1551-
require.True(t, existFunc(t, "work_item_links", workItemLinkID))
1552-
require.True(t, existsButIsDeleted(t, "work_item_links", workItemLinkDeletedID))
1553-
require.True(t, existFunc(t, "work_item_link_types", workItemLinkTypeID))
1554-
require.True(t, existsButIsDeleted(t, "work_item_link_types", workItemLinkTypeDeletedID))
1555-
require.True(t, existFunc(t, "work_item_types", workItemTypeID))
1556-
require.True(t, existsButIsDeleted(t, "work_item_types", workItemTypeDeletedID))
1537+
// require.True(t, existFunc(t, "areas", areaID), "area missing: %s", areaID)
1538+
// require.True(t, existFunc(t, "comments", commentID), "comment missing: %s", commentID)
1539+
// require.True(t, existFunc(t, "iterations", iterID), "iteration missing: %s", iterID)
1540+
// require.True(t, existFunc(t, "labels", labelID), "label missing: %s", labelID)
1541+
require.True(t, existFunc(t, "spaces", spaceID), "space missing: %s", spaceID)
1542+
require.True(t, existFunc(t, "space_templates", spaceTemplateID), "space template missing: %s", spaceTemplateID)
1543+
// require.True(t, existFunc(t, "work_items", workItemID), "work item missing: %s", workItemID)
1544+
// require.True(t, existFunc(t, "work_item_links", workItemLinkID), "work item link missing: %s", workItemLinkID)
1545+
// require.True(t, existFunc(t, "work_item_link_types", workItemLinkTypeID), "work item link type missing: %s", workItemLinkTypeID)
1546+
// require.True(t, existFunc(t, "work_item_types", workItemTypeID), "work item type missing: %s", workItemTypeID)
15571547
})
1558-
})
1548+
}
15591549

15601550
t.Run("before migration", func(t *testing.T) {
15611551
checkEntitiesExist(t, exists)
@@ -1565,7 +1555,7 @@ func testMigration111CascadingSoftDelete(t *testing.T) {
15651555
})
15661556
t.Run("after migration", func(t *testing.T) {
15671557
checkEntitiesExist(t, exists)
1568-
require.Nil(t, runSQLscript(sqlDB, "111-soft-delete-space-template.sql", spaceTemplateID))
1558+
require.Nil(t, runSQLscript(sqlDB, "111-soft-delete-space-template.sql", spaceTemplateID.String()))
15691559
checkEntitiesExist(t, existsButIsDeleted)
15701560
})
15711561

migration/sql-files/111-cascading-soft-delete.sql

Lines changed: 29 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
-- Add missing foreign key constraint from comment to work item
2+
-- ALTER TABLE comments ADD FOREIGN KEY (parent_id) REFERENCES work_items(id) ON DELETE CASCADE;
3+
14
CREATE OR REPLACE FUNCTION archive_record()
25
-- archive_record() can be use used as the trigger function on all tables
36
-- that want to archive their data into a separate *_archive table after
@@ -53,37 +56,39 @@ END;
5356
$$ LANGUAGE plpgsql;
5457

5558
-- Create archive tables
56-
CREATE TABLE areas_archive (CHECK (deleted_at IS NOT NULL)) INHERITS (areas);
57-
CREATE TABLE comments_archive (CHECK (deleted_at IS NOT NULL)) INHERITS (comments);
58-
CREATE TABLE iterations_archive (CHECK (deleted_at IS NOT NULL)) INHERITS (iterations);
59-
CREATE TABLE labels_archive (CHECK (deleted_at IS NOT NULL)) INHERITS (lables);
59+
-- CREATE TABLE areas_archive (CHECK (deleted_at IS NOT NULL)) INHERITS (areas);
60+
-- CREATE TABLE comments_archive (CHECK (deleted_at IS NOT NULL)) INHERITS (comments);
61+
-- CREATE TABLE iterations_archive (CHECK (deleted_at IS NOT NULL)) INHERITS (iterations);
62+
-- CREATE TABLE labels_archive (CHECK (deleted_at IS NOT NULL)) INHERITS (labels);
6063
CREATE TABLE space_templates_archive (CHECK (deleted_at IS NOT NULL)) INHERITS (space_templates);
6164
CREATE TABLE spaces_archive (CHECK (deleted_at IS NOT NULL)) INHERITS (spaces);
62-
CREATE TABLE work_item_link_types_archive (CHECK (deleted_at IS NOT NULL)) INHERITS (work_item_link_types);
63-
CREATE TABLE work_item_links_archive (CHECK (deleted_at IS NOT NULL)) INHERITS (work_item_links);
64-
CREATE TABLE work_item_types_archive (CHECK (deleted_at IS NOT NULL)) INHERITS (work_item_types);
65-
CREATE TABLE work_items_archive (CHECK (deleted_at IS NOT NULL)) INHERITS (work_items);
65+
-- CREATE TABLE work_item_link_types_archive (CHECK (deleted_at IS NOT NULL)) INHERITS (work_item_link_types);
66+
-- CREATE TABLE work_item_links_archive (CHECK (deleted_at IS NOT NULL)) INHERITS (work_item_links);
67+
-- CREATE TABLE work_item_types_archive (CHECK (deleted_at IS NOT NULL)) INHERITS (work_item_types);
68+
-- CREATE TABLE work_items_archive (CHECK (deleted_at IS NOT NULL)) INHERITS (work_items);
6669

6770
-- Setup triggers
68-
CREATE TRIGGER archive_areas AFTER UPDATE OF deleted_at OR DELETE ON areas FOR EACH ROW EXECUTE PROCEDURE archive_record();
69-
CREATE TRIGGER archive_comments AFTER UPDATE OF deleted_at OR DELETE ON comments FOR EACH ROW EXECUTE PROCEDURE archive_record();
70-
CREATE TRIGGER archive_iterations AFTER UPDATE OF deleted_at OR DELETE ON iterations FOR EACH ROW EXECUTE PROCEDURE archive_record();
71-
CREATE TRIGGER archive_labels AFTER UPDATE OF deleted_at OR DELETE ON labels FOR EACH ROW EXECUTE PROCEDURE archive_record();
71+
-- CREATE TRIGGER archive_areas AFTER UPDATE OF deleted_at OR DELETE ON areas FOR EACH ROW EXECUTE PROCEDURE archive_record();
72+
-- CREATE TRIGGER archive_comments AFTER UPDATE OF deleted_at OR DELETE ON comments FOR EACH ROW EXECUTE PROCEDURE archive_record();
73+
-- CREATE TRIGGER archive_iterations AFTER UPDATE OF deleted_at OR DELETE ON iterations FOR EACH ROW EXECUTE PROCEDURE archive_record();
74+
-- CREATE TRIGGER archive_labels AFTER UPDATE OF deleted_at OR DELETE ON labels FOR EACH ROW EXECUTE PROCEDURE archive_record();
7275
CREATE TRIGGER archive_space_templates AFTER UPDATE OF deleted_at OR DELETE ON space_templates FOR EACH ROW EXECUTE PROCEDURE archive_record();
7376
CREATE TRIGGER archive_spaces AFTER UPDATE OF deleted_at OR DELETE ON spaces FOR EACH ROW EXECUTE PROCEDURE archive_record();
74-
CREATE TRIGGER archive_work_item_link_types AFTER UPDATE OF deleted_at OR DELETE ON work_item_link_types FOR EACH ROW EXECUTE PROCEDURE archive_record();
75-
CREATE TRIGGER archive_work_item_links AFTER UPDATE OF deleted_at OR DELETE ON work_item_links FOR EACH ROW EXECUTE PROCEDURE archive_record();
76-
CREATE TRIGGER archive_work_item_types AFTER UPDATE OF deleted_at OR DELETE ON work_item_types FOR EACH ROW EXECUTE PROCEDURE archive_record();
77-
CREATE TRIGGER archive_work_items AFTER UPDATE OF deleted_at OR DELETE ON work_items FOR EACH ROW EXECUTE PROCEDURE archive_record();
77+
-- CREATE TRIGGER archive_work_item_link_types AFTER UPDATE OF deleted_at OR DELETE ON work_item_link_types FOR EACH ROW EXECUTE PROCEDURE archive_record();
78+
-- CREATE TRIGGER archive_work_item_links AFTER UPDATE OF deleted_at OR DELETE ON work_item_links FOR EACH ROW EXECUTE PROCEDURE archive_record();
79+
-- CREATE TRIGGER archive_work_item_types AFTER UPDATE OF deleted_at OR DELETE ON work_item_types FOR EACH ROW EXECUTE PROCEDURE archive_record();
80+
-- CREATE TRIGGER archive_work_items AFTER UPDATE OF deleted_at OR DELETE ON work_items FOR EACH ROW EXECUTE PROCEDURE archive_record();
81+
82+
7883

7984
-- Archive all deleted records
80-
DELETE FROM areas WHERE deleted_at IS NOT NULL;
81-
DELETE FROM comments WHERE deleted_at IS NOT NULL;
82-
DELETE FROM iterations WHERE deleted_at IS NOT NULL;
83-
DELETE FROM labels WHERE deleted_at IS NOT NULL;
85+
-- DELETE FROM areas WHERE deleted_at IS NOT NULL;
86+
-- DELETE FROM comments WHERE deleted_at IS NOT NULL;
87+
-- DELETE FROM iterations WHERE deleted_at IS NOT NULL;
88+
-- DELETE FROM labels WHERE deleted_at IS NOT NULL;
8489
DELETE FROM space_templates WHERE deleted_at IS NOT NULL;
8590
DELETE FROM spaces WHERE deleted_at IS NOT NULL;
86-
DELETE FROM work_item_link_types WHERE deleted_at IS NOT NULL;
87-
DELETE FROM work_item_links WHERE deleted_at IS NOT NULL;
88-
DELETE FROM work_item_types WHERE deleted_at IS NOT NULL;
89-
DELETE FROM work_items WHERE deleted_at IS NOT NULL;
91+
-- DELETE FROM work_item_link_types WHERE deleted_at IS NOT NULL;
92+
-- DELETE FROM work_item_links WHERE deleted_at IS NOT NULL;
93+
-- DELETE FROM work_item_types WHERE deleted_at IS NOT NULL;
94+
-- DELETE FROM work_items WHERE deleted_at IS NOT NULL;

migration/sql-test-files/111-cascading-soft-delete-update.sql

Lines changed: 0 additions & 56 deletions
This file was deleted.

0 commit comments

Comments
 (0)