Skip to content

Commit

Permalink
[NT-241] Decimal Pledge Amount in Manage Pledge CTA Fix (#908)
Browse files Browse the repository at this point in the history
* decimal value fix

* swiftformat

* removed trailing line

* testing decimal value

* swift format
  • Loading branch information
cdolm92 committed Oct 24, 2019
1 parent 1e3f58f commit 0c0faf2
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 4 deletions.
16 changes: 12 additions & 4 deletions Library/ViewModels/PledgeCTAContainerViewViewModel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -148,10 +148,7 @@ private func subtitle(project: Project, pledgeState: PledgeStateCTAType) -> Stri

if pledgeState == .fix { return pledgeState.subtitleLabel ?? "" }

let amount = formattedAmountForRewardOrBacking(
project: project,
rewardOrBacking: .right(backing)
)
let amount = formattedPledge(amount: backing.amount, project: project)

let reward = backing.reward
?? project.rewards.filter { $0.id == backing.rewardId }.first
Expand All @@ -160,3 +157,14 @@ private func subtitle(project: Project, pledgeState: PledgeStateCTAType) -> Stri
guard let rewardTitle = reward.title else { return "\(amount)" }
return "\(amount)\(rewardTitle)"
}

private func formattedPledge(amount: Double, project: Project) -> String {
let numberOfDecimalPlaces = amount.truncatingRemainder(dividingBy: 1) == 0 ? 0 : 2
let formattedAmount = String(format: "%.\(numberOfDecimalPlaces)f", amount)

return Format.formattedCurrency(
formattedAmount,
country: project.country,
omitCurrencyCode: project.stats.omitUSCurrencyCode
)
}
20 changes: 20 additions & 0 deletions Library/ViewModels/PledgeCTAContainerViewViewModelTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,26 @@ internal final class PledgeCTAContainerViewViewModelTests: TestCase {
self.stackViewIsHidden.assertValues([false])
}

func testPledgeCTA_BackerWithDecimalAmount_LiveProject() {
let reward = .template
|> Reward.lens.title .~ "Magic Lamp"
let backing = .template
|> Backing.lens.reward .~ reward
|> Backing.lens.amount .~ 10.50
let project = Project.template
|> Project.lens.personalization.isBacking .~ true
|> Project.lens.personalization.backing .~ backing
|> Project.lens.stats.currentCurrency .~ "USD"

self.vm.inputs.configureWith(value: (.left(project), false))
self.buttonStyleType.assertValues([ButtonStyleType.blue])
self.buttonTitleText.assertValues([Strings.Manage()])
self.titleText.assertValues([Strings.Youre_a_backer()])
self.subtitleText.assertValues(["$10.50 • Magic Lamp"])
self.spacerIsHidden.assertValues([false])
self.stackViewIsHidden.assertValues([false])
}

func testPledgeCTA_Backer_NonLiveProject() {
let project = Project.template
|> Project.lens.personalization.isBacking .~ true
Expand Down

0 comments on commit 0c0faf2

Please sign in to comment.