Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 39 additions & 0 deletions Tests/StructuredQueriesTests/TriggerDefaultNameTests.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import Dependencies
import Foundation
import InlineSnapshotTesting
import StructuredQueries
import Testing
import _StructuredQueriesSQLite

extension SnapshotTests {
@Suite struct TriggerDefaultNameTests {
@Dependency(\.defaultDatabase) var db

@Test func basics() {
let trigger = RemindersList.createTemporaryTrigger(
after: .insert { new in
Values(1)
}
)
assertQuery(
trigger
) {
"""
CREATE TEMPORARY TRIGGER
"after_insert_on_remindersLists@StructuredQueriesTests/TriggerDefaultNameTests.swift:13:57"
AFTER INSERT ON "remindersLists"
FOR EACH ROW BEGIN
SELECT 1;
END
"""
}
assertQuery(
trigger.drop()
) {
"""
DROP TRIGGER "after_insert_on_remindersLists@StructuredQueriesTests/TriggerDefaultNameTests.swift:13:57"
"""
}
}
}
}
33 changes: 22 additions & 11 deletions Tests/StructuredQueriesTests/TriggersTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ extension SnapshotTests {

@Test func basics() {
let trigger = RemindersList.createTemporaryTrigger(
"after_insert_on_remindersLists",
after: .insert { new in
RemindersList
.update {
Expand All @@ -22,7 +23,7 @@ extension SnapshotTests {
assertQuery(trigger) {
"""
CREATE TEMPORARY TRIGGER
"after_insert_on_remindersLists@StructuredQueriesTests/TriggersTests.swift:13:57"
"after_insert_on_remindersLists"
AFTER INSERT ON "remindersLists"
FOR EACH ROW BEGIN
UPDATE "remindersLists"
Expand All @@ -36,7 +37,7 @@ extension SnapshotTests {
}
assertQuery(trigger.drop()) {
"""
DROP TRIGGER "after_insert_on_remindersLists@StructuredQueriesTests/TriggersTests.swift:13:57"
DROP TRIGGER "after_insert_on_remindersLists"
"""
}
}
Expand All @@ -45,6 +46,7 @@ extension SnapshotTests {
withKnownIssue {
assertQuery(
Reminder.createTemporaryTrigger(
"after_update_on_reminders",
after: .update { _, new in
Reminder
.update { $0.dueDate = Date(timeIntervalSinceReferenceDate: 0) }
Expand All @@ -54,7 +56,7 @@ extension SnapshotTests {
) {
"""
CREATE TEMPORARY TRIGGER
"after_update_on_reminders@StructuredQueriesTests/TriggersTests.swift:47:42"
"after_update_on_reminders"
AFTER UPDATE ON "reminders"
FOR EACH ROW BEGIN
UPDATE "reminders"
Expand Down Expand Up @@ -82,14 +84,15 @@ extension SnapshotTests {
@Test func afterUpdateTouch() {
assertQuery(
RemindersList.createTemporaryTrigger(
"after_update_on_remindersLists",
afterUpdateTouch: {
$0.position += 1
}
)
) {
"""
CREATE TEMPORARY TRIGGER
"after_update_on_remindersLists@StructuredQueriesTests/TriggersTests.swift:84:45"
"after_update_on_remindersLists"
AFTER UPDATE ON "remindersLists"
FOR EACH ROW BEGIN
UPDATE "remindersLists"
Expand All @@ -102,11 +105,11 @@ extension SnapshotTests {

@Test func afterUpdateTouchDate() {
assertQuery(
Reminder.createTemporaryTrigger(afterUpdateTouch: \.updatedAt)
Reminder.createTemporaryTrigger("after_update_on_reminders", afterUpdateTouch: \.updatedAt)
) {
"""
CREATE TEMPORARY TRIGGER
"after_update_on_reminders@StructuredQueriesTests/TriggersTests.swift:105:40"
"after_update_on_reminders"
AFTER UPDATE ON "reminders"
FOR EACH ROW BEGIN
UPDATE "reminders"
Expand All @@ -127,11 +130,14 @@ extension SnapshotTests {
) STRICT
""")
assertQuery(
Episode.createTemporaryTrigger(afterUpdateTouch: \.timestamps.updatedAt)
Episode.createTemporaryTrigger(
"after_update_on_episodes",
afterUpdateTouch: \.timestamps.updatedAt
)
) {
"""
CREATE TEMPORARY TRIGGER
"after_update_on_episodes@StructuredQueriesTests/TriggersTests.swift:130:39"
"after_update_on_episodes"
AFTER UPDATE ON "episodes"
FOR EACH ROW BEGIN
UPDATE "episodes"
Expand All @@ -144,11 +150,15 @@ extension SnapshotTests {

@Test func afterUpdateTouchCustomDate() {
assertQuery(
Reminder.createTemporaryTrigger(afterUpdateTouch: \.updatedAt, date: #sql("customDate()"))
Reminder.createTemporaryTrigger(
"after_update_on_reminders",
afterUpdateTouch: \.updatedAt,
date: #sql("customDate()")
)
) {
"""
CREATE TEMPORARY TRIGGER
"after_update_on_reminders@StructuredQueriesTests/TriggersTests.swift:147:40"
"after_update_on_reminders"
AFTER UPDATE ON "reminders"
FOR EACH ROW BEGIN
UPDATE "reminders"
Expand All @@ -161,6 +171,7 @@ extension SnapshotTests {

@Test func multiStatement() {
let trigger = RemindersList.createTemporaryTrigger(
"after_insert_on_remindersLists",
after: .insert { new in
RemindersList
.update {
Expand All @@ -177,7 +188,7 @@ extension SnapshotTests {
assertQuery(trigger) {
"""
CREATE TEMPORARY TRIGGER
"after_insert_on_remindersLists@StructuredQueriesTests/TriggersTests.swift:163:57"
"after_insert_on_remindersLists"
AFTER INSERT ON "remindersLists"
FOR EACH ROW BEGIN
UPDATE "remindersLists"
Expand Down