Skip to content
This repository has been archived by the owner on Mar 23, 2023. It is now read-only.

Change Karma to use Electron for testing and add new tests #386

Merged
merged 3 commits into from
Nov 8, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .nvmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
6.9.2
52 changes: 16 additions & 36 deletions client/app/src/accounts/account.controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,8 @@
$scope,
$mdMedia,
gettextCatalog,
$mdTheming,
$mdThemingProvider,
$mdTheming,
$window,
$rootScope
) {
Expand Down Expand Up @@ -279,6 +279,7 @@
}
}, 2 * 1000)

// TODO Used in dashboard navbar and accountBox
self.selectLedgerAccount = function (account) {
if (!account && self.ledgerAccounts) {
account = self.ledgerAccounts[0]
Expand Down Expand Up @@ -601,19 +602,6 @@
})
}

self.myAccountsBalance = function () {
return (self.getAllAccounts().reduce(function (memo, acc) {
return memo + parseInt(acc.balance || 0)
}, 0) / 100000000).toFixed(2)
}

self.myAccountsCurrencyBalance = function () {
var balance = self.myAccountsBalance()
var currencyName = self.currency.name
var price = self.connectedPeer.market ? self.connectedPeer.market.price[currencyName] : 0
return balance * price
}

self.otherAccounts = function () {
return self.accounts.filter(function (account) {
return !account.virtual
Expand Down Expand Up @@ -841,22 +829,6 @@
})
}

self.refreshAccountBalances = function () {
networkService.getPrice()
var accounts = self.getAllAccounts()
for (var i in accounts) {
accountService
.refreshAccount(accounts[i])
.then(function (account) {
for (var j in accounts) {
if (accounts[j].address === account.address) {
accounts[j].balance = account.balance
}
}
})
}
}

self.toggleRefreshAccountsAutomatically = function () {
storageService.set('refreshAccountsAutomatically', self.refreshAccountsAutomatically, true)
}
Expand All @@ -869,6 +841,7 @@
* Select the current avatars
* @param menuId
*/
// TODO Used in dashboard navbar and accountBox
function selectAccount (account) {
var currentaddress = account.address
self.selected = accountService.getAccount(currentaddress)
Expand Down Expand Up @@ -1381,16 +1354,21 @@

function generateDarkTheme (themeName) {
var theme = themeName || self.network.theme
var properties = $mdTheming.$get().THEMES[theme]
var properties = $mdThemingProvider.$get().THEMES[theme]

var colors = properties.colors
var primary = colors.primary.name
var accent = colors.accent.name
var warn = colors.warn.name
var background = colors.background.name

$mdTheming.theme('dark').primaryPalette(primary).accentPalette(accent).warnPalette(warn).backgroundPalette(background).dark()
$mdTheming.$get().generateTheme('dark')
$mdThemingProvider.theme('dark')
.primaryPalette(primary)
.accentPalette(accent)
.warnPalette(warn)
.backgroundPalette(background)
.dark()
$mdThemingProvider.$get().generateTheme('dark')
}

// Compare vibrant colors from image with default material palette
Expand All @@ -1403,7 +1381,7 @@

var path = require('path')
var vibrant = require('node-vibrant')
var materialPalette = $mdTheming.$get().PALETTES
var materialPalette = $mdThemingProvider.$get().PALETTES

// check if it's an image url
var regExp = /\(([^)]+)\)/
Expand Down Expand Up @@ -1443,8 +1421,8 @@
accentColor = sortObj(vibrantRatio)[1]
}

$mdTheming.theme('dynamic').primaryPalette(primaryColor).accentPalette(accentColor)
$mdTheming.$get().generateTheme('dynamic')
$mdThemingProvider.theme('dynamic').primaryPalette(primaryColor).accentPalette(accentColor)
$mdThemingProvider.$get().generateTheme('dynamic')

callback('dynamic')
})
Expand Down Expand Up @@ -1804,6 +1782,7 @@
}

// Create a new cold account
// TODO Used in dashboard navbar and accountBox
function createAccount () {
var bip39 = require('bip39')
var data = { passphrase: bip39.generateMnemonic() }
Expand Down Expand Up @@ -1863,6 +1842,7 @@
})
}

// TODO Used in dashboard navbar and accountBox
function importAccount () {
var data = {
passphrase: ''
Expand Down
2 changes: 1 addition & 1 deletion client/app/src/accounts/account.service.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
*/
function AccountService ($q, $http, networkService, storageService, ledgerService, gettextCatalog) {
var self = this
var ark = require('arkjs')
var ark = require('../node_modules/arkjs')

self.defaultFees = {
'send': 10000000,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
}

self.isAddress = function (address) {
return require('arkjs').crypto.validateAddress(address)
return require('../node_modules/arkjs').crypto.validateAddress(address)
}

function existsIn (haystack, needle) {
Expand Down
38 changes: 33 additions & 5 deletions client/app/src/components/dashboard/account-box.controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@
'use strict'

/**
* NOTE This component uses the entire AccountController yet: it's the first
* step to refactor the `index.html`
* NOTE: This component still uses parts of the AccountController
*/

angular
Expand All @@ -13,12 +12,41 @@
bindings: {
accountCtrl: '='
},
controller: AccountBoxController
controller: ['$scope', 'networkService', 'accountService', AccountBoxController]
})

function AccountBoxController ($scope) {
function AccountBoxController ($scope, networkService, accountService) {
this.$onInit = () => {
this.ul = this.accountCtrl
// Alias that is used on the template
this.ac = this.accountCtrl
}

const UNIT = 100000000

this.myAccountsBalance = () => {
const total = this.accountCtrl.getAllAccounts().reduce( (sum, account) => {
return sum + parseInt(account.balance || 0)
}, 0)

return (total / UNIT).toFixed(2)
}

this.myAccountsCurrencyBalance = () => {
const market = this.accountCtrl.connectedPeer.market
const currencyName = this.accountCtrl.currency.name
const price = market ? market.price[currencyName] : 0

return this.myAccountsBalance() * price
}

this.refreshAccountBalances = () => {
networkService.getPrice()

this.accountCtrl.getAllAccounts().forEach( account => {
accountService
.refreshAccount(account)
.then( updated => account.balance = updated.balance )
})
}
}

Expand Down
20 changes: 10 additions & 10 deletions client/app/src/components/dashboard/account-box.html
Original file line number Diff line number Diff line change
@@ -1,50 +1,50 @@
<md-toolbar layout="row" md-scroll-shrink>
<div class="md-toolbar-tools">
<h2>
<translate>My Accounts</translate> {{$ctrl.ul.network.symbol}}{{$ctrl.ul.myAccountsBalance()}} / {{$ctrl.ul.myAccountsCurrencyBalance() | formatCurrency:$ctrl.ul}}
<translate>My Accounts</translate> {{$ctrl.ac.network.symbol}}{{$ctrl.myAccountsBalance()}} / {{$ctrl.myAccountsCurrencyBalance() | formatCurrency:$ctrl.ac}}
</h2>
<span flex></span>
<md-button class="share" ng-click="$ctrl.ul.refreshAccountBalances()" aria-label="Refresh balances">
<md-button class="share" ng-click="$ctrl.refreshAccountBalances()" aria-label="Refresh balances">
<md-icon md-font-library="material-icons">cached</md-icon>
</md-button>
</div>
</md-toolbar>
<div style="min-height: 100px; max-height: 300px; height: auto; border-radius:0 0 10px 10px" layout="column">
<md-toolbar class="md-hue-2">
<div class="md-toolbar-tools">
<md-button ng-click="$ctrl.ul.importAccount()">
<md-button ng-click="$ctrl.ac.importAccount()">
<md-icon>file_download</md-icon>
<translate>Import Account</translate>
</md-button>

<md-button ng-click="$ctrl.ul.createAccount()">
<md-button ng-click="$ctrl.ac.createAccount()">
<md-icon>account_box</md-icon>
<translate>Create Account</translate>
</md-button>
</div>
</md-toolbar>
<md-content style="min-height: 70px;" flex>
<md-list md-no-ink>
<md-list-item ng-click="$ctrl.ul.selectLedgerAccount()" ng-if="$ctrl.ul.ledger.connected">
<md-list-item ng-click="$ctrl.ac.selectLedgerAccount()" ng-if="$ctrl.ac.ledger.connected">
<span>
<md-icon md-svg-icon="ledger"></md-icon>
Ledger Nano S
</span>
<span class="md-secondary">
<md-progress-circular ng-if="!$ctrl.ul.ledgerAccounts" md-mode="indeterminate"></md-progress-circular>
<md-chip ng-if="$ctrl.ul.ledgerAccounts">{{$ctrl.ul.ledgerAccounts.length}} <translate>Accounts</translate></md-chip>
<md-progress-circular ng-if="!$ctrl.ac.ledgerAccounts" md-mode="indeterminate"></md-progress-circular>
<md-chip ng-if="$ctrl.ac.ledgerAccounts">{{$ctrl.ac.ledgerAccounts.length}} <translate>Accounts</translate></md-chip>
</span>
</md-list-item>

<md-list-item ng-click="$ctrl.ul.selectAccount(it)" ng-repeat="it in $ctrl.ul.myAccounts() track by $index">
<span ng-class="{'selected' : it.address === $ctrl.ul.selected.address }">
<md-list-item ng-click="$ctrl.ac.selectAccount(it)" ng-repeat="it in $ctrl.ac.myAccounts() track by $index">
<span ng-class="{'selected' : it.address === $ctrl.ac.selected.address }">
<md-icon ng-if="!it.delegate&&!it.cold" md-font-library="material-icons">account_balance</md-icon>
<md-icon ng-if="!it.delegate&&it.cold" md-font-library="material-icons">cloud_off</md-icon>
<md-icon ng-if="it.delegate" md-font-library="material-icons">security</md-icon>
{{it.username||it.address}} <span ng-if="it.delegate">({{it.delegate.rate}})</span>
</span>
<span class="md-secondary">
{{$ctrl.ul.network.symbol}}{{it.balance/100000000}}
{{$ctrl.ac.network.symbol}}{{it.balance/100000000}}
</span>
</md-list-item>
</md-list>
Expand Down
4 changes: 2 additions & 2 deletions client/app/src/services/ledger.service.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@
*/
function LedgerService ($q, $http, $timeout, storageService, networkService) {
var ipcRenderer = require('electron').ipcRenderer
var arkjs = require('arkjs')
var bip39 = require('bip39')
var arkjs = require('../node_modules/arkjs')
var bip39 = require('../node_modules/bip39')
var async = require('async')

function deriveAddress (path) {
Expand Down
2 changes: 1 addition & 1 deletion client/app/src/services/network.service.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
if (!network) {
network = switchNetwork()
}
var ark = require('arkjs')
var ark = require('../node_modules/arkjs')
ark.crypto.setNetworkVersion(network.version || 23)

var clientVersion = require('../../package.json').version
Expand Down
21 changes: 13 additions & 8 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "ArkClient",
"version": "1.4.1",
"productName": "ArkClient",
"description": "Ark Desktop",
"description": "Ark Desktop Wallet",
"main": "main.js",
"scripts": {
"postinstall": "cd client && npm install && npm run bundle && cd .. && electron-builder install-app-deps && npm run rebuild",
Expand All @@ -27,9 +27,9 @@
"url": "git+https://github.com/ArkEcosystem/ark-desktop.git"
},
"keywords": [
"Electron",
"Ark",
"Client"
"Client",
"Electron"
],
"author": {
"name": "Fx Thoorens",
Expand All @@ -46,6 +46,11 @@
"name": "Lucio Rubens",
"email": "lucio@ark.io",
"url": "https://github.com/luciorubeens"
},
{
"name": "Juan A. Martín",
"email": "juan@ark.io",
"url": "https://github.com/j-a-m-l"
}
],
"license": "MIT",
Expand All @@ -64,9 +69,9 @@
"devDependencies": {
"angular-mocks": "^1.6.6",
"babel-core": "^6.26.0",
"babel-eslint": "^8.0.1",
"babel-preset-es2015": "^6.24.1",
"chai": "^4.1.2",
"babel-eslint": "^8.0.1",
"chai-as-promised": "^7.1.1",
"cross-env": "^5.0.5",
"devtron": "^1.4.0",
Expand All @@ -81,12 +86,12 @@
"karma": "^1.7.1",
"karma-babel-preprocessor": "^7.0.0",
"karma-coverage": "^1.1.1",
"karma-electron": "^5.2.1",
"karma-mocha": "^1.3.0",
"karma-phantomjs-launcher": "^1.0.4",
"karma-sinon": "^1.0.5",
"karma-sinon-chai": "^1.3.2",
"mocha": "^4.0.1",
"sinon": "^4.0.1",
"karma-sinon-chai": "^1.3.3",
"mocha": "3.5.3",
"sinon": "^4.1.1",
"sinon-chai": "^2.14.0",
"spectron": "^3.7.2",
"standard": "^10.0.3"
Expand Down
Loading