-
Notifications
You must be signed in to change notification settings - Fork 5
/
SendConfirmationEmailsManualTest.scala
70 lines (61 loc) · 2.62 KB
/
SendConfirmationEmailsManualTest.scala
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package manualTest
import java.time.LocalDate
import com.gu.effects.sqs.AwsSQSSend
import com.gu.i18n.{Country, Currency}
import com.gu.newproduct.api.addsubscription.Steps.emailQueuesFor
import com.gu.newproduct.api.addsubscription.email.EtSqsSend
import com.gu.newproduct.api.addsubscription.email.contributions.SendConfirmationEmailContributions.ContributionsEmailData
import com.gu.newproduct.api.addsubscription.email.contributions.{ContributionFields, SendConfirmationEmailContributions}
import com.gu.newproduct.api.addsubscription.zuora.GetContacts._
import com.gu.newproduct.api.addsubscription.zuora.GetPaymentMethod.NonDirectDebitMethod
import com.gu.newproduct.api.addsubscription.zuora.{PaymentMethodStatus, PaymentMethodType}
import com.gu.newproduct.api.addsubscription.ZuoraAccountId
import com.gu.newproduct.api.addsubscription.zuora.GetAccount.SfContactId
import com.gu.newproduct.api.productcatalog.AmountMinorUnits
import com.gu.newproduct.api.productcatalog.PlanId.MonthlyContribution
import com.gu.util.config.Stage
import scala.concurrent.Await
import scala.concurrent.duration.Duration
object SendConfirmationEmailsManualTest {
def fakeContact(email: Email) = BillToContact(
title = None,
firstName = FirstName("john"),
lastName = LastName("bloggs"),
email = Some(email),
address = BillToAddress(
address1 = None,
address2 = None,
city = None,
state = None,
country = Some(Country.UK),
postcode = None
)
)
def contributionsEmailData(billtoContact: BillToContact) = ContributionsEmailData(
ZuoraAccountId("oops"),
Currency.GBP,
NonDirectDebitMethod(PaymentMethodStatus.ActivePaymentMethod, PaymentMethodType.PayPal),
AmountMinorUnits(123),
LocalDate.of(2018, 9, 1),
billtoContact,
MonthlyContribution
)
val fakeDate = LocalDate.of(2018, 8, 10)
def main(args: Array[String]): Unit = {
val result = for {
email <- args.headOption.map(Email.apply)
queueName = emailQueuesFor(Stage("PROD")).contributions
sqsSend = AwsSQSSend(queueName) _
contributionsSqsSend = EtSqsSend[ContributionFields](sqsSend) _
sendConfirmationEmail = SendConfirmationEmailContributions(contributionsSqsSend, () => fakeDate) _
sendResult = sendConfirmationEmail(Some(SfContactId("sfContactId")), contributionsEmailData(fakeContact(email)))
} yield sendResult
result match {
case None =>
println("please input a parameter which is your email address for SES emails to be sent")
case Some(op) =>
val opresult = Await.result(op.underlying, Duration.Inf)
println(s"op result: $opresult")
}
}
}