Skip to content

Commit 7fbbcd1

Browse files
Unit tests
1 parent d9e22c9 commit 7fbbcd1

File tree

1 file changed

+79
-0
lines changed

1 file changed

+79
-0
lines changed

Core/CoreTests/Features/Courses/CourseTests.swift

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,85 @@ class CourseTests: CoreTestCase {
7070
XCTAssertEqual(resultEnrollment?.canvasContextID, "course_1")
7171
}
7272

73+
func testIsPastEnrollmentWithWorkflowState() {
74+
let completedCourse = Course.make(from: .make(workflow_state: .completed))
75+
XCTAssertTrue(completedCourse.isPastEnrollment)
76+
77+
let availableCourse = Course.make(from: .make(workflow_state: .available))
78+
XCTAssertFalse(availableCourse.isPastEnrollment)
79+
80+
let futureDate = Clock.now.addDays(10)
81+
let completedWithFutureDates = Course.make(from: .make(
82+
workflow_state: .completed,
83+
end_at: futureDate,
84+
term: .make(end_at: futureDate)
85+
))
86+
XCTAssertTrue(completedWithFutureDates.isPastEnrollment)
87+
}
88+
89+
func testIsPastEnrollmentWithCourseEndDate() {
90+
let pastDate = Clock.now.addDays(-10)
91+
let courseWithPastEnd = Course.make(from: .make(end_at: pastDate))
92+
XCTAssertTrue(courseWithPastEnd.isPastEnrollment)
93+
94+
let futureDate = Clock.now.addDays(10)
95+
let courseWithFutureEnd = Course.make(from: .make(end_at: futureDate))
96+
XCTAssertFalse(courseWithFutureEnd.isPastEnrollment)
97+
98+
Clock.mockNow(Date(timeIntervalSince1970: 1000000))
99+
let exactlyNow = Clock.now
100+
let courseEndingNow = Course.make(from: .make(end_at: exactlyNow))
101+
XCTAssertFalse(courseEndingNow.isPastEnrollment)
102+
103+
let futureCourseEnd = Clock.now.addDays(5)
104+
let futureTermEnd = Clock.now.addDays(10)
105+
let courseEndPrecedence = Course.make(from: .make(
106+
end_at: futureCourseEnd,
107+
term: .make(end_at: futureTermEnd)
108+
))
109+
XCTAssertFalse(courseEndPrecedence.isPastEnrollment)
110+
}
111+
112+
func testIsPastEnrollmentWithTermEndDate() {
113+
let pastDate = Clock.now.addDays(-10)
114+
let term = APICourse.Term.make(end_at: pastDate)
115+
let courseWithPastTermEnd = Course.make(from: .make(end_at: nil, term: term))
116+
XCTAssertTrue(courseWithPastTermEnd.isPastEnrollment)
117+
118+
let futureDate = Clock.now.addDays(10)
119+
let termWithFutureEnd = APICourse.Term.make(end_at: futureDate)
120+
let courseWithFutureTermEnd = Course.make(from: .make(end_at: nil, term: termWithFutureEnd))
121+
XCTAssertFalse(courseWithFutureTermEnd.isPastEnrollment)
122+
123+
let termWithoutEnd = APICourse.Term.make(end_at: nil)
124+
let courseWithNoTermEnd = Course.make(from: .make(end_at: nil, term: termWithoutEnd))
125+
XCTAssertFalse(courseWithNoTermEnd.isPastEnrollment)
126+
127+
let courseWithNoTerm = Course.make(from: .make(end_at: nil, term: nil))
128+
XCTAssertFalse(courseWithNoTerm.isPastEnrollment)
129+
}
130+
131+
func testIsPastEnrollmentWithCourseEndAndTermEndDate() {
132+
// Given
133+
let pastDate = Clock.now.addDays(-10)
134+
let futureDate = Clock.now.addDays(10)
135+
136+
// When
137+
var term = APICourse.Term.make(end_at: pastDate)
138+
var course = Course.make(from: .make(end_at: futureDate, term: term))
139+
XCTAssertFalse(course.isPastEnrollment)
140+
141+
// When
142+
term = APICourse.Term.make(end_at: futureDate)
143+
course = Course.make(from: .make(end_at: pastDate, term: term))
144+
XCTAssertTrue(course.isPastEnrollment)
145+
146+
// When
147+
term = APICourse.Term.make(end_at: pastDate.addDays(-10))
148+
course = Course.make(from: .make(end_at: pastDate, term: term))
149+
XCTAssertTrue(course.isPastEnrollment)
150+
}
151+
73152
func testDeletesOnlyDanglingEnrollments() {
74153
let apiCourse = APICourse.make(id: "1")
75154
let course = Course.make(from: apiCourse)

0 commit comments

Comments
 (0)