     // ----------------------------------
     //  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: - Session Delegate -
    //
    private func setupDelegateForMockSessionWith(_ checkout: PayCheckout) -> MockSessionDelegate {
        let currency     = self.createCurrency()
        let session      = self.createSession(checkout: checkout, currency: currency)
        let delegate     = MockSessionDelegate(session: session)
        session.delegate = delegate
        
        session.authorize()
        
        return delegate
    }
