Skip to content

Commit 02d538c

Browse files
committed
♻️ Move Event.generate to main source
1 parent b047f22 commit 02d538c

File tree

3 files changed

+45
-91
lines changed

3 files changed

+45
-91
lines changed

Sources/Model/Event.swift

+31-15
Original file line numberDiff line numberDiff line change
@@ -60,22 +60,38 @@ struct Event: Codable, ReverseCodable {
6060
]
6161
}
6262

63-
static let Empty =
64-
Event(
65-
id: UUID().uuidString,
66-
calendar: PlanCalendar.Unknown,
67-
title: Title(text: "empty"),
68-
schedule: Schedule(
69-
now: Date(),
70-
startDate: Date(),
71-
endDate: Date(),
72-
allDay: false
73-
),
74-
location: "",
75-
meeting: Meeting(organizer: "", attendees: []),
76-
services: [:],
77-
tags: []
63+
static func generate(
64+
title: String = "unknown",
65+
tags: [String] = [],
66+
allDay: Bool = false,
67+
attendees: [String] = []
68+
) -> Event {
69+
let id = UUID().uuidString
70+
let cal = PlanCalendar.Unknown
71+
let title = Title(text: title)
72+
let schedule = Schedule(
73+
now: Date(),
74+
startDate: Date(),
75+
endDate: Date(),
76+
allDay: allDay
77+
)
78+
let location = ""
79+
let meeting = Meeting(organizer: "", attendees: attendees)
80+
let services: [Service: String] = [:]
81+
82+
return Event(
83+
id: id,
84+
calendar: cal,
85+
title: title,
86+
schedule: schedule,
87+
location: location,
88+
meeting: meeting,
89+
services: services,
90+
tags: tags
7891
)
92+
}
93+
94+
static let Empty: Event = generate()
7995
}
8096

8197
/// Extension to String for finding tags in the text

Tests/EventFilterTest.swift

+12-43
Original file line numberDiff line numberDiff line change
@@ -2,127 +2,96 @@
22
import XCTest
33

44
final class EventFilterTests: XCTestCase {
5-
private func genEvent(
6-
title: String = "unknown",
7-
tags: [String] = [],
8-
allDay: Bool = false,
9-
attendees: [String] = []
10-
) -> Event {
11-
let id = UUID().uuidString
12-
let cal = PlanCalendar.Unknown
13-
let title = Title(text: title)
14-
let schedule = Schedule(
15-
now: Date(),
16-
startDate: Date(),
17-
endDate: Date(),
18-
allDay: allDay
19-
)
20-
let location = ""
21-
let meeting = Meeting(organizer: "", attendees: attendees)
22-
let services: [Service: String] = [:]
23-
24-
return Event(
25-
id: id,
26-
calendar: cal,
27-
title: title,
28-
schedule: schedule,
29-
location: location,
30-
meeting: meeting,
31-
services: services,
32-
tags: tags
33-
)
34-
}
35-
365
func testAlwaysAccept() {
37-
let event = genEvent()
6+
let event = Event.generate()
387
let expected = true
398
let actual = EventFilter.accept(event)
409

4110
XCTAssertEqual(actual, expected, "The event was not accepted")
4211
}
4312

4413
func testIgnoreTagsNoTags() {
45-
let event = genEvent(tags: ["timeblock"])
14+
let event = Event.generate(tags: ["timeblock"])
4615
let expected = true
4716
let actual = EventFilter.ignoreTags(tags: [])(event)
4817

4918
XCTAssertEqual(actual, expected, "The event was falsely accepted")
5019
}
5120

5221
func testIgnoreTagsMatchingTags() {
53-
let event = genEvent(tags: ["timeblock"])
22+
let event = Event.generate(tags: ["timeblock"])
5423
let expected = false
5524
let actual = EventFilter.ignoreTags(tags: ["timeblock"])(event)
5625

5726
XCTAssertEqual(actual, expected, "The event was falsely accepted")
5827
}
5928

6029
func testIgnoreTagsNotMatchingTags() {
61-
let event = genEvent(tags: ["foo"])
30+
let event = Event.generate(tags: ["foo"])
6231
let expected = true
6332
let actual = EventFilter.ignoreTags(tags: ["timeblock"])(event)
6433

6534
XCTAssertEqual(actual, expected, "The event was falsely ignored")
6635
}
6736

6837
func testIgnoreAnAllDayEvent() {
69-
let event = genEvent(allDay: true)
38+
let event = Event.generate(allDay: true)
7039
let expected = false
7140
let actual = EventFilter.ignoreAllDay(event: event)
7241

7342
XCTAssertEqual(actual, expected, "The event was falsely accepted")
7443
}
7544

7645
func testAcceptAnNonAllDayEvent() {
77-
let event = genEvent(allDay: false)
46+
let event = Event.generate(allDay: false)
7847
let expected = true
7948
let actual = EventFilter.ignoreAllDay(event: event)
8049

8150
XCTAssertEqual(actual, expected, "The event was falsely ignored")
8251
}
8352

8453
func testIgnoringEventMatchingTitle() {
85-
let event = genEvent(title: "foo matching")
54+
let event = Event.generate(title: "foo matching")
8655
let expected = false
8756
let actual = EventFilter.ignorePatternTitle(pattern: "foo")(event)
8857

8958
XCTAssertEqual(actual, expected, "The event was falsely accepted")
9059
}
9160

9261
func testAcceptingEventNotMatchingTitle() {
93-
let event = genEvent(title: "foo matching")
62+
let event = Event.generate(title: "foo matching")
9463
let expected = true
9564
let actual = EventFilter.ignorePatternTitle(pattern: "bar")(event)
9665

9766
XCTAssertEqual(actual, expected, "The event was falsely ignored")
9867
}
9968

10069
func testAcceptingEventWithAtLeastTwoAttendees() {
101-
let event = genEvent(attendees: ["personA", "personB"])
70+
let event = Event.generate(attendees: ["personA", "personB"])
10271
let expected = true
10372
let actual = EventFilter.minNumAttendees(number: 2)(event)
10473

10574
XCTAssertEqual(actual, expected, "The event was falsely ignored")
10675
}
10776

10877
func testAcceptingEventWithTooFewAttendees() {
109-
let event = genEvent(attendees: ["personA", "personB"])
78+
let event = Event.generate(attendees: ["personA", "personB"])
11079
let expected = false
11180
let actual = EventFilter.minNumAttendees(number: 3)(event)
11281

11382
XCTAssertEqual(actual, expected, "The event was falsely accepted")
11483
}
11584

11685
func testAcceptingEventWithFewAttendees() {
117-
let event = genEvent(attendees: ["personA", "personB"])
86+
let event = Event.generate(attendees: ["personA", "personB"])
11887
let expected = true
11988
let actual = EventFilter.maxNumAttendees(number: 3)(event)
12089

12190
XCTAssertEqual(actual, expected, "The event was falsely ignored")
12291
}
12392

12493
func testAcceptingEventWithTooManyAttendees() {
125-
let event = genEvent(attendees: ["personA", "personB", "personC"])
94+
let event = Event.generate(attendees: ["personA", "personB", "personC"])
12695
let expected = false
12796
let actual = EventFilter.maxNumAttendees(number: 2)(event)
12897

Tests/ObjectTests.swift

+2-33
Original file line numberDiff line numberDiff line change
@@ -2,39 +2,8 @@
22
import XCTest
33

44
final class ObjectTests: XCTestCase {
5-
private func genEvent(
6-
title: String = "unknown",
7-
tags: [String] = [],
8-
allDay: Bool = false,
9-
attendees: [String] = []
10-
) -> Event {
11-
let id = UUID().uuidString
12-
let cal = PlanCalendar.Unknown
13-
let title = Title(text: title)
14-
let schedule = Schedule(
15-
now: Date(),
16-
startDate: Date(),
17-
endDate: Date(),
18-
allDay: allDay
19-
)
20-
let location = ""
21-
let meeting = Meeting(organizer: "", attendees: attendees)
22-
let services: [Service: String] = [:]
23-
24-
return Event(
25-
id: id,
26-
calendar: cal,
27-
title: title,
28-
schedule: schedule,
29-
location: location,
30-
meeting: meeting,
31-
services: services,
32-
tags: tags
33-
)
34-
}
35-
365
func testKeyPathOnKeywords() {
37-
let event = genEvent(title: "test")
6+
let event = Event.generate(title: "test")
387
do {
398
let expected = try Object.valueForKeyPath(event, "schedule.start.in") as? Int ?? -1
409
let output = 0
@@ -46,7 +15,7 @@ final class ObjectTests: XCTestCase {
4615
}
4716

4817
func testNotComparable() {
49-
let event = genEvent(title: "test")
18+
let event = Event.generate(title: "test")
5019
do {
5120
XCTAssertThrowsError(try Object.valueForKeyPath(event, "schedule.start")) { error in
5221
XCTAssertTrue(

0 commit comments

Comments
 (0)