difftreelog
Test all collection for total_pieces
in: master
10 files changed
client/rpc/src/lib.rsdiffbeforeafterboth--- a/client/rpc/src/lib.rs
+++ b/client/rpc/src/lib.rs
@@ -198,7 +198,7 @@
collection_id: CollectionId,
token_id: TokenId,
at: Option<BlockHash>,
- ) -> Result<u128>;
+ ) -> Result<Option<u128>>;
}
mod rmrk_unique_rpc {
@@ -472,7 +472,7 @@
pass_method!(collection_stats() -> CollectionStats, unique_api);
pass_method!(next_sponsored(collection: CollectionId, account: CrossAccountId, token: TokenId) -> Option<u64>, unique_api);
pass_method!(effective_collection_limits(collection_id: CollectionId) -> Option<CollectionLimits>, unique_api);
- pass_method!(total_pieces(collection_id: CollectionId, token_id: TokenId) -> u128, unique_api);
+ pass_method!(total_pieces(collection_id: CollectionId, token_id: TokenId) -> Option<u128>, unique_api);
}
#[allow(deprecated)]
pallets/common/src/lib.rsdiffbeforeafterboth--- a/pallets/common/src/lib.rs
+++ b/pallets/common/src/lib.rs
@@ -1383,7 +1383,7 @@
/// Amount of specific token account have (Applicable to fungible/refungible)
fn balance(&self, account: T::CrossAccountId, token: TokenId) -> u128;
/// Amount of token pieces
- fn total_pieces(&self, token: TokenId) -> u128;
+ fn total_pieces(&self, token: TokenId) -> Option<u128>;
fn allowance(
&self,
sender: T::CrossAccountId,
pallets/fungible/src/common.rsdiffbeforeafterboth--- a/pallets/fungible/src/common.rs
+++ b/pallets/fungible/src/common.rs
@@ -25,7 +25,8 @@
use up_data_structs::{Property, PropertyKey, PropertyValue, PropertyKeyPermission};
use crate::{
- Allowance, Balance, Config, Error, FungibleHandle, Pallet, SelfWeightOf, weights::WeightInfo,
+ Allowance, TotalSupply, Balance, Config, Error, FungibleHandle, Pallet, SelfWeightOf,
+ weights::WeightInfo,
};
pub struct CommonWeights<T: Config>(PhantomData<T>);
@@ -404,7 +405,10 @@
None
}
- fn total_pieces(&self, _token: TokenId) -> u128 {
- 0
+ fn total_pieces(&self, token: TokenId) -> Option<u128> {
+ if token != TokenId::default() {
+ return None;
+ }
+ <TotalSupply<T>>::try_get(self.id).ok()
}
}
pallets/nonfungible/src/common.rsdiffbeforeafterboth473 None473 None474 }474 }475475476 fn total_pieces(&self, _token: TokenId) -> u128 {476 fn total_pieces(&self, _token: TokenId) -> Option<u128> {477 1477 Some(1)478 }478 }479}479}480480pallets/refungible/src/common.rsdiffbeforeafterboth--- a/pallets/refungible/src/common.rs
+++ b/pallets/refungible/src/common.rs
@@ -410,7 +410,7 @@
Some(self)
}
- fn total_pieces(&self, token: TokenId) -> u128 {
+ fn total_pieces(&self, token: TokenId) -> Option<u128> {
<Pallet<T>>::total_pieces(self.id, token)
}
}
pallets/refungible/src/lib.rsdiffbeforeafterboth--- a/pallets/refungible/src/lib.rs
+++ b/pallets/refungible/src/lib.rs
@@ -711,7 +711,7 @@
Ok(())
}
- fn total_pieces(collection_id: CollectionId, token_id: TokenId) -> u128 {
- <TotalSupply<T>>::get((collection_id, token_id))
+ fn total_pieces(collection_id: CollectionId, token_id: TokenId) -> Option<u128> {
+ <TotalSupply<T>>::try_get((collection_id, token_id)).ok()
}
}
primitives/rpc/src/lib.rsdiffbeforeafterboth--- a/primitives/rpc/src/lib.rs
+++ b/primitives/rpc/src/lib.rs
@@ -80,6 +80,6 @@
fn collection_stats() -> Result<CollectionStats>;
fn next_sponsored(collection: CollectionId, account: CrossAccountId, token: TokenId) -> Result<Option<u64>>;
fn effective_collection_limits(collection_id: CollectionId) -> Result<Option<CollectionLimits>>;
- fn total_pieces(collection_id: CollectionId, token_id: TokenId) -> Result<u128>;
+ fn total_pieces(collection_id: CollectionId, token_id: TokenId) -> Result<Option<u128>>;
}
}
runtime/common/src/runtime_apis.rsdiffbeforeafterboth--- a/runtime/common/src/runtime_apis.rs
+++ b/runtime/common/src/runtime_apis.rs
@@ -143,7 +143,7 @@
Ok(<pallet_common::Pallet<Runtime>>::effective_collection_limits(collection))
}
- fn total_pieces(collection: CollectionId, token_id: TokenId) -> Result<u128, DispatchError> {
+ fn total_pieces(collection: CollectionId, token_id: TokenId) -> Result<Option<u128>, DispatchError> {
dispatch_unique_runtime!(collection.total_pieces(token_id))
}
}
tests/src/createItem.test.tsdiffbeforeafterboth--- a/tests/src/createItem.test.ts
+++ b/tests/src/createItem.test.ts
@@ -24,6 +24,8 @@
createCollectionWithPropsExpectSuccess,
createItemWithPropsExpectSuccess,
createItemWithPropsExpectFailure,
+ createCollection,
+ transferExpectSuccess,
} from './util/helpers';
const expect = chai.expect;
@@ -95,6 +97,68 @@
await createItemWithPropsExpectSuccess(alice, newCollectionID, createMode, [{key: 'key1', value: 'val1'}]);
});
+
+ it.only('Check total pieces of Fungible token', async () => {
+ await usingApi(async api => {
+ const createMode = 'Fungible';
+ const collectionId = await createCollectionExpectSuccess({mode: {type: createMode, decimalPoints: 0}});
+ const tokenId = await createItemExpectSuccess(alice, collectionId, createMode, bob.address);
+ {
+ const totalPieces = await api.rpc.unique.totalPieces(collectionId, tokenId);
+ expect(totalPieces.isSome).to.be.true;
+ expect(totalPieces.unwrap().toBigInt()).to.be.eq(10n);
+ }
+
+ await transferExpectSuccess(collectionId, tokenId, bob, alice, 1, createMode);
+ {
+ const totalPieces = await api.rpc.unique.totalPieces(collectionId, tokenId);
+ expect(totalPieces.isSome).to.be.true;
+ expect(totalPieces.unwrap().toBigInt()).to.be.eq(10n);
+ }
+ });
+ });
+
+ it.only('Check total pieces of NFT token', async () => {
+ await usingApi(async api => {
+ const createMode = 'NFT';
+ const collectionId = await createCollectionExpectSuccess({mode: {type: createMode}});
+ const tokenId = await createItemExpectSuccess(alice, collectionId, createMode, bob.address);
+ {
+ const totalPieces = await api.rpc.unique.totalPieces(collectionId, tokenId);
+ expect(totalPieces.isSome).to.be.true;
+ expect(totalPieces.unwrap().toBigInt()).to.be.eq(1n);
+ }
+
+ await transferExpectSuccess(collectionId, tokenId, bob, alice, 1, createMode);
+ {
+ const totalPieces = await api.rpc.unique.totalPieces(collectionId, tokenId);
+ expect(totalPieces.isSome).to.be.true;
+ expect(totalPieces.unwrap().toBigInt()).to.be.eq(1n);
+ }
+ });
+ });
+
+ it.only('Check total pieces of ReFungible token', async () => {
+ await usingApi(async api => {
+ const createMode = 'ReFungible';
+ const createCollectionResult = await createCollection(api, alice, {mode: {type: createMode}});
+ const collectionId = createCollectionResult.collectionId;
+ const amountPieces = 100n;
+ const tokenId = await createItemExpectSuccess(alice, collectionId, createMode, bob.address);
+ {
+ const totalPieces = await api.rpc.unique.totalPieces(collectionId, tokenId);
+ expect(totalPieces.isSome).to.be.true;
+ expect(totalPieces.unwrap().toBigInt()).to.be.eq(amountPieces);
+ }
+
+ await transferExpectSuccess(collectionId, tokenId, bob, alice, 60n, createMode);
+ {
+ const totalPieces = await api.rpc.unique.totalPieces(collectionId, tokenId);
+ expect(totalPieces.isSome).to.be.true;
+ expect(totalPieces.unwrap().toBigInt()).to.be.eq(amountPieces);
+ }
+ });
+ });
});
describe('Negative integration test: ext. createItem():', () => {
tests/src/refungible.test.tsdiffbeforeafterboth--- a/tests/src/refungible.test.ts
+++ b/tests/src/refungible.test.ts
@@ -68,27 +68,6 @@
});
});
- it.only('Check total pieces of token', async () => {
- await usingApi(async api => {
- const createCollectionResult = await createCollection(api, alice, {mode: {type: 'ReFungible'}});
- expect(createCollectionResult.success).to.be.true;
- const collectionId = createCollectionResult.collectionId;
- const amountPieces = 100n;
- const result = await createRefungibleToken(api, alice, collectionId, amountPieces);
- expect(result.success).to.be.true;
- {
- const totalPieces = await api.rpc.unique.totalPieces(collectionId, result.itemId);
- expect(totalPieces.toBigInt()).to.be.eq(amountPieces);
- }
-
- await transfer(api, collectionId, result.itemId, alice, bob, 60n);
- {
- const totalPieces = await api.rpc.unique.totalPieces(collectionId, result.itemId);
- expect(totalPieces.toBigInt()).to.be.eq(amountPieces);
- }
- });
- });
-
it('Transfer token pieces', async () => {
await usingApi(async api => {
const collectionId = (await createCollection(api, alice, {mode: {type: 'ReFungible'}})).collectionId;