mas/MasKitTests/Controllers/StoreSearchSpec.swift
Ben Chatelain e46a59f322 ♻️ Change lookup API to only accept Int
Better input validation for home, info, open and vendor commands
2019-01-17 22:06:25 -07:00

45 lines
1.7 KiB
Swift

//
// StoreSearchSpec.swift
// MasKitTests
//
// Created by Ben Chatelain on 1/11/19.
// Copyright © 2019 mas-cli. All rights reserved.
//
@testable import MasKit
import Result
import Quick
import Nimble
/// Protocol minimal implementation
struct StoreSearchForTesting: StoreSearch {
func lookup(app appId: Int) throws -> SearchResult? { return nil }
func search(for appName: String) throws -> SearchResultList { return SearchResultList(resultCount: 0, results: []) }
}
class StoreSearchSpec: QuickSpec {
override func spec() {
let storeSearch = StoreSearchForTesting()
describe("url string") {
it("contains the app name") {
let appName = "myapp"
let urlString = storeSearch.searchURLString(forApp: appName)
expect(urlString) ==
"https://itunes.apple.com/search?entity=macSoftware&term=\(appName)&attribute=allTrackTerm"
}
it("contains the encoded app name") {
let appName = "My App"
let appNameEncoded = "My%20App"
let urlString = storeSearch.searchURLString(forApp: appName)
expect(urlString) ==
"https://itunes.apple.com/search?entity=macSoftware&term=\(appNameEncoded)&attribute=allTrackTerm"
}
// Find a character that causes addingPercentEncoding(withAllowedCharacters to return nil
xit("is nil when app name cannot be url encoded") {
let appName = "`~!@#$%^&*()_+ 💩"
let urlString = storeSearch.searchURLString(forApp: appName)
expect(urlString).to(beNil())
}
}
}
}