Skip to content
This repository has been archived by the owner on Oct 26, 2021. It is now read-only.

Commit

Permalink
Move bittrex unit test from test bundle
Browse files Browse the repository at this point in the history
  • Loading branch information
naranjo074 committed Jan 22, 2018
1 parent c4e3419 commit 91736e5
Show file tree
Hide file tree
Showing 10 changed files with 72 additions and 49 deletions.
58 changes: 23 additions & 35 deletions Balance.xcodeproj/project.pbxproj
Expand Up @@ -510,19 +510,20 @@
E65312511FE8C2AC00F57977 /* BITTREXDataBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = E653124B1FE8C28D00F57977 /* BITTREXDataBuilder.swift */; };
E65312521FE8C2B000F57977 /* BITTREXApi.swift in Sources */ = {isa = PBXBuildFile; fileRef = E65312411FE8C22D00F57977 /* BITTREXApi.swift */; };
E65312561FE8C2C500F57977 /* NewExchangeAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = E653123D1FE8C20600F57977 /* NewExchangeAPI.swift */; };
E65312741FE8C3E400F57977 /* balances.json in Resources */ = {isa = PBXBuildFile; fileRef = E65312701FE8C3E400F57977 /* balances.json */; };
E65312751FE8C3E400F57977 /* currencies.json in Resources */ = {isa = PBXBuildFile; fileRef = E65312711FE8C3E400F57977 /* currencies.json */; };
E65312761FE8C3E400F57977 /* BITTREXDataHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = E65312721FE8C3E400F57977 /* BITTREXDataHelper.swift */; };
E65312771FE8C3E400F57977 /* invalid_api_key.json in Resources */ = {isa = PBXBuildFile; fileRef = E65312731FE8C3E400F57977 /* invalid_api_key.json */; };
E653127B1FE8C40A00F57977 /* ExchangeAPIURLSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = E65312781FE8C40900F57977 /* ExchangeAPIURLSession.swift */; };
E653128B1FE8C4D100F57977 /* BITTREXApiAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = E65312871FE8C47F00F57977 /* BITTREXApiAction.swift */; };
E653128C1FE8C4D200F57977 /* BITTREXApiAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = E65312871FE8C47F00F57977 /* BITTREXApiAction.swift */; };
E653128D1FE8C4DA00F57977 /* BITTREXApiError.swift in Sources */ = {isa = PBXBuildFile; fileRef = E65312851FE8C47F00F57977 /* BITTREXApiError.swift */; };
E653128E1FE8C4DA00F57977 /* BITTREXApiError.swift in Sources */ = {isa = PBXBuildFile; fileRef = E65312851FE8C47F00F57977 /* BITTREXApiError.swift */; };
E653128F1FE8C4E000F57977 /* BITTREXInstitution.swift in Sources */ = {isa = PBXBuildFile; fileRef = E65312861FE8C47F00F57977 /* BITTREXInstitution.swift */; };
E65312901FE8C4E100F57977 /* BITTREXInstitution.swift in Sources */ = {isa = PBXBuildFile; fileRef = E65312861FE8C47F00F57977 /* BITTREXInstitution.swift */; };
E65312921FE8C53C00F57977 /* BITTREXApiTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = E653127A1FE8C40A00F57977 /* BITTREXApiTest.swift */; };
E65312931FE8C69800F57977 /* TestHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53F078421F4F8EC700D0054C /* TestHelpers.swift */; };
E68EE578201587FE00ACB01F /* BITTREXDataHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = E65312721FE8C3E400F57977 /* BITTREXDataHelper.swift */; };
E68EE5792015880400ACB01F /* balances.json in Resources */ = {isa = PBXBuildFile; fileRef = E65312701FE8C3E400F57977 /* balances.json */; };
E68EE57A2015880400ACB01F /* currencies.json in Resources */ = {isa = PBXBuildFile; fileRef = E65312711FE8C3E400F57977 /* currencies.json */; };
E68EE57B2015880400ACB01F /* invalid_api_key.json in Resources */ = {isa = PBXBuildFile; fileRef = E65312731FE8C3E400F57977 /* invalid_api_key.json */; };
E68EE57D2015881100ACB01F /* BITTREXApiTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = E653127A1FE8C40A00F57977 /* BITTREXApiTest.swift */; };
E68EE57E2015881100ACB01F /* ExchangeAPIURLSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = E65312781FE8C40900F57977 /* ExchangeAPIURLSession.swift */; };
E68EE58020158CD600ACB01F /* MockInstitutionRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = E68EE57F20158CD600ACB01F /* MockInstitutionRepository.swift */; };
E6B0416C1FFECFB200192319 /* AddAccountDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6B0416B1FFECFB200192319 /* AddAccountDelegate.swift */; };
E6B0416D1FFED03300192319 /* AddAccountDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6B0416B1FFECFB200192319 /* AddAccountDelegate.swift */; };
E6C1AC4620057ABE0018D6AA /* ReconnectAccountViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6C1AC43200577BC0018D6AA /* ReconnectAccountViewController.swift */; };
Expand Down Expand Up @@ -992,6 +993,7 @@
E65312851FE8C47F00F57977 /* BITTREXApiError.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BITTREXApiError.swift; sourceTree = "<group>"; };
E65312861FE8C47F00F57977 /* BITTREXInstitution.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BITTREXInstitution.swift; sourceTree = "<group>"; };
E65312871FE8C47F00F57977 /* BITTREXApiAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BITTREXApiAction.swift; sourceTree = "<group>"; };
E68EE57F20158CD600ACB01F /* MockInstitutionRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockInstitutionRepository.swift; sourceTree = "<group>"; };
E6B0416B1FFECFB200192319 /* AddAccountDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AddAccountDelegate.swift; path = AddCredentialBasedAccountViewController/AddAccountDelegate.swift; sourceTree = "<group>"; };
E6C1AC43200577BC0018D6AA /* ReconnectAccountViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReconnectAccountViewController.swift; sourceTree = "<group>"; };
E6C1AC4720058EC10018D6AA /* ReconnectAccountCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReconnectAccountCell.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -1858,6 +1860,7 @@
isa = PBXGroup;
children = (
53F078511F4F8EC800D0054C /* MockURLSession.swift */,
E68EE57F20158CD600ACB01F /* MockInstitutionRepository.swift */,
);
path = Utilities;
sourceTree = "<group>";
Expand All @@ -1874,6 +1877,7 @@
53F078551F4F8EC800D0054C /* Resources */ = {
isa = PBXGroup;
children = (
E68EE5762015879200ACB01F /* BITTREX API Responses */,
A4E4572F1F7935F2002E2879 /* Poloniex API Responses */,
A41742951F73E8A3004A9B4F /* Coinbase API Responses */,
A41204C31F719CA300FD8078 /* Kraken API Responses */,
Expand Down Expand Up @@ -2328,47 +2332,29 @@
E653125C1FE8C2EF00F57977 /* BalanceUnitTestsiOS */ = {
isa = PBXGroup;
children = (
E653126B1FE8C37500F57977 /* API */,
E653125F1FE8C2EF00F57977 /* Info.plist */,
);
path = BalanceUnitTestsiOS;
sourceTree = "<group>";
};
E653126B1FE8C37500F57977 /* API */ = {
isa = PBXGroup;
children = (
E653126E1FE8C39900F57977 /* Response */,
E653126C1FE8C38700F57977 /* BITTREX */,
);
path = API;
sourceTree = "<group>";
};
E653126C1FE8C38700F57977 /* BITTREX */ = {
E653126C1FE8C38700F57977 /* BITTREXApiClient */ = {
isa = PBXGroup;
children = (
E653127A1FE8C40A00F57977 /* BITTREXApiTest.swift */,
E65312781FE8C40900F57977 /* ExchangeAPIURLSession.swift */,
);
path = BITTREX;
sourceTree = "<group>";
};
E653126E1FE8C39900F57977 /* Response */ = {
isa = PBXGroup;
children = (
E653126F1FE8C3A100F57977 /* BITTREX */,
);
path = Response;
path = BITTREXApiClient;
sourceTree = "<group>";
};
E653126F1FE8C3A100F57977 /* BITTREX */ = {
E68EE5762015879200ACB01F /* BITTREX API Responses */ = {
isa = PBXGroup;
children = (
E65312701FE8C3E400F57977 /* balances.json */,
E65312721FE8C3E400F57977 /* BITTREXDataHelper.swift */,
E65312701FE8C3E400F57977 /* balances.json */,
E65312711FE8C3E400F57977 /* currencies.json */,
E65312731FE8C3E400F57977 /* invalid_api_key.json */,
);
path = BITTREX;
path = "BITTREX API Responses";
sourceTree = "<group>";
};
E6C1AC45200578C00018D6AA /* Reconnect */ = {
Expand Down Expand Up @@ -2458,6 +2444,7 @@
A41D3E471F6BFC4100FD25B5 /* KrakenAPIClient */,
53F0784B1F4F8EC700D0054C /* GDAXAPIClient */,
A4CB29E01F68209E00128E48 /* BitfinexAPIClient */,
E653126C1FE8C38700F57977 /* BITTREXApiClient */,
53F0783B1F4F8EC700D0054C /* APIResponses */,
53F078401F4F8EC700D0054C /* BalanceOpenTests.swift */,
53F078481F4F8EC700D0054C /* CurrencyTests.swift */,
Expand Down Expand Up @@ -2683,9 +2670,6 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
E65312751FE8C3E400F57977 /* currencies.json in Resources */,
E65312741FE8C3E400F57977 /* balances.json in Resources */,
E65312771FE8C3E400F57977 /* invalid_api_key.json in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand All @@ -2697,10 +2681,13 @@
53F0786F1F4F916800D0054C /* FetchAccounts.json in Resources */,
A4E457311F79362F002E2879 /* PoloniexDeposit.json in Resources */,
A41204C51F719CB800FD8078 /* KrakenFetchAccounts.json in Resources */,
E68EE57B2015880400ACB01F /* invalid_api_key.json in Resources */,
53F078701F4F916800D0054C /* WithdrawToCrypto.json in Resources */,
A44C76271F7BE5A00024476E /* BitfinexMovement.json in Resources */,
53F0786C1F4F916500D0054C /* PoloniexTradingError.json in Resources */,
A41742971F73E8D2004A9B4F /* CoinbaseSendTransaction.json in Resources */,
E68EE57A2015880400ACB01F /* currencies.json in Resources */,
E68EE5792015880400ACB01F /* balances.json in Resources */,
53F0786D1F4F916800D0054C /* Account.json in Resources */,
53F0786A1F4F916500D0054C /* CompleteBalancesResponse.json in Resources */,
53F0786E1F4F916800D0054C /* Error.json in Resources */,
Expand Down Expand Up @@ -3236,9 +3223,6 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
E653127B1FE8C40A00F57977 /* ExchangeAPIURLSession.swift in Sources */,
E65312761FE8C3E400F57977 /* BITTREXDataHelper.swift in Sources */,
E65312921FE8C53C00F57977 /* BITTREXApiTest.swift in Sources */,
E65312931FE8C69800F57977 /* TestHelpers.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
Expand All @@ -3250,13 +3234,17 @@
A41D3E491F6BFC5600FD25B5 /* KrakenAPIClientTests.swift in Sources */,
A41EE4841FB9BC4400210038 /* QRLoginCredentialsParserTests.swift in Sources */,
53F078641F4F8F3C00D0054C /* TestHelpers.swift in Sources */,
E68EE57D2015881100ACB01F /* BITTREXApiTest.swift in Sources */,
53F078691F4F8F3C00D0054C /* MockURLSession.swift in Sources */,
53F078661F4F8F3C00D0054C /* APIClientTests.swift in Sources */,
A4E4572B1F7921BC002E2879 /* PoloniexAccountToAccountTests.swift in Sources */,
53F078681F4F8F3C00D0054C /* HeadersTests.swift in Sources */,
A41204C71F71A25F00FD8078 /* KrakenCredentialTests.swift in Sources */,
E68EE578201587FE00ACB01F /* BITTREXDataHelper.swift in Sources */,
E68EE58020158CD600ACB01F /* MockInstitutionRepository.swift in Sources */,
A4E4572C1F7921BC002E2879 /* PoloniexAPITests.swift in Sources */,
A46DBC841F69B2C3006F4247 /* BitfinexCredentialsTests.swift in Sources */,
E68EE57E2015881100ACB01F /* ExchangeAPIURLSession.swift in Sources */,
53F0785B1F4F8F2E00D0054C /* BalanceOpenTests.swift in Sources */,
A4E4572A1F7921BC002E2879 /* PoloniexAccountTests.swift in Sources */,
A41742941F73E84B004A9B4F /* CoinbaseTransactionTests.swift in Sources */,
Expand Down
16 changes: 9 additions & 7 deletions Balance/Shared/Data Model/APIs/BITTREX/BITTREXApi.swift
Expand Up @@ -15,11 +15,13 @@ class BITTREXApi: NewExchangeApi, ExchangeApi {
private var secretKey: String = ""
private let dataBuilder = BITTREXDataBuilder()
private let urlSession: URLSession
private let institutionRepository: InstitutionRepository

let source = Source.bittrex

init(urlSession: URLSession? = nil) {
init(urlSession: URLSession? = nil, institutionRepository: InstitutionRepository? = nil) {
self.urlSession = urlSession ?? certValidatedSession
self.institutionRepository = institutionRepository ?? InstitutionRepository.si
}

func authenticationChallenge(loginStrings: [Field], existingInstitution: Institution?, closeBlock: @escaping (Bool, Error?, Institution?) -> Void) {
Expand Down Expand Up @@ -77,12 +79,12 @@ class BITTREXApi: NewExchangeApi, ExchangeApi {
return callResultTaskWithError(APIBasicError.dataNotPresented, completionBlock: completionBlock)
}

guard let institution = InstitutionRepository.si.institution(source: source,
sourceInstitutionId: "",
name: source.description) else {
let error = APIBasicError.repositoryNotCreated(onExchange: source)
callResultTaskWithError(error, completionBlock: completionBlock)
return
guard let institution = institutionRepository.institution(source: source,
sourceInstitutionId: "",
name: source.description) else {
let error = APIBasicError.repositoryNotCreated(onExchange: source)
callResultTaskWithError(error, completionBlock: completionBlock)
return
}

institution.apiKey = apiKey
Expand Down
Expand Up @@ -8,7 +8,7 @@

import Foundation

struct InstitutionRepository: ItemRepository {
class InstitutionRepository: ItemRepository {
static let si = InstitutionRepository()
fileprivate let gr = GenericItemRepository.si

Expand Down
Expand Up @@ -8,20 +8,22 @@

import Foundation
import XCTest
@testable import Balance
@testable import BalancemacOS

class BITTREXApiTest: XCTestCase {

private let mockInstitutionRepository = MockInstitutionRepository()

func testShouldGetBalances() {
let asyncTaskExpectation = expectation(description: "\(#function)\(#line)")

BITTREXApi(urlSession: balancesMockURLSession)
BITTREXApi(urlSession: balancesMockURLSession, institutionRepository: mockInstitutionRepository)
.performAction(for: .getBalances,
apiKey: "mockAPIKey123",
secretKey: "mockSecretKey") { (result) in
guard let balances = result.object as? [BITTREXBalance],
let balance = balances.first else {
assertionFailure("Invalid balance Response")
XCTFail("Invalid balance Response")
return
}

Expand All @@ -38,13 +40,13 @@ class BITTREXApiTest: XCTestCase {
func testShouldGetCurrencies() {
let asyncTaskExpectation = expectation(description: "\(#function)\(#line)")

BITTREXApi(urlSession: currenciesMockURLSession)
BITTREXApi(urlSession: currenciesMockURLSession, institutionRepository: mockInstitutionRepository)
.performAction(for: .getCurrencies,
apiKey: "mockAPIKey123",
secretKey: "mockSecretKey") { (result) in
guard let currencies = result.object as? [BITTREXCurrency],
let currency = currencies.first else {
assertionFailure("Invalid balance Response")
XCTFail("Invalid balance Response")
return
}

Expand All @@ -66,7 +68,7 @@ class BITTREXApiTest: XCTestCase {
apiKey: "mockAPIKey123",
secretKey: "mockSecretKey") { (result) in
guard case let .message(errorDescription)? = result.error as? BITTREXApiError else {
assertionFailure("ApiKey should be invalid")
XCTFail("ApiKey should be invalid")
return
}

Expand Down
31 changes: 31 additions & 0 deletions BalanceUnitTests/Utilities/MockInstitutionRepository.swift
@@ -0,0 +1,31 @@
//
// MockInstitutionRepository.swift
// BalanceUnitTests
//
// Created by Eli Pacheco Hoyos on 1/21/18.
// Copyright © 2018 Balanced Software, Inc. All rights reserved.
//

import Foundation
@testable import BalancemacOS

class MockInstitutionRepository: InstitutionRepository {

@discardableResult override func institution(institutionId: Int? = nil,
source: Source,
sourceInstitutionId: String,
name: String,
nameBreak: Int? = nil,
primaryColor: PXColor? = nil,
secondaryColor: PXColor? = nil,
logoData: Data? = nil,
dateAdded: Date = Date(),
accessToken: String? = nil) -> Institution?
{
return Institution(institutionId: institutionId ?? -1,
source: source,
sourceInstitutionId: sourceInstitutionId,
name: name)
}

}

0 comments on commit 91736e5

Please sign in to comment.