mas/Tests/MasKitTests/Controllers/MasStoreSearchSpec.swift

83 lines
3.3 KiB
Swift
Raw Normal View History

2019-01-05 08:39:07 -07:00
//
// MasStoreSearchSpec.swift
// MasKitTests
//
// Created by Ben Chatelain on 1/4/19.
// Copyright © 2019 mas-cli. All rights reserved.
//
import Nimble
2019-01-29 23:15:24 -07:00
import Quick
2019-01-05 08:39:07 -07:00
2021-03-21 22:25:18 -07:00
@testable import MasKit
2021-05-08 15:49:32 -07:00
public class MasStoreSearchSpec: QuickSpec {
2021-05-09 13:25:20 -07:00
override public func spec() {
2021-04-23 00:01:18 -07:00
beforeSuite {
MasKit.initialize()
}
describe("url string") {
it("contains the app name") {
let appName = "myapp"
2021-05-12 10:55:19 -07:00
let urlString = MasStoreSearch.searchURL(for: appName).absoluteString
expect(urlString) == "https://itunes.apple.com/search?media=software&entity=macSoftware&term=\(appName)"
}
it("contains the encoded app name") {
let appName = "My App"
let appNameEncoded = "My%20App"
2021-05-12 10:55:19 -07:00
let urlString = MasStoreSearch.searchURL(for: appName).absoluteString
expect(urlString)
== "https://itunes.apple.com/search?media=software&entity=macSoftware&term=\(appNameEncoded)"
}
}
describe("store") {
context("when searched") {
it("can find slack") {
let networkSession = NetworkSessionMockFromFile(responseFile: "search/slack.json")
let storeSearch = MasStoreSearch(networkManager: NetworkManager(session: networkSession))
var results: [SearchResult]
do {
results = try storeSearch.search(for: "slack").wait()
expect(results.count) == 39
} catch {
let maserror = error as! MASError
if case .jsonParsing(let nserror) = maserror {
fail("\(maserror) \(nserror!)")
}
2019-01-11 17:11:53 -07:00
}
}
}
context("when lookup used") {
it("can find slack") {
let appId = 803_453_959
let networkSession = NetworkSessionMockFromFile(responseFile: "lookup/slack.json")
let storeSearch = MasStoreSearch(networkManager: NetworkManager(session: networkSession))
var lookup: SearchResult?
do {
lookup = try storeSearch.lookup(app: appId).wait()
} catch {
let maserror = error as! MASError
if case .jsonParsing(let nserror) = maserror {
fail("\(maserror) \(nserror!)")
}
2019-01-11 17:33:41 -07:00
}
guard let result = lookup else { fatalError("lookup result was nil") }
2019-01-05 08:39:07 -07:00
expect(result.trackId) == appId
expect(result.bundleId) == "com.tinyspeck.slackmacgap"
expect(result.price) == 0
expect(result.sellerName) == "Slack Technologies, Inc."
expect(result.sellerUrl) == "https://slack.com"
expect(result.trackName) == "Slack"
expect(result.trackViewUrl) == "https://itunes.apple.com/us/app/slack/id803453959?mt=12&uo=4"
expect(result.version) == "3.3.3"
}
2019-01-05 08:39:07 -07:00
}
}
}
}