From 73faf73d1437bb082cd4e2f1158f5ac707d459c7 Mon Sep 17 00:00:00 2001 From: Victor Chepkasov <92711919+SugaryVictor@users.noreply.github.com> Date: Wed, 30 Aug 2023 08:27:39 +0500 Subject: [PATCH] edit scripts --- scripts/metadata/1.json | 6 +- scripts/metadata_hashes.json | 2 +- scripts/nft_promissory_class.py | 60 ++++++++++++++++++ .../{nft_promissory.py => token_scripts.py} | 62 +------------------ tests/conftest.py | 2 +- tests/test_nft_promissory.py | 17 +++-- 6 files changed, 76 insertions(+), 73 deletions(-) create mode 100644 scripts/nft_promissory_class.py rename scripts/{nft_promissory.py => token_scripts.py} (55%) diff --git a/scripts/metadata/1.json b/scripts/metadata/1.json index f44d024..f326eaf 100644 --- a/scripts/metadata/1.json +++ b/scripts/metadata/1.json @@ -5,11 +5,11 @@ "attributes": [ { "trait_type": "Holder address", - "value": "0x1d9458A5F6A5207478207fA4e3C491A9B20d434F" + "value": "0xE4B9efD42Ba4d46d5D4CAe1fa71950f10f01B65e" }, { "trait_type": "Debtor address", - "value": "0x6178FF3747b0d7B7D18CBeF99D82ed789CE05182" + "value": "0x4cD3d2f42b651b5bc543221DAF1F138147D92387" }, { "trait_type": "NFT id", @@ -28,7 +28,7 @@ { "display_type": "date", "trait_type": "Date of registration", - "value": 1692351515 + "value": 6935975920661 }, { "display_type": "date", diff --git a/scripts/metadata_hashes.json b/scripts/metadata_hashes.json index 860e5fa..0352154 100644 --- a/scripts/metadata_hashes.json +++ b/scripts/metadata_hashes.json @@ -1 +1 @@ -["", "", ""] \ No newline at end of file +["", "", "", "", "", ""] \ No newline at end of file diff --git a/scripts/nft_promissory_class.py b/scripts/nft_promissory_class.py new file mode 100644 index 0000000..29c1492 --- /dev/null +++ b/scripts/nft_promissory_class.py @@ -0,0 +1,60 @@ +from brownie import PromissoryNFT, Promissory, accounts + +class Promissory: + def __init__(self, _promissory): + self.promissory = _promissory + self.holder = _promissory.promissory()[0] + self.token_id = _promissory.promissory()[2] + + def set_holder_consent(self, _from): + self.promissory.setHolderConsent({ + 'from': _from, + 'priority_fee': '0.2 gwei' + }) + print('Holder consent saved!') + + def set_debtor_consent(self, _from): + self.promissory.setDebtorConsent({ + 'from': _from, + 'priority_fee': '0.2 gwei' + }) + print('Debtor consent saved!') + + # Оплата векселя + # Требование: + # - _from == debtor + def pay_promissory(self, _debtorAddress): + self.promissory.payPromissory({ + 'from': _debtorAddress, + 'value': '1100 wei', + 'priority_fee': '10 wei' + }) + # update_metadata(_from, token_id) + PromissoryNFT[-1].burnCollectible(self.token_id, { + 'from': self.holder, + 'priority_fee': '10 wei' + }) + exist = PromissoryNFT[-1].existsCollectible(self.token_id, { + 'from': self.holder, + 'priority_fee': '10 wei' + }) + assert exist == False + self.promissory.killContract({ + 'from': self.holder, + 'priority_fee': '10 wei' + }) + return exist + + # Передача токена другому лицу (_to) + # Требование: + # - Разрешение распроряжаться токеном (approve) у передающего (owner) + # - Токен должен сущствовать + def transfer_token(self, to): + PromissoryNFT[-1].transferFrom(self.holder, to, self.token_id, { + 'from': self.holder, + 'priority_fee': '10 wei' + }) + self.promissory.setNewHolder(to, { + 'from': self.holder, + 'priority_fee': '10 wei' + }) \ No newline at end of file diff --git a/scripts/nft_promissory.py b/scripts/token_scripts.py similarity index 55% rename from scripts/nft_promissory.py rename to scripts/token_scripts.py index 6989302..1ff1382 100644 --- a/scripts/nft_promissory.py +++ b/scripts/token_scripts.py @@ -17,10 +17,10 @@ def deploy_promissory_nft(_from): # Получение адреса контракта векселя по id, def get_promissory(_from, promissory_id): - info = PromissoryNFT[-1].getPromissory(promissory_id, { + promissory = PromissoryNFT[-1].getPromissory(promissory_id, { 'from': _from }) - return Promissory.at(info) + return Promissory.at(promissory) # Создание контракта, метаданных и выпуск токена def create_promissory(_from, _debtor, _promissory_commission, _promissory_amount, _date_of_close): @@ -47,22 +47,6 @@ def create_promissory(_from, _debtor, _promissory_commission, _promissory_amount }) print('Token minted!') -def set_holder_consent(_from, token_id): - promissory = get_promissory(_from, token_id) - promissory.setHolderConsent({ - 'from':_from, - 'priority_fee': '0.2 gwei' - }) - print('Holder consent saved!') - -def set_debtor_consent(_from, token_id): - promissory = get_promissory(_from, token_id) - promissory.setDebtorConsent({ - 'from':_from, - 'priority_fee': '0.2 gwei' - }) - print('Debtor consent saved!') - # получение разрешения контракту передавать токен # _from - владелец токена # _to - лицо, которому даётся возможность управлять токеном @@ -72,44 +56,4 @@ def approve(_from, _to, token_id): 'from': _from, 'priority_fee': '10 wei' }) - print('Approved!') - -# Оплата векселя -# Требование: -# - _from == debtor -def pay_promissory(_from, token_id): - promissory = get_promissory(_from, token_id) - promissory.payPromissory({ - 'from': _from, - 'value': '1100 wei', - 'priority_fee': '10 wei' - }) - # update_metadata(_from, token_id) - PromissoryNFT[-1].burnCollectible(token_id, { - 'from': _from, - 'priority_fee': '10 wei' - }) - exist = PromissoryNFT[-1].existsCollectible(token_id, { - 'from': _from, - 'priority_fee': '10 wei' - }) - promissory.killContract({ - 'from': _from, - 'priority_fee': '10 wei' - }) - return exist - -# Передача токена другому лицу (_to) -# Требование: -# - Разрешение распроряжаться токеном (approve) у передающего (owner) -# - Токен должен сущствовать -def transfer_token(owner, to, token_id): - PromissoryNFT[-1].transferFrom(owner, to, token_id, { - 'from': owner, - 'priority_fee': '10 wei' - }) - promissory = get_promissory(owner, token_id) - promissory.setNewHolder(to, { - 'from': owner, - 'priority_fee': '10 wei' - }) \ No newline at end of file + print('Approved!') \ No newline at end of file diff --git a/tests/conftest.py b/tests/conftest.py index f25bde3..028d4ac 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,7 +1,7 @@ import pytest from brownie import accounts, network from scripts.promissory import deploy_promissory -from scripts.nft_promissory import deploy_promissory_nft +from scripts.token_scripts import deploy_promissory_nft @pytest.fixture(scope='session') def holder(): diff --git a/tests/test_nft_promissory.py b/tests/test_nft_promissory.py index ca07f5f..99674cf 100644 --- a/tests/test_nft_promissory.py +++ b/tests/test_nft_promissory.py @@ -1,14 +1,11 @@ import pytest from brownie import PromissoryNFT, chain from conftest import * -from scripts.nft_promissory import ( +from scripts.nft_promissory_class import * +from scripts.token_scripts import ( get_promissory, create_promissory, - set_holder_consent, - set_debtor_consent, - pay_promissory, approve, - transfer_token ) def test_nft_promissory_deploy(promissory_nft): @@ -30,18 +27,20 @@ def test_get_promissory_token_info(holder, debtor, promissory_nft): def test_pay_promissory(holder, debtor, promissory_nft): create_promissory(holder, debtor, 10, 1000, 1693335600) token_id = PromissoryNFT[-1].tokenCounter() - set_holder_consent(holder, token_id) - set_debtor_consent(debtor, token_id) - exist_token = pay_promissory(debtor, token_id) + promissory = Promissory(get_promissory(holder, token_id)) + promissory.set_holder_consent(holder) + promissory.set_debtor_consent(debtor) + exist_token = promissory.pay_promissory(debtor) assert exist_token == False def test_transfer_token(holder, debtor, third_party, promissory_nft): create_promissory(holder, debtor, 10, 1000, 1693335600) token_id = PromissoryNFT[-1].tokenCounter() + promissory = Promissory(get_promissory(holder, token_id)) # _to - лицо, которому передаётся вексель to = third_party if network.show_active() != 'development' else accounts[2] approve(holder, PromissoryNFT[-1].address, token_id) - transfer_token(holder, to, token_id) + promissory.transfer_token(to) # получение ненешнего владельца токена векселя owner = PromissoryNFT[-1].ownerOf(token_id, { 'from': to,