Skip to content

Commit 248685b

Browse files
committed
Move Current.maintenanceMessage to EnvironmentClient.maintenanceMessage
1 parent e082ebc commit 248685b

File tree

6 files changed

+33
-28
lines changed

6 files changed

+33
-28
lines changed

Sources/App/Core/AppEnvironment.swift

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ struct AppEnvironment: Sendable {
3030
var gitlabApiToken: @Sendable () -> String?
3131
var gitlabPipelineToken: @Sendable () -> String?
3232
var gitlabPipelineLimit: @Sendable () -> Int
33-
var maintenanceMessage: @Sendable () -> String?
3433
var loadSPIManifest: @Sendable (String) -> SPIManifest.Manifest?
3534
var logger: @Sendable () -> Logger
3635
var metricsPushGatewayUrl: @Sendable () -> String?
@@ -76,9 +75,6 @@ extension AppEnvironment {
7675
Environment.get("GITLAB_PIPELINE_LIMIT").flatMap(Int.init)
7776
?? Constants.defaultGitlabPipelineLimit
7877
},
79-
maintenanceMessage: {
80-
Environment.get("MAINTENANCE_MESSAGE").flatMap(\.trimmed)
81-
},
8278
loadSPIManifest: { path in SPIManifest.Manifest.load(in: path) },
8379
logger: { logger },
8480
metricsPushGatewayUrl: { Environment.get("METRICS_PUSHGATEWAY_URL") },

Sources/App/Core/Dependencies/EnvironmentClient.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ struct EnvironmentClient {
4141
var current: @Sendable () -> Environment = { XCTFail("current"); return .development }
4242
var dbId: @Sendable () -> String?
4343
var hideStagingBanner: @Sendable () -> Bool = { XCTFail("hideStagingBanner"); return Constants.defaultHideStagingBanner }
44+
var maintenanceMessage: @Sendable () -> String?
4445
var mastodonCredentials: @Sendable () -> Mastodon.Credentials?
4546
var random: @Sendable (_ range: ClosedRange<Double>) -> Double = { XCTFail("random"); return Double.random(in: $0) }
4647

@@ -107,6 +108,9 @@ extension EnvironmentClient: DependencyKey {
107108
Environment.get("HIDE_STAGING_BANNER").flatMap(\.asBool)
108109
?? Constants.defaultHideStagingBanner
109110
},
111+
maintenanceMessage: {
112+
Environment.get("MAINTENANCE_MESSAGE").flatMap(\.trimmed)
113+
},
110114
mastodonCredentials: {
111115
Environment.get("MASTODON_ACCESS_TOKEN")
112116
.map(Mastodon.Credentials.init(accessToken:))

Sources/App/routes.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ func routes(_ app: Application) throws {
2626

2727
do { // home page
2828
app.get { req in
29-
if let maintenanceMessage = Current.maintenanceMessage() {
29+
if let maintenanceMessage = environment.maintenanceMessage() {
3030
let model = MaintenanceMessageIndex.Model(markdown: maintenanceMessage)
3131
return MaintenanceMessageIndex.View(path: req.url.path, model: model).document()
3232
} else {

Tests/AppTests/AppEnvironmentTests.swift

Lines changed: 27 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,12 @@
1212
// See the License for the specific language governing permissions and
1313
// limitations under the License.
1414

15+
import XCTest
16+
1517
@testable import App
1618

19+
import Dependencies
1720
import Vapor
18-
import XCTest
1921

2022

2123
class AppEnvironmentTests: XCTestCase {
@@ -31,26 +33,30 @@ class AppEnvironmentTests: XCTestCase {
3133

3234
func test_maintenanceMessage() throws {
3335
defer { unsetenv("MAINTENANCE_MESSAGE") }
34-
Current.maintenanceMessage = AppEnvironment.live.maintenanceMessage
35-
do {
36-
unsetenv("MAINTENANCE_MESSAGE")
37-
XCTAssertEqual(Current.maintenanceMessage(), nil)
38-
}
39-
do {
40-
setenv("MAINTENANCE_MESSAGE", "foo", 1)
41-
XCTAssertEqual(Current.maintenanceMessage(), "foo")
42-
}
43-
do {
44-
setenv("MAINTENANCE_MESSAGE", "", 1)
45-
XCTAssertEqual(Current.maintenanceMessage(), nil)
46-
}
47-
do {
48-
setenv("MAINTENANCE_MESSAGE", " ", 1)
49-
XCTAssertEqual(Current.maintenanceMessage(), nil)
50-
}
51-
do {
52-
setenv("MAINTENANCE_MESSAGE", " \t\n ", 1)
53-
XCTAssertEqual(Current.maintenanceMessage(), nil)
36+
withDependencies {
37+
$0.environment.maintenanceMessage = EnvironmentClient.liveValue.maintenanceMessage
38+
} operation: {
39+
@Dependency(\.environment) var environment
40+
do {
41+
unsetenv("MAINTENANCE_MESSAGE")
42+
XCTAssertEqual(environment.maintenanceMessage(), nil)
43+
}
44+
do {
45+
setenv("MAINTENANCE_MESSAGE", "foo", 1)
46+
XCTAssertEqual(environment.maintenanceMessage(), "foo")
47+
}
48+
do {
49+
setenv("MAINTENANCE_MESSAGE", "", 1)
50+
XCTAssertEqual(environment.maintenanceMessage(), nil)
51+
}
52+
do {
53+
setenv("MAINTENANCE_MESSAGE", " ", 1)
54+
XCTAssertEqual(environment.maintenanceMessage(), nil)
55+
}
56+
do {
57+
setenv("MAINTENANCE_MESSAGE", " \t\n ", 1)
58+
XCTAssertEqual(environment.maintenanceMessage(), nil)
59+
}
5460
}
5561
}
5662

Tests/AppTests/Mocks/AppEnvironment+mock.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ extension AppEnvironment {
2929
gitlabApiToken: { nil },
3030
gitlabPipelineToken: { nil },
3131
gitlabPipelineLimit: { Constants.defaultGitlabPipelineLimit },
32-
maintenanceMessage: { nil },
3332
loadSPIManifest: { _ in nil },
3433
logger: { logger },
3534
metricsPushGatewayUrl: { "http://pushgateway:9091" },

Tests/AppTests/RoutesTests.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,8 +83,8 @@ final class RoutesTests: AppTestCase {
8383
func test_maintenanceMessage() throws {
8484
try withDependencies {
8585
$0.environment.dbId = { nil }
86+
$0.environment.maintenanceMessage = { "MAINTENANCE_MESSAGE" }
8687
} operation: {
87-
Current.maintenanceMessage = { "MAINTENANCE_MESSAGE" }
8888

8989
try app.test(.GET, "/") { res in
9090
XCTAssertContains(res.body.string, "MAINTENANCE_MESSAGE")

0 commit comments

Comments
 (0)