     //  MARK: - Payment Request -
     //
     func testPaymentRequest() {
-        let session  = self.createSession()
+        let checkout = self.createCheckout()
         let currency = self.createCurrency()
+        let session  = self.createSession(checkout: checkout, currency: currency)
         
         let digitalCheckout = self.createCheckout(requiresShipping: false)
         let digitalRequest  = session.paymentRequestUsing(digitalCheckout, currency: currency, merchantID: session.merchantID)

    //  MARK: - Session Delegate -
    //
    private func setupDelegateForMockSessionWith(_ checkout: PayCheckout) -> MockSessionDelegate {
        let session      = self.createSession()
        let delegate     = MockSessionDelegate(session: session)
        session.delegate = delegate
        
        let currency = self.createCurrency()
        
        session.authorizePaymentUsing(checkout, currency: currency)
        
        return delegate
    }

    // ----------------------------------
    //  MARK: - Pay Models -
    //
    fileprivate func createSession(checkout: PayCheckout, currency: PayCurrency) -> PaySession {
        return PaySession(checkout: checkout, currency: currency, merchantID: "com.merchant.identifier", controllerType: MockAuthorizationController.self)
    }
    
    fileprivate func createCurrency() -> PayCurrency {
