mas/Tests/masTests/Controllers/MasStoreSearchSpec.swift
Ross Goldberg 280b38dfe8
Add media=software query item to lookup URL to improve results.
Reorder query items for both lookup URLs & search URLs.

Partial #561

Signed-off-by: Ross Goldberg <484615+rgoldberg@users.noreply.github.com>
2024-10-14 16:29:47 -04:00

78 lines
2.9 KiB
Swift

//
// MasStoreSearchSpec.swift
// masTests
//
// Created by Ben Chatelain on 1/4/19.
// Copyright © 2019 mas-cli. All rights reserved.
//
import Nimble
import Quick
@testable import mas
public class MasStoreSearchSpec: QuickSpec {
override public static func spec() {
beforeSuite {
Mas.initialize()
}
describe("url string") {
it("contains the app name") {
expect {
MasStoreSearch().searchURL(for: "myapp", inCountry: "US")?.absoluteString
}
== "https://itunes.apple.com/search?media=software&entity=desktopSoftware&country=US&term=myapp"
}
it("contains the encoded app name") {
expect {
MasStoreSearch().searchURL(for: "My App", inCountry: "US")?.absoluteString
}
== "https://itunes.apple.com/search?media=software&entity=desktopSoftware&country=US&term=My%20App"
}
}
describe("store") {
context("when searched") {
it("can find slack") {
let networkSession = NetworkSessionMockFromFile(responseFile: "search/slack.json")
let storeSearch = MasStoreSearch(networkManager: NetworkManager(session: networkSession))
expect {
try storeSearch.search(for: "slack").wait()
}
.to(haveCount(39))
}
}
context("when lookup used") {
it("can find slack") {
let appID: AppID = 803_453_959
let networkSession = NetworkSessionMockFromFile(responseFile: "lookup/slack.json")
let storeSearch = MasStoreSearch(networkManager: NetworkManager(session: networkSession))
var result: SearchResult?
do {
result = try storeSearch.lookup(appID: appID).wait()
} catch {
let maserror = error as! MASError
if case .jsonParsing(let nserror) = maserror {
fail("\(maserror) \(nserror!)")
}
}
guard let result else {
fatalError("lookup result was nil")
}
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"
}
}
}
}
}