Skip to content

Commit

Permalink
refactor: change connect to service
Browse files Browse the repository at this point in the history
  • Loading branch information
gulivero1773 committed Nov 23, 2023
1 parent b369273 commit 49811b1
Show file tree
Hide file tree
Showing 3 changed files with 77 additions and 21 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,13 @@ import Vapor
import MongoKitten

extension Application {
public var appStatus: FSGetAppStatus {
.init(app: self)
private struct FSGetAppStatusKey: StorageKey {
typealias Value = FSGetAppStatusServiceable
}

var appStatus: FSGetAppStatusServiceable? {
get { storage[FSGetAppStatusKey.self] }
set { storage[FSGetAppStatusKey.self] = newValue }
}
}

Expand Down
38 changes: 19 additions & 19 deletions Tests/FSGetAppStatusTests/FSGetAppStatusTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ final class FSGetAppStatusTests: XCTestCase {
func testGetRedisStatus() throws {
// docker run --name redis-test -p 6379:6379 -d redis
app.redis.configuration = try .init(hostname: "localhost")
let redisStatus = try app.appStatus.getRedisStatus().wait()
let redisStatus = try app.appStatus?.getRedisStatus().wait()
XCTAssertEqual(redisStatus, "Ok")
}

Expand All @@ -46,10 +46,10 @@ final class FSGetAppStatusTests: XCTestCase {
),
as: .psql
)
let psqlStatus = try app.appStatus.getPostgresStatus().wait()
XCTAssertEqual(psqlStatus.0, "Ok")
XCTAssertNotEqual(psqlStatus.1, "Version undefined")
XCTAssertEqual(psqlStatus.2, .ok)
let psqlStatus = try app.appStatus?.getPostgresStatus().wait()
XCTAssertEqual(psqlStatus?.0, "Ok")
XCTAssertNotEqual(psqlStatus?.1, "Version undefined")
XCTAssertEqual(psqlStatus?.2, .ok)
}

func testGetMongoDBStatus() async throws {
Expand All @@ -62,15 +62,15 @@ final class FSGetAppStatusTests: XCTestCase {
)

try await app.mongoDB = MongoDatabase.connect(to: settings)
let mongoStatus = try await app.appStatus.getMongoDBStatus(host: "localhost", port: "27017").get()
XCTAssertEqual(mongoStatus.0, "Ok")
XCTAssertEqual(mongoStatus.1, .ok)
let mongoStatus = try await app.appStatus?.getMongoDBStatus(host: "localhost", port: "27017").get()
XCTAssertEqual(mongoStatus?.0, "Ok")
XCTAssertEqual(mongoStatus?.1, .ok)
}

func testGetRedisStatusAsync() async throws {
// docker run --name redis-test -p 6379:6379 -d redis
app.redis.configuration = try .init(hostname: "localhost")
let redisStatus = await app.appStatus.getRedisStatusAsync()
let redisStatus = await app.appStatus?.getRedisStatusAsync()
XCTAssertEqual(redisStatus, "Ok")
}

Expand All @@ -89,10 +89,10 @@ final class FSGetAppStatusTests: XCTestCase {
),
as: .psql
)
let psqlStatus = await app.appStatus.getPostgresStatusAsync()
XCTAssertEqual(psqlStatus.0, "Ok")
XCTAssertNotEqual(psqlStatus.1, "Version undefined")
XCTAssertEqual(psqlStatus.2, .ok)
let psqlStatus = await app.appStatus?.getPostgresStatusAsync()
XCTAssertEqual(psqlStatus?.0, "Ok")
XCTAssertNotEqual(psqlStatus?.1, "Version undefined")
XCTAssertEqual(psqlStatus?.2, .ok)
}

func testGetMongoDBStatusAsync() async throws {
Expand All @@ -105,25 +105,25 @@ final class FSGetAppStatusTests: XCTestCase {
)

try await app.mongoDB = MongoDatabase.connect(to: settings)
let mongoStatus = await app.appStatus.getMongoDBStatusAsync(host: "localhost", port: "27017")
XCTAssertEqual(mongoStatus.0, "Ok")
XCTAssertEqual(mongoStatus.1, .ok)
let mongoStatus = await app.appStatus?.getMongoDBStatusAsync(host: "localhost", port: "27017")
XCTAssertEqual(mongoStatus?.0, "Ok")
XCTAssertEqual(mongoStatus?.1, .ok)
}

func testApplicationLaunchTime() throws {
app.appStatus.applicationLaunchTime()
app.appStatus?.applicationLaunchTime()
XCTAssertNotNil(app.applicationUpTime)
}

func testGetApplicationUpTime() throws {
app.applicationUpTime = Double(DispatchTime.now().uptimeNanoseconds)
let defaultAppTime = app.appStatus.applicationUpTime()
let defaultAppTime = app.appStatus?.applicationUpTime()
XCTAssertNotNil(defaultAppTime)
}

func testGetApplicationUpDate() throws {
app.applicationUpDate = "2022-05-08 12:27:50.654GMT+3"
let fullDateApplicationTime = app.appStatus.applicationUpDate()
let fullDateApplicationTime = app.appStatus?.applicationUpDate()
XCTAssertNotNil(fullDateApplicationTime)
}
}
51 changes: 51 additions & 0 deletions Tests/FSGetAppStatusTests/MockFSGetAppStatus.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
//
// MockFSGetAppStatus.swift
//
//
// Created by Mykola Buhaiov on 23.11.2023.
// Copyright © 2023 Freedom Space LLC
// All rights reserved: http://opensource.org/licenses/MIT
//

import Vapor
@testable import FSGetAppStatus

struct MockFSGetAppStatus: FSGetAppStatusServiceable {
var eventLoop: EventLoop

func getRedisStatus() -> EventLoopFuture<String> {
return eventLoop.future("Ok")
}

func getPostgresStatus() -> EventLoopFuture<(String, String, HTTPResponseStatus)> {
return eventLoop.future(("Ok", "Ok", HTTPResponseStatus.ok))
}

func getMongoDBStatus(host: String, port: String) -> EventLoopFuture<(String, HTTPResponseStatus)> {
return eventLoop.future(("Ok", HTTPResponseStatus.ok))
}

func getRedisStatusAsync() async -> String {
"Ok"
}

func getPostgresStatusAsync() async -> (String, String, HTTPResponseStatus) {
return ("Ok", "Ok", HTTPResponseStatus.ok)
}

func getMongoDBStatusAsync(host: String, port: String) async -> (String, HTTPResponseStatus) {
return ("Ok", HTTPResponseStatus.ok)
}

func applicationLaunchTime() { }

func applicationUpTime() -> Double {
Double()
}

func applicationLaunchDate() { }

func applicationUpDate() -> String {
""
}
}

0 comments on commit 49811b1

Please sign in to comment.