From 9f70ce2aee5b02cce6d7f2c974c89f5072a3e2e8 Mon Sep 17 00:00:00 2001 From: Bitcoinera Date: Thu, 12 Dec 2019 13:04:14 +0100 Subject: [PATCH 1/5] chooseFilter for pagevalidator. fix website --- src/components/staking/PageValidator.vue | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/src/components/staking/PageValidator.vue b/src/components/staking/PageValidator.vue index 0b901a3daa..714c2f468e 100644 --- a/src/components/staking/PageValidator.vue +++ b/src/components/staking/PageValidator.vue @@ -66,7 +66,7 @@
  • Website

    - +
  • Uptime

    - - {{ validator.uptimePercentage | percent }} - + {{ + chooseFilter(validator.uptimePercentage) + }}
  • Current Commission Rate

    - {{ validator.commission | percent }} + {{ chooseFilter(validator.commission) }}
  • Max Commission Rate

    - {{ validator.maxCommission | percent }} + {{ chooseFilter(validator.maxCommission) }}
  • Max Daily Commission Change

    - {{ validator.maxChangeCommission | percent }} + {{ chooseFilter(validator.maxChangeCommission) }}
  • Last Commission Change

    - {{ validator.commissionUpdateTime | fromNow }} + {{ chooseFilter(validator.commissionLastUpdate) }}
  • @@ -251,6 +251,11 @@ export default { `undelegations`, `transactions` ]) // TODO use more finegrained query string (network and address) + }, + chooseFilter(field) { + return field + ? this.$options.filters.percent(field) + : this.$options.filters.noBlanks(field) } }, apollo: { From f75d5facf6d846158e3c48e80d99131f9bdc9ed0 Mon Sep 17 00:00:00 2001 From: Bitcoinera Date: Thu, 12 Dec 2019 13:10:12 +0100 Subject: [PATCH 2/5] changelog --- changes/ana_add-choosefilter-for-pagevalidator | 1 + 1 file changed, 1 insertion(+) create mode 100644 changes/ana_add-choosefilter-for-pagevalidator diff --git a/changes/ana_add-choosefilter-for-pagevalidator b/changes/ana_add-choosefilter-for-pagevalidator new file mode 100644 index 0000000000..a5b4883c2b --- /dev/null +++ b/changes/ana_add-choosefilter-for-pagevalidator @@ -0,0 +1 @@ +[Changed] [#3289](https://github.com/cosmos/lunie/pull/3289) Now PageValidator handles empty fields more uniformly, always displaying `--` @Bitcoinera \ No newline at end of file From 5731ee44927575a966a7d2232d6d8040a5d01bca Mon Sep 17 00:00:00 2001 From: Bitcoinera Date: Sat, 14 Dec 2019 12:08:44 +0100 Subject: [PATCH 3/5] add filter as second parameter --- src/components/staking/PageValidator.vue | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/components/staking/PageValidator.vue b/src/components/staking/PageValidator.vue index 0db9494e84..2edaadc9b5 100644 --- a/src/components/staking/PageValidator.vue +++ b/src/components/staking/PageValidator.vue @@ -114,24 +114,28 @@
  • Uptime

    {{ - chooseFilter(validator.uptimePercentage) + isBlankField(validator.uptimePercentage, percent) }}
  • Current Commission Rate

    - {{ chooseFilter(validator.commission) }} + {{ isBlankField(validator.commission, percent) }}
  • Max Commission Rate

    - {{ chooseFilter(validator.maxCommission) }} + {{ isBlankField(validator.maxCommission, percent) }}
  • Max Daily Commission Change

    - {{ chooseFilter(validator.maxChangeCommission) }} + {{ + isBlankField(validator.maxChangeCommission, percent) + }}
  • Last Commission Change

    - {{ chooseFilter(validator.commissionLastUpdate) }} + {{ + isBlankField(validator.commissionUpdateTime, fromNow) + }}
  • @@ -229,6 +233,7 @@ export default { shortDecimals, atoms, percent, + fromNow, moment, onDelegation(options) { this.$refs.delegationModal.open(options) @@ -251,9 +256,9 @@ export default { `transactions` ]) // TODO use more finegrained query string (network and address) }, - chooseFilter(field) { + isBlankField(field, alternateFilter) { return field - ? this.$options.filters.percent(field) + ? alternateFilter(field) : this.$options.filters.noBlanks(field) } }, From 73e0991783554c85cbcb2dc6b8f9c42e8b85dea1 Mon Sep 17 00:00:00 2001 From: Bitcoinera Date: Sat, 14 Dec 2019 22:48:26 +0100 Subject: [PATCH 4/5] add test for isblankfield --- src/components/staking/PageValidator.vue | 5 ++-- .../components/staking/PageValidator.spec.js | 17 +++++++++++ .../__snapshots__/PageValidator.spec.js.snap | 30 +++++++++++++++++++ 3 files changed, 49 insertions(+), 3 deletions(-) diff --git a/src/components/staking/PageValidator.vue b/src/components/staking/PageValidator.vue index 2edaadc9b5..483c90141d 100644 --- a/src/components/staking/PageValidator.vue +++ b/src/components/staking/PageValidator.vue @@ -234,6 +234,7 @@ export default { atoms, percent, fromNow, + noBlanks, moment, onDelegation(options) { this.$refs.delegationModal.open(options) @@ -257,9 +258,7 @@ export default { ]) // TODO use more finegrained query string (network and address) }, isBlankField(field, alternateFilter) { - return field - ? alternateFilter(field) - : this.$options.filters.noBlanks(field) + return field ? alternateFilter(field) : noBlanks(field) } }, apollo: { diff --git a/tests/unit/specs/components/staking/PageValidator.spec.js b/tests/unit/specs/components/staking/PageValidator.spec.js index 3ced5ce70e..f61886bd94 100644 --- a/tests/unit/specs/components/staking/PageValidator.spec.js +++ b/tests/unit/specs/components/staking/PageValidator.spec.js @@ -97,4 +97,21 @@ describe(`PageValidator`, () => { $store.state.session.signedIn = false expect(wrapper.element).toMatchSnapshot() }) + it(`if uptimePercentage is blank`, () => { + wrapper.setProps({ validator: { uptimePercentage: `` } }) + expect(wrapper.element).toMatchSnapshot() + }) +}) + +describe(`isBlankField method`, () => { + it(`returns "--"`, async () => { + validator.maxCommission = null + const percent = jest.fn() + const afterFilter = PageValidator.methods.isBlankField( + validator.maxCommission, + percent + ) + + expect(afterFilter).toBe(`--`) + }) }) diff --git a/tests/unit/specs/components/staking/__snapshots__/PageValidator.spec.js.snap b/tests/unit/specs/components/staking/__snapshots__/PageValidator.spec.js.snap index cfcf614b15..1783fc195e 100644 --- a/tests/unit/specs/components/staking/__snapshots__/PageValidator.spec.js.snap +++ b/tests/unit/specs/components/staking/__snapshots__/PageValidator.spec.js.snap @@ -1,5 +1,35 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`PageValidator if uptimePercentage is blank 1`] = ` + +
    + Validator Not Found +
    + +
    + + Please visit the + + + Validators + + page to view + all validators + +
    +
    +`; + exports[`PageValidator if user has signed in - status text banned 1`] = ` Date: Sat, 14 Dec 2019 22:48:32 +0100 Subject: [PATCH 5/5] lint --- .../components/ActionModal/components/ActionModal.spec.js | 8 ++++---- .../specs/components/common/TmSessionHardware.spec.js | 4 ++-- tests/unit/specs/filters/filters.spec.js | 4 +++- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/tests/unit/specs/components/ActionModal/components/ActionModal.spec.js b/tests/unit/specs/components/ActionModal/components/ActionModal.spec.js index 02e0827f7c..ea78b24f33 100644 --- a/tests/unit/specs/components/ActionModal/components/ActionModal.spec.js +++ b/tests/unit/specs/components/ActionModal/components/ActionModal.spec.js @@ -6,7 +6,7 @@ import { focusParentLast } from "src/directives" const localVue = createLocalVue() localVue.use(Vuelidate) localVue.directive("focus-last", focusParentLast) -localVue.directive("focus", () => { }) +localVue.directive("focus", () => {}) let mockSimulate = jest.fn(() => 123456) let mockSend = jest.fn(() => ({ @@ -144,7 +144,7 @@ describe(`ActionModal`, () => { $store, $apollo, actionManager: { - setContext: () => { }, + setContext: () => {}, simulate: () => 12345, send: ActionManagerSend, simulateTxAPI: jest.fn(), @@ -160,7 +160,7 @@ describe(`ActionModal`, () => { }, submissionErrorPrefix: `PREFIX`, trackEvent: jest.fn(), - connectLedger: () => { }, + connectLedger: () => {}, onSendingFailed: jest.fn(), createContext: jest.fn() } @@ -617,7 +617,7 @@ describe(`ActionModal`, () => { isValidInput: jest.fn(() => true), selectedSignMethod: `local`, step: `details`, - validateChangeStep: jest.fn(() => { }) + validateChangeStep: jest.fn(() => {}) } }) diff --git a/tests/unit/specs/components/common/TmSessionHardware.spec.js b/tests/unit/specs/components/common/TmSessionHardware.spec.js index 5072fc3360..766a7c483d 100644 --- a/tests/unit/specs/components/common/TmSessionHardware.spec.js +++ b/tests/unit/specs/components/common/TmSessionHardware.spec.js @@ -6,8 +6,8 @@ import TmSessionHardware from "common/TmSessionHardware" const localVue = createLocalVue() localVue.use(Vuex) localVue.use(Vuelidate) -localVue.directive(`tooltip`, () => { }) -localVue.directive(`focus`, () => { }) +localVue.directive(`tooltip`, () => {}) +localVue.directive(`focus`, () => {}) describe(`TmSessionHardware`, () => { let wrapper, store diff --git a/tests/unit/specs/filters/filters.spec.js b/tests/unit/specs/filters/filters.spec.js index e7c6ee1d55..2ebe69ed2d 100644 --- a/tests/unit/specs/filters/filters.spec.js +++ b/tests/unit/specs/filters/filters.spec.js @@ -28,7 +28,9 @@ describe(`formatBech32 Filter`, () => { }) it(`should return an abbreviated version of an Ethereum address, with "0x" and then the first four characters, followed by "..." and finally the last four characters`, () => { - expect(formatBech32(`0x00b1606fc5b771f3079b4fd3ea49e66a2d5fd665`)).toBe(`0x00b1…d665`) + expect(formatBech32(`0x00b1606fc5b771f3079b4fd3ea49e66a2d5fd665`)).toBe( + `0x00b1…d665` + ) }) it(`should return 'Not A Valid Bech32 Address' when no 1 is present`, () => {