     // ----------------------------------
     //  MARK: - Pay Models -
     //
-    fileprivate func createSession() -> PaySession {
-        return PaySession(merchantID: "com.merchant.identifier", controllerType: MockAuthorizationController.self)
+    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 {

    //  MARK: - Init -
    //
    func testInit() {
        let session = PaySession(merchantID: "some-id")
        
        XCTAssertEqual(session.merchantID, "some-id")
        XCTAssertFalse(session.identifier.isEmpty)
    }
    
    func testUniqueIdentifier() {
        let session1 = self.createSession()
        let session2 = self.createSession()
        let session3 = self.createSession()
        
        XCTAssertNotEqual(session1.identifier, session2.identifier)
        XCTAssertNotEqual(session2.identifier, session3.identifier)

    //  MARK: - Payment Request -
    //
    func testPaymentRequest() {
        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)
