mirror of
https://github.com/mas-cli/mas
synced 2024-11-23 20:13:19 +00:00
Merge pull request #601 from rgoldberg/597-formatted-price
Use `formattedPrice` for prices
This commit is contained in:
commit
a256832b78
8 changed files with 895 additions and 3352 deletions
|
@ -18,7 +18,7 @@ enum AppInfoFormatter {
|
|||
let headline = [
|
||||
"\(app.trackName)",
|
||||
"\(app.version)",
|
||||
"[\(app.price ?? 0)]",
|
||||
"[\(app.formattedPrice)]",
|
||||
]
|
||||
.joined(separator: " ")
|
||||
|
||||
|
@ -27,7 +27,7 @@ enum AppInfoFormatter {
|
|||
"By: \(app.sellerName)",
|
||||
"Released: \(humanReadableDate(app.currentVersionReleaseDate))",
|
||||
"Minimum OS: \(app.minimumOsVersion)",
|
||||
"Size: \(humanReadableSize(app.fileSizeBytes ?? "0"))",
|
||||
"Size: \(humanReadableSize(app.fileSizeBytes))",
|
||||
"From: \(app.trackViewUrl)",
|
||||
]
|
||||
.joined(separator: "\n")
|
||||
|
|
|
@ -27,10 +27,9 @@ enum SearchResultFormatter {
|
|||
let appID = result.trackId
|
||||
let appName = result.trackName.padding(toLength: maxLength, withPad: " ", startingAt: 0)
|
||||
let version = result.version
|
||||
let price = result.price ?? 0.0
|
||||
|
||||
if includePrice {
|
||||
output += String(format: "%12lu %@ $%5.2f (%@)\n", appID, appName, price, version)
|
||||
output += String(format: "%12lu %@ (%@) %@\n", appID, appName, version, result.formattedPrice)
|
||||
} else {
|
||||
output += String(format: "%12lu %@ (%@)\n", appID, appName, version)
|
||||
}
|
||||
|
|
|
@ -9,9 +9,10 @@
|
|||
struct SearchResult: Decodable {
|
||||
var bundleId: String
|
||||
var currentVersionReleaseDate: String
|
||||
var fileSizeBytes: String?
|
||||
var fileSizeBytes: String
|
||||
var formattedPrice: String
|
||||
var minimumOsVersion: String
|
||||
var price: Double?
|
||||
var price: Double
|
||||
var sellerName: String
|
||||
var sellerUrl: String?
|
||||
var trackId: AppID
|
||||
|
@ -23,6 +24,7 @@ struct SearchResult: Decodable {
|
|||
bundleId: String = "",
|
||||
currentVersionReleaseDate: String = "",
|
||||
fileSizeBytes: String = "0",
|
||||
formattedPrice: String = "0",
|
||||
minimumOsVersion: String = "",
|
||||
price: Double = 0.0,
|
||||
sellerName: String = "",
|
||||
|
@ -35,6 +37,7 @@ struct SearchResult: Decodable {
|
|||
self.bundleId = bundleId
|
||||
self.currentVersionReleaseDate = currentVersionReleaseDate
|
||||
self.fileSizeBytes = fileSizeBytes
|
||||
self.formattedPrice = formattedPrice
|
||||
self.minimumOsVersion = minimumOsVersion
|
||||
self.price = price
|
||||
self.sellerName = sellerName
|
||||
|
|
|
@ -39,8 +39,8 @@ public class InfoSpec: QuickSpec {
|
|||
let mockResult = SearchResult(
|
||||
currentVersionReleaseDate: "2019-01-07T18:53:13Z",
|
||||
fileSizeBytes: "1024",
|
||||
formattedPrice: "$2.00",
|
||||
minimumOsVersion: "10.14",
|
||||
price: 2.0,
|
||||
sellerName: "Awesome Dev",
|
||||
trackId: 1111,
|
||||
trackName: "Awesome App",
|
||||
|
@ -54,7 +54,7 @@ public class InfoSpec: QuickSpec {
|
|||
}
|
||||
}
|
||||
== """
|
||||
Awesome App 1.0 [2.0]
|
||||
Awesome App 1.0 [$2.00]
|
||||
By: Awesome Dev
|
||||
Released: 2019-01-07
|
||||
Minimum OS: 10.14
|
||||
|
|
|
@ -29,7 +29,7 @@ public class SearchResultFormatterSpec: QuickSpec {
|
|||
}
|
||||
it("can format a single result") {
|
||||
let result = SearchResult(
|
||||
price: 9.87,
|
||||
formattedPrice: "$9.87",
|
||||
trackId: 12345,
|
||||
trackName: "Awesome App",
|
||||
version: "19.2.1"
|
||||
|
@ -38,23 +38,23 @@ public class SearchResultFormatterSpec: QuickSpec {
|
|||
}
|
||||
it("can format a single result with price") {
|
||||
let result = SearchResult(
|
||||
price: 9.87,
|
||||
formattedPrice: "$9.87",
|
||||
trackId: 12345,
|
||||
trackName: "Awesome App",
|
||||
version: "19.2.1"
|
||||
)
|
||||
expect(format([result], true)) == " 12345 Awesome App $ 9.87 (19.2.1)"
|
||||
expect(format([result], true)) == " 12345 Awesome App (19.2.1) $9.87"
|
||||
}
|
||||
it("can format a two results") {
|
||||
results = [
|
||||
SearchResult(
|
||||
price: 9.87,
|
||||
formattedPrice: "$9.87",
|
||||
trackId: 12345,
|
||||
trackName: "Awesome App",
|
||||
version: "19.2.1"
|
||||
),
|
||||
SearchResult(
|
||||
price: 0.01,
|
||||
formattedPrice: "$0.01",
|
||||
trackId: 67890,
|
||||
trackName: "Even Better App",
|
||||
version: "1.2.0"
|
||||
|
@ -66,20 +66,20 @@ public class SearchResultFormatterSpec: QuickSpec {
|
|||
it("can format a two results with prices") {
|
||||
results = [
|
||||
SearchResult(
|
||||
price: 9.87,
|
||||
formattedPrice: "$9.87",
|
||||
trackId: 12345,
|
||||
trackName: "Awesome App",
|
||||
version: "19.2.1"
|
||||
),
|
||||
SearchResult(
|
||||
price: 0.01,
|
||||
formattedPrice: "$0.01",
|
||||
trackId: 67890,
|
||||
trackName: "Even Better App",
|
||||
version: "1.2.0"
|
||||
),
|
||||
]
|
||||
expect(format(results, true))
|
||||
== " 12345 Awesome App $ 9.87 (19.2.1)\n 67890 Even Better App $ 0.01 (1.2.0)"
|
||||
== " 12345 Awesome App (19.2.1) $9.87\n 67890 Even Better App (1.2.0) $0.01"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,6 +19,9 @@
|
|||
"trackName": "Things That Go Bump",
|
||||
"trackId": 1472954003,
|
||||
"sellerName": "Tinybop Inc.",
|
||||
"price": 0.99,
|
||||
"fileSizeBytes": "12345678",
|
||||
"formattedPrice": "$0.99",
|
||||
"releaseNotes": "* BOOM *, this is a BIG update. The house spawns a game room, complete with video games you can ENTER INTO. It's fun and a little bit weird! Try it! \n»-(¯`·.·´¯)->",
|
||||
"primaryGenreId": 6014,
|
||||
"primaryGenreName": "Games",
|
||||
|
|
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue