This PR contains all the work related to setting up this project as required to implement the [Assignment](https://repo.rock-n-code.com/rock-n-code/deep-linking-assignment/wiki/Assignment) on top, as intended. To summarise this work: - [x] created a new **Xcode** project; - [x] cloned the `Wikipedia` app and inserted it into the **Xcode** project; - [x] created the `Locations` app and also, its `Libraries` package; - [x] created the `Shared` package to share dependencies between the apps; - [x] added a `Makefile` file and implemented some **environment** and **help** commands. Co-authored-by: Javier Cicchelli <javier@rock-n-code.com> Reviewed-on: rock-n-code/deep-linking-assignment#1
53 lines
1.6 KiB
Swift
53 lines
1.6 KiB
Swift
import Foundation
|
|
@testable import Wikipedia
|
|
@testable import WMF
|
|
import XCTest
|
|
|
|
class TalkPageTestHelpers {
|
|
|
|
enum TalkPageJSONType {
|
|
case original
|
|
case updated
|
|
case largeForPerformance
|
|
case smallForPerformance
|
|
case largeUpdatedForPerformance
|
|
|
|
var fileName: String {
|
|
var fileName: String
|
|
switch self {
|
|
case .original: fileName = "TalkPage-small"
|
|
case .updated: fileName = "TalkPage-small-updated"
|
|
case .smallForPerformance: fileName = "TalkPage-extrasmall"
|
|
case .largeForPerformance: fileName = "TalkPage-large"
|
|
case .largeUpdatedForPerformance: fileName = "TalkPage-large-updated"
|
|
}
|
|
|
|
return fileName
|
|
}
|
|
}
|
|
|
|
static func networkTalkPage(for urlString: String, data: Data, revisionId: Int) -> NetworkTalkPage? {
|
|
let session = MWKDataStore.temporary().session
|
|
|
|
do {
|
|
let result: NetworkBase = try session.jsonDecodeData(data: data)
|
|
|
|
|
|
// update sort
|
|
for (topicIndex, topic) in result.topics.enumerated() {
|
|
|
|
topic.sort = topicIndex
|
|
for (replyIndex, reply) in topic.replies.enumerated() {
|
|
reply.sort = replyIndex
|
|
}
|
|
}
|
|
|
|
let talkPage = NetworkTalkPage(url: URL(string: urlString)!, topics: result.topics, revisionId: revisionId, displayTitle: "Username")
|
|
|
|
return talkPage
|
|
} catch {
|
|
return nil
|
|
}
|
|
}
|
|
}
|