Skip to content

Commit

Permalink
Merge pull request #1043 from madfish-solutions/v3.1.37
Browse files Browse the repository at this point in the history
V3.1.37
  • Loading branch information
00-22-11 authored Sep 22, 2022
2 parents 92b4e47 + 0832793 commit 615cb52
Show file tree
Hide file tree
Showing 75 changed files with 960 additions and 313 deletions.
1 change: 1 addition & 0 deletions cypress.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"projectId": "4ytwek",
"baseUrl": "https://qs-develop.vercel.app/",
"defaultCommandTimeout": 10000,
"numTestsKeptInMemory": 0,
"retries": {
"runMode": 2,
"openMode": 2
Expand Down
18 changes: 18 additions & 0 deletions cypress/integration/Coinflip/FieldCalculation.spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
/// <reference types="cypress" />

describe('Output field calculated', () => {
beforeEach(() => {
cy.visit('/coinflip');
cy.get('[data-test-id="acceptCookieButton"]').click();
});
it('Should_DisplayTitile_When_OpenedCoinflipPage', () => {
cy.get('[id="coinflip-form-amount"]').click().type('1');
cy.waitUntil(() => (cy.get('[id="coinflip-form-payout"]')
.invoke('val').then(parseFloat).then((val) => !Number.isNaN(val))))
cy.get('[id="coinflip-form-payout"]')
.invoke('val').then(parseFloat).then((prevValue) => {
cy.get('[data-test-id="coinflipPayoutCoefficient"] [data-test-id="amount"]')
.invoke('text').then(parseFloat).should('eq', prevValue)
})
});
});
40 changes: 40 additions & 0 deletions cypress/integration/Coinflip/FormExist.spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
/// <reference types="cypress" />

import { cssTransition } from "react-toastify";

describe('Form exists', () => {
beforeEach(() => {
cy.visit('/coinflip');
cy.get('[data-test-id="acceptCookieButton"]').click();
});
it('Should_DisplayTitile_When_OpenedCoinflipPage', () => {
cy.get('[data-test-id="coinflipPageTitle"]').should('contain', 'Game');
});
it('Should_Have_WalletInfoSection_When_PageIsLoaded', () => {
cy.get('[data-test-id="coinflipHereCanBeYourReward"]').should('contain', 'Here can be your reward');
});
it('Should_Have_TokenSelectSection_When_PageIsLoaded', () => {
cy.get('[data-test-id="CoinflipTokenSelector"]').should('contain', 'Select Token to Play with');
});
it('Should_Have_SideSelectSection_When_PageIsLoaded', () => {
cy.get('[data-test-id="coinflipDetails"]').should('contain', 'Select your side of coin');
});
it('Should_HaveGameInfoSection_When_PageIsLoaded', () => {
cy.get('[data-test-id="coinflipRules"] [data-test-id="headerContent"]')
.should('contain', 'Play Coinflip - get a chance to double your bid!')
})
it('Should_Have_TotalWinsGteThan2900_When_PageIsLoaded', () =>{
cy.waitUntil(() => (cy.get('[data-test-id="coinflipTotalWins"] [data-test-id="amount"]')
.invoke('text').then(parseFloat).then((val) => !Number.isNaN(val))))
cy.get('[data-test-id="coinflipTotalWins"] [data-test-id="amount"]')
.invoke('text').then(parseInt).should('gte', 2)
});
it('Should_Have_GameCountGteThan473_When_PageIsLoaded', () =>{
cy.get('[data-test-id="coinflipGamesCount"] [data-test-id="amount"]')
.invoke('text').then(parseFloat).should('gte', 473)
});
it('Should_Have_MaxBetGteThan0_When_PageIsLoaded', () =>{
cy.get('[data-test-id="coinflipMaxAllowableBid"] [data-test-id="amount"]')
.invoke('text').then(parseFloat).should('gte', 0)
});
});
36 changes: 36 additions & 0 deletions cypress/integration/Coinflip/SelectToken.spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
/// <reference types="cypress" />

describe('User can choose token and side', () => {
beforeEach(() => {
cy.visit('/coinflip');
cy.get('[data-test-id="acceptCookieButton"]').click();
});
it('Should_SelectTezToken_When_ClickingOnIt', () => {
cy.get('[data-test-id="XTZ"]').click();
cy.get('[data-test-id="tokensSymbols"]').should('contain', 'TEZ')
cy.get('[data-test-id="rightVisibleCurrency"]').should('contain', 'XTZ')
});
it('Should_SelectQuipuToken_When_ClickingOnIt', () => {
cy.get('[data-test-id="QUIPU"]').click();
cy.get('[data-test-id="tokensSymbols"]').should('contain', 'QUIPU')
cy.get('[data-test-id="rightVisibleCurrency"]').should('contain', 'QUIPU')
});
it('Should_SelectHead_When_ClickingOnIt', () => {
cy.get('[data-test-id="coinflipHeadButton"]').click();
cy.get('[data-test-id="coinflipHeadButton"]').should('contain', 'Head')
});
it('Should_UnselectHead_When_UnselectingIt', () =>{
cy.get('[data-test-id="coinflipHeadButton"]').click();
cy.get('[data-test-id="coinflipHeadButton"]').click();
cy.get('[data-test-id="coinflipHeadButton"]').should('contain', '')
});
it('Should_SelectTail_When_ClickingOnIt', () => {
cy.get('[data-test-id="coinflipTailButton"]').click();
cy.get('[data-test-id="coinflipTailButton"]').should('contain', 'Tail')
});
it('Should_UnselectTail_When_UnselectingIt', () =>{
cy.get('[data-test-id="coinflipTailButton"]').click();
cy.get('[data-test-id="coinflipTailButton"]').click();
cy.get('[data-test-id="coinflipTailButton"]').should('contain', '')
})
});
32 changes: 32 additions & 0 deletions cypress/integration/Coinflip/Tooltip.spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
/// <reference types="cypress" />

describe('Tooltips in the card', () => {
it('Should_DisplayTooltips_When_HoweringMouseOver', () => {
cy.visit('/coinflip');
cy.get('[data-test-id="acceptCookieButton"]').click();

cy.get('[data-test-id="coinflipPayoutCoefficient"] [data-test-id="tooltip"]').trigger('focus');
cy.get('[aria-describedby="tippy-1"]').should('be.visible');

cy.get('[data-test-id="coinflipBank"] [data-test-id="tooltip"]').trigger('focus');
cy.get('[aria-describedby="tippy-2"]').should('be.visible');

cy.get('[data-test-id="coinflipTotalWins"] [data-test-id="tooltip"]').trigger('focus');
cy.get('[aria-describedby="tippy-3"]').should('be.visible');

cy.get('[data-test-id="coinflipGamesCount"] [data-test-id="tooltip"]').trigger('focus');
cy.get('[aria-describedby="tippy-4"]').should('be.visible');

cy.get('[data-test-id="coinflipGameId"] [data-test-id="tooltip"]').trigger('focus');
cy.get('[aria-describedby="tippy-5"]').should('be.visible');

cy.get('[data-test-id="coinflipBetSize"] [data-test-id="tooltip"]').trigger('focus');
cy.get('[aria-describedby="tippy-6"]').should('be.visible');

cy.get('[data-test-id="coinflipRewardSize"] [data-test-id="tooltip"]').trigger('focus');
cy.get('[aria-describedby="tippy-7"]').should('be.visible');

cy.get('[data-test-id="coinflipGameResult"] [data-test-id="tooltip"]').trigger('focus');
cy.get('[aria-describedby="tippy-8"]').should('be.visible');
});
});
2 changes: 1 addition & 1 deletion cypress/integration/Farming/FormExists.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,6 @@ describe('Form exists', () => {
// Check if 'Earn extra income' text is ok
cy.get('[data-test-id="farmingListPendingRewards"]').should('contain', 'Earn extra income with QuipuSwap');
//Check if one of the farmings is availible
cy.get('[href="/farming/6"]').should('exist');
cy.get('[href="/farming/v1/19"]').should('exist');
});
});
2 changes: 1 addition & 1 deletion cypress/integration/Farming/Tooltip.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
describe('Tooltips in the card', () => {
it('Should_DisplayTooltips_When_HoweringMouseOverInTheCard', () => {
// Go to the Farming number 5
cy.visit('/farming/5');
cy.visit('/farming/v1/5');
// check all tooltips
cy.get('[data-test-id="farmingListPendingRewards"] [data-test-id="yourShare"] [data-test-id="tooltip"]').trigger(
'focus'
Expand Down
2 changes: 1 addition & 1 deletion cypress/integration/Farming/UnstakeForm.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

describe('Unstake form exists', () => {
beforeEach(() => {
cy.visit('/farming/5');
cy.visit('/farming/v1/5');
cy.get('[data-test-id="acceptCookieButton"]').click();
});
it('Should_HiglightUnstakeForm_When_ClickOnUnstakeTab', () => {
Expand Down
1 change: 1 addition & 0 deletions cypress/integration/Liquidity/Tooltips.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
describe('Tooltips', () => {
it('Should_DisplayTooltips_When_HowerMouseOverTheTooltipIcons', () => {
cy.visit('/liquidity/add/tez-KT193D4vozYnhGJQVtw7CoxxqphqUEEwK6Vb_0');
cy.get('[data-test-id="acceptCookieButton"]').click();
cy.get('[data-test-id="poolDetails"] [data-test-id="pairAddress"] [data-test-id="tooltip"]').trigger('focus');
cy.get('[aria-describedby="tippy-1"]').should('be.visible');
cy.get('[data-test-id="poolDetails"] [data-test-id="pairId"] [data-test-id="tooltip"]').trigger('focus');
Expand Down
31 changes: 3 additions & 28 deletions cypress/integration/SSL/Tooltip.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,36 +7,11 @@ describe('Tooltips', () => {
cy.get('[data-test-id="farming-item-0"]').click();
});
it('Should_DisplayTooltips_When_HowerMouseOverTheTooltipIcons', () => {
cy.get('[data-test-id="pairAddress"] [data-test-id="tooltip"]').trigger('focus');
cy.get('[aria-describedby="tippy-20"]').should('be.visible');
cy.get('[data-test-id="pairId"] [data-test-id="tooltip"]').trigger('focus');
cy.get('[aria-describedby="tippy-21"]').should('be.visible');
cy.get('[data-test-id="tvl"] [data-test-id="tooltip"]').trigger('focus');
cy.get('[aria-describedby="tippy-22"]').should('be.visible');

cy.contains('[data-test-id="cellName"]', 'Token KUSD locked')
.parents('h6').find('[data-test-id="tooltip"]').trigger('focus');
cy.get('[aria-describedby="tippy-29"]').should('be.visible');

cy.contains('[data-test-id="cellName"]', 'Token USDtz locked')
.parents('h6').find('[data-test-id="tooltip"]').trigger('focus');
cy.get('[aria-describedby="tippy-30"]').should('be.visible');

cy.contains('[data-test-id="cellName"]', 'Token uUSD locked')
.parents('h6').find('[data-test-id="tooltip"]').trigger('focus');
cy.get('[aria-describedby="tippy-31"]').should('be.visible');

cy.contains('[data-test-id="cellName"]', 'Total LP Supply')
.parents('h6').find('[data-test-id="tooltip"]').trigger('focus');
cy.get('[aria-describedby="tippy-23"]').should('be.visible');

cy.get('[data-test-id="liquidityProvidersFee"] [data-test-id="tooltip"]').trigger('focus');
cy.get('[data-test-id="tvlInUsd"] [data-test-id="tooltip"]').trigger('focus');
cy.get('[aria-describedby="tippy-24"]').should('be.visible');
cy.get('[data-test-id="interfaceFee"] [data-test-id="tooltip"]').trigger('focus');
cy.get('[data-test-id="totalLpSupply"] [data-test-id="tooltip"]').trigger('focus');
cy.get('[aria-describedby="tippy-25"]').should('be.visible');
cy.get('[data-test-id="quipuStakersFee"] [data-test-id="tooltip"]').trigger('focus');
cy.get('[data-test-id="feesRate"] [data-test-id="tooltip"]').trigger('focus');
cy.get('[aria-describedby="tippy-26"]').should('be.visible');
cy.get('[data-test-id="devFee"] [data-test-id="tooltip"]').trigger('focus');
cy.get('[aria-describedby="tippy-27"]').should('be.visible');
});
});
2 changes: 1 addition & 1 deletion cypress/integration/Swap/PriceImpact.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ describe('Check color of the smile in the Exchange Details section', () => {
});
});
it('Should_DisplayYellowTextInPriceImpact_When_AmountNotOK', () => {
cy.get('[for="swap-send-from"]').click().type('555');
cy.get('[for="swap-send-from"]').click().type('888');
cy.get('[data-test-id="priceImpact"] span span')
.should('have.css', 'color', 'rgb(249, 166, 5)');
});
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "quipuswap-webapp-2",
"version": "3.1.36",
"version": "3.1.37",
"private": true,
"scripts": {
"pre-build": "node -v && npm -v && yarn -v && node ./scripts/build.js",
Expand Down
5 changes: 5 additions & 0 deletions src/config/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ export const LP_INPUT_KEY = 'lp-input';

//#region arrays
export const FISRT_INDEX = 0;
export const OPPOSITE_INDEX = 1;
//#endregion

//#region default value for token search
Expand Down Expand Up @@ -185,3 +186,7 @@ export const ZERO_BAKER_ADDRESS = 'tz1burnburnburnburnburnburnburjAYjjX';

// Choose token
export const SINGLE_TOKEN_VALUE = 1;

// toRealIfPossible / toAtomicIfPossible
export const DECIMALS_BASE = 10;
export const FALLBACK_DECIMALS = 0;
4 changes: 2 additions & 2 deletions src/modules/farming/hooks/loaders/use-get-farming-item.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,10 @@ export const useGetFarmingItem = () => {
);

const delayedGetFarmingItem = useCallback(
async (farmingId: BigNumber) => {
async (farmingId: BigNumber, old = true) => {
await sleep(DELAY_BEFORE_DATA_UPDATE);

await getFarmingItem(farmingId);
await getFarmingItem(farmingId, old);
},
[getFarmingItem]
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ export const useStakeFormViewModel = () => {
confirmationPopup(async () => {
await handleStakeSubmit(values, actions);

await delayedGetFarmingItem(defined(farmingItem).id);
await delayedGetFarmingItem(defined(farmingItem).id, defined(farmingItem).old);
});
};

Expand Down
4 changes: 2 additions & 2 deletions src/modules/farming/pages/list/farming-list-data.helper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ export const farmingListDataHelper = (item: FarmingListItemWithBalances, account

const shouldShowUserStats = !isNull(accountPkh) && (item.depositBalance?.gt(ZERO) || item.earnBalance?.gt(ZERO));

const farmingItemDTI = item.old ? `farming-item-v1-${item.id}` : `farming-item-${item.id}`;
const itemDTI = item.old ? `farming-item-v1-${item.id}` : `farming-item-${item.id}`;

const labels = getFarmingLabel(item);

Expand Down Expand Up @@ -98,6 +98,6 @@ export const farmingListDataHelper = (item: FarmingListItemWithBalances, account
outputToken: item.rewardToken,
isNew: NEW_FARMINGS.includes(item.id.toFixed()),
status: { status: item.stakeStatus, filled: true },
farmingItemDTI
itemDTI
};
};
15 changes: 10 additions & 5 deletions src/modules/new-liquidity/api/add-dex-two-liquidity.api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,12 @@ import { TezosToolkit } from '@taquito/taquito';
import { BigNumber } from 'bignumber.js';

import { withApproveApiForManyTokens } from '@blockchain';
import { ZERO_BAKER_ADDRESS } from '@config/constants';
import { DEX_TWO_CONTRACT_ADDRESS } from '@config/environment';
import { isGreaterThanZero, sortTokensAmounts } from '@shared/helpers';
import { isGreaterThanZero } from '@shared/helpers';
import { AmountToken } from '@shared/types';

const ZERO_BAKER_ADDRESS = 'tz1burnburnburnburnburnburnburjAYjjX';
import { getTezValue } from '../helpers/get-tez-value';

export const addDexTwoLiquidityApi = async (
tezos: TezosToolkit,
Expand All @@ -20,12 +21,16 @@ export const addDexTwoLiquidityApi = async (
if (!candidate) {
candidate = ZERO_BAKER_ADDRESS;
}

const dexTwoContract = await tezos.wallet.at(DEX_TWO_CONTRACT_ADDRESS);
const sortedTokes = sortTokensAmounts(tokensAndAmounts);

const tezValue = getTezValue(tokensAndAmounts);

const [tokenA, tokenB] = tokensAndAmounts;

const dexTwoLiquidityParams = dexTwoContract.methods
.invest_liquidity(itemId, sortedTokes.amountA, sortedTokes.amountB, shares, accountPkh, candidate, deadline)
.toTransferParams();
.invest_liquidity(itemId, tokenA.amount, tokenB.amount, shares, accountPkh, candidate, deadline)
.toTransferParams({ mutez: true, amount: tezValue.toNumber() });

const cleanedTokensAmount = tokensAndAmounts.filter(({ amount }) => isGreaterThanZero(amount));

Expand Down
2 changes: 2 additions & 0 deletions src/modules/new-liquidity/api/index.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
export * from './get-new-liquidity-list.api';
export * from './get-new-liquidity-stats.api';
export * from './add-dex-two-liquidity.api';
export * from './remove-dex-two-liquidity.api';
export * from './create-new-liquidity-pool.api';
31 changes: 31 additions & 0 deletions src/modules/new-liquidity/api/remove-dex-two-liquidity.api.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import { TezosToolkit } from '@taquito/taquito';
import { BigNumber } from 'bignumber.js';

import { sendBatch } from '@blockchain';
import { ZERO_BAKER_ADDRESS } from '@config/constants';
import { DEX_TWO_CONTRACT_ADDRESS } from '@config/environment';
import { AmountToken } from '@shared/types';

export const removeDexTwoLiquidityApi = async (
tezos: TezosToolkit,
shares: BigNumber,
tokensAndAmounts: Array<AmountToken>,
deadline: string,
accountPkh: string,
candidate: string,
itemId: BigNumber
) => {
if (!candidate) {
candidate = ZERO_BAKER_ADDRESS;
}

const dexTwoContract = await tezos.wallet.at(DEX_TWO_CONTRACT_ADDRESS);

const [tokenA, tokenB] = tokensAndAmounts;

const dexTwoLiquidityParams = dexTwoContract.methods
.divest_liquidity(itemId, tokenA.amount, tokenB.amount, shares, accountPkh, candidate, deadline)
.toTransferParams();

return await sendBatch(tezos, [dexTwoLiquidityParams]);
};
6 changes: 6 additions & 0 deletions src/modules/new-liquidity/dto/liquidity-item.dto.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,12 @@ export class LiquidityItemDto implements LiquidityItem {
@Typed()
type: string;

@Typed()
feesRate: string;

@Typed({ optional: true })
currentDelegate: string;

@Typed()
tvlInUsd: BigNumber;

Expand Down
10 changes: 10 additions & 0 deletions src/modules/new-liquidity/helpers/get-tez-value.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import BigNumber from 'bignumber.js';

import { isTezosToken } from '@shared/helpers';
import { AmountToken } from '@shared/types';

const ZERO_BN = new BigNumber('0');

export const getTezValue = (tokensAndAmounts: Array<AmountToken>) => {
return tokensAndAmounts.find(item => isTezosToken(item.token))?.amount ?? ZERO_BN;
};
9 changes: 9 additions & 0 deletions src/modules/new-liquidity/helpers/get-value-with-fee.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import BigNumber from 'bignumber.js';

import { PERCENTAGE_100 } from '@config/constants';

export const getValueWithFee = (value: BigNumber, fee: BigNumber.Value) => {
const percentFee = new BigNumber(fee).multipliedBy(PERCENTAGE_100);

return value.multipliedBy(PERCENTAGE_100.minus(percentFee)).dividedBy(PERCENTAGE_100);
};
4 changes: 3 additions & 1 deletion src/modules/new-liquidity/helpers/index.ts
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
export * from './is-hot-pool.helper';
export * from './is-hot-pool';
export * from './get-value-with-fee';
export * from './get-tez-value';
1 change: 1 addition & 0 deletions src/modules/new-liquidity/hooks/blockchain/index.ts
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
export * from './use-add-liquidity';
export * from './use-remove-liquidity';
Loading

0 comments on commit 615cb52

Please sign in to comment.