From f57dd47c6677b7e1348c1a333bcbe4b409be94a2 Mon Sep 17 00:00:00 2001 From: Daniel Shiposha Date: Mon, 30 May 2022 12:05:36 +0000 Subject: [PATCH] fix: unit tests --- --- a/runtime/tests/src/lib.rs +++ b/runtime/tests/src/lib.rs @@ -58,6 +58,7 @@ Fungible: pallet_fungible::{Pallet, Storage}, Refungible: pallet_refungible::{Pallet, Storage}, Nonfungible: pallet_nonfungible::{Pallet, Storage}, + EVM: pallet_evm::{Pallet, Config, Call, Storage, Event}, } ); --- a/runtime/tests/src/tests.rs +++ b/runtime/tests/src/tests.rs @@ -19,8 +19,9 @@ use up_data_structs::{ COLLECTION_NUMBER_LIMIT, CollectionId, CreateItemData, CreateFungibleData, CreateNftData, CreateReFungibleData, MAX_DECIMAL_POINTS, COLLECTION_ADMINS_LIMIT, TokenId, - MAX_TOKEN_OWNERSHIP, CreateCollectionData, CollectionField, SchemaVersion, CollectionMode, - AccessMode, + MAX_TOKEN_OWNERSHIP, CreateCollectionData, CollectionMode, + AccessMode, CollectionPermissions, PropertyKeyPermission, PropertyPermission, + Property, CollectionPropertiesVec, CollectionPropertiesPermissionsVec, }; use frame_support::{assert_noop, assert_ok, assert_err}; use sp_std::convert::TryInto; @@ -46,8 +47,12 @@ fn default_nft_data() -> CreateNftData { CreateNftData { - const_data: vec![1, 2, 3].try_into().unwrap(), - properties: vec![].try_into().unwrap(), + properties: vec![ + Property { + key: b"test-prop".to_vec().try_into().unwrap(), + value: b"test-nft-prop".to_vec().try_into().unwrap(), + }, + ].try_into().unwrap(), } } @@ -72,12 +77,30 @@ let col_name1: Vec = "Test1\0".encode_utf16().collect::>(); let col_desc1: Vec = "TestDescription1\0".encode_utf16().collect::>(); let token_prefix1: Vec = b"token_prefix1\0".to_vec(); + let token_property_permissions: CollectionPropertiesPermissionsVec = vec![ + PropertyKeyPermission { + key: b"test-prop".to_vec().try_into().unwrap(), + permission: PropertyPermission { + mutable: true, + collection_admin: false, + token_owner: true, + }, + }, + ].try_into().unwrap(); + let properties: CollectionPropertiesVec = vec![ + Property { + key: b"test-collection-prop".to_vec().try_into().unwrap(), + value: b"test-collection-value".to_vec().try_into().unwrap(), + } + ].try_into().unwrap(); let data: CreateCollectionData = CreateCollectionData { name: col_name1.try_into().unwrap(), description: col_desc1.try_into().unwrap(), token_prefix: token_prefix1.try_into().unwrap(), mode: mode.clone(), + token_property_permissions: token_property_permissions.clone(), + properties: properties.clone(), ..Default::default() }; @@ -113,9 +136,47 @@ .token_prefix, saved_prefix ); + assert_eq!( + get_collection_property_permissions(id).as_slice(), + token_property_permissions.as_slice() + ); + assert_eq!( + get_collection_properties(id).as_slice(), + properties.as_slice() + ); id } +fn get_collection_property_permissions(collection_id: CollectionId) -> Vec { + >::property_permissions(collection_id) + .into_iter() + .map(|(key, permission)| PropertyKeyPermission { + key, + permission, + }) + .collect() +} + +fn get_collection_properties(collection_id: CollectionId) -> Vec { + >::collection_properties(collection_id) + .into_iter() + .map(|(key, value)| Property { + key, + value, + }) + .collect() +} + +fn get_token_properties(collection_id: CollectionId, token_id: TokenId) -> Vec { + >::token_properties((collection_id, token_id)) + .into_iter() + .map(|(key, value)| Property { + key, + value, + }) + .collect() +} + fn create_test_collection(mode: &CollectionMode, id: CollectionId) -> CollectionId { create_test_collection_for_owner(&mode, 1, id) } @@ -138,26 +199,6 @@ // #region #[test] -fn set_version_schema() { - new_test_ext().execute_with(|| { - let origin1 = Origin::signed(1); - let collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1)); - - assert_ok!(Unique::set_schema_version( - origin1, - collection_id, - SchemaVersion::Unique - )); - assert_eq!( - >::get(collection_id) - .unwrap() - .schema_version, - SchemaVersion::Unique - ); - }); -} - -#[test] fn check_not_sufficient_founds() { new_test_ext().execute_with(|| { let acc: u64 = 1; @@ -212,8 +253,10 @@ let data = default_nft_data(); create_test_item(collection_id, &data.clone().into()); - let item = >::get((collection_id, 1)).unwrap(); - assert_eq!(item.const_data, data.const_data.into_inner()); + assert_eq!( + get_token_properties(collection_id, TokenId(1)).as_slice(), + data.properties.as_slice(), + ); }); } @@ -239,12 +282,10 @@ .collect() )); for (index, data) in items_data.into_iter().enumerate() { - let item = >::get(( - CollectionId(1), - TokenId((index + 1) as u32), - )) - .unwrap(); - assert_eq!(item.const_data.to_vec(), data.const_data.into_inner()); + assert_eq!( + get_token_properties(CollectionId(1), TokenId(index as u32 + 1)).as_slice(), + data.properties.as_slice() + ); } }); } @@ -701,12 +742,6 @@ let data = default_nft_data(); create_test_item(collection_id, &data.clone().into()); assert_eq!( - &>::get((collection_id, TokenId(1))) - .unwrap() - .const_data, - &data.const_data.into_inner() - ); - assert_eq!( >::get((collection_id, account(1))), 1 ); @@ -716,15 +751,14 @@ ); // Allow allow-list users to mint and add accounts 1, 2, and 3 to allow-list - assert_ok!(Unique::set_mint_permission( - origin1.clone(), - CollectionId(1), - true - )); - assert_ok!(Unique::set_public_access_mode( + assert_ok!(Unique::set_collection_permissions( origin1.clone(), CollectionId(1), - AccessMode::AllowList + CollectionPermissions { + mint_mode: Some(true), + access: Some(AccessMode::AllowList), + nesting: None, + } )); assert_ok!(Unique::add_to_allow_list( origin1.clone(), @@ -796,15 +830,14 @@ ); // Allow public minting, enable allow-list and add accounts 1, 2, 3 to allow-list - assert_ok!(Unique::set_mint_permission( - origin1.clone(), - CollectionId(1), - true - )); - assert_ok!(Unique::set_public_access_mode( + assert_ok!(Unique::set_collection_permissions( origin1.clone(), CollectionId(1), - AccessMode::AllowList + CollectionPermissions { + mint_mode: Some(true), + access: Some(AccessMode::AllowList), + nesting: None, + } )); assert_ok!(Unique::add_to_allow_list( origin1.clone(), @@ -896,15 +929,14 @@ let origin1 = Origin::signed(1); let origin2 = Origin::signed(2); - assert_ok!(Unique::set_mint_permission( - origin1.clone(), - CollectionId(1), - true - )); - assert_ok!(Unique::set_public_access_mode( + assert_ok!(Unique::set_collection_permissions( origin1.clone(), CollectionId(1), - AccessMode::AllowList + CollectionPermissions { + mint_mode: Some(true), + access: Some(AccessMode::AllowList), + nesting: None, + } )); assert_ok!(Unique::add_to_allow_list( origin1.clone(), @@ -1146,15 +1178,14 @@ let collection_id = create_test_collection(&CollectionMode::ReFungible, CollectionId(1)); let origin1 = Origin::signed(1); - assert_ok!(Unique::set_mint_permission( - origin1.clone(), - collection_id, - true - )); - assert_ok!(Unique::set_public_access_mode( + assert_ok!(Unique::set_collection_permissions( origin1.clone(), collection_id, - AccessMode::AllowList + CollectionPermissions { + mint_mode: Some(true), + access: Some(AccessMode::AllowList), + nesting: None, + } )); assert_ok!(Unique::add_to_allow_list( origin1.clone(), @@ -1392,15 +1423,14 @@ account(2) ); - assert_ok!(Unique::set_mint_permission( - origin1.clone(), - CollectionId(1), - true - )); - assert_ok!(Unique::set_public_access_mode( + assert_ok!(Unique::set_collection_permissions( origin1.clone(), CollectionId(1), - AccessMode::AllowList + CollectionPermissions { + mint_mode: Some(true), + access: Some(AccessMode::AllowList), + nesting: None, + } )); assert_ok!(Unique::add_to_allow_list( origin1.clone(), @@ -1722,10 +1752,14 @@ let data = default_nft_data(); create_test_item(collection_id, &data.into()); - assert_ok!(Unique::set_public_access_mode( + assert_ok!(Unique::set_collection_permissions( origin1.clone(), collection_id, - AccessMode::AllowList + CollectionPermissions { + mint_mode: None, + access: Some(AccessMode::AllowList), + nesting: None, + } )); assert_ok!(Unique::add_to_allow_list( origin1.clone(), @@ -1750,10 +1784,14 @@ let data = default_nft_data(); create_test_item(collection_id, &data.into()); - assert_ok!(Unique::set_public_access_mode( + assert_ok!(Unique::set_collection_permissions( origin1.clone(), collection_id, - AccessMode::AllowList + CollectionPermissions { + mint_mode: None, + access: Some(AccessMode::AllowList), + nesting: None, + } )); assert_ok!(Unique::add_to_allow_list( origin1.clone(), @@ -1811,10 +1849,14 @@ let data = default_nft_data(); create_test_item(collection_id, &data.into()); - assert_ok!(Unique::set_public_access_mode( + assert_ok!(Unique::set_collection_permissions( origin1.clone(), collection_id, - AccessMode::AllowList + CollectionPermissions { + mint_mode: None, + access: Some(AccessMode::AllowList), + nesting: None, + } )); assert_ok!(Unique::add_to_allow_list( origin1.clone(), @@ -1840,10 +1882,14 @@ let data = default_nft_data(); create_test_item(collection_id, &data.into()); - assert_ok!(Unique::set_public_access_mode( + assert_ok!(Unique::set_collection_permissions( origin1.clone(), collection_id, - AccessMode::AllowList + CollectionPermissions { + mint_mode: None, + access: Some(AccessMode::AllowList), + nesting: None, + } )); assert_ok!(Unique::add_to_allow_list( origin1.clone(), @@ -1901,10 +1947,14 @@ let data = default_nft_data(); create_test_item(collection_id, &data.into()); - assert_ok!(Unique::set_public_access_mode( + assert_ok!(Unique::set_collection_permissions( origin1.clone(), collection_id, - AccessMode::AllowList + CollectionPermissions { + mint_mode: None, + access: Some(AccessMode::AllowList), + nesting: None, + } )); assert_noop!( Unique::burn_item(origin1.clone(), CollectionId(1), TokenId(1), 1).map_err(|e| e.error), @@ -1924,10 +1974,14 @@ let data = default_nft_data(); create_test_item(collection_id, &data.into()); - assert_ok!(Unique::set_public_access_mode( + assert_ok!(Unique::set_collection_permissions( origin1.clone(), collection_id, - AccessMode::AllowList + CollectionPermissions { + mint_mode: None, + access: Some(AccessMode::AllowList), + nesting: None, + } )); // do approve @@ -1951,10 +2005,14 @@ let origin1 = Origin::signed(1); - assert_ok!(Unique::set_public_access_mode( + assert_ok!(Unique::set_collection_permissions( origin1.clone(), collection_id, - AccessMode::AllowList + CollectionPermissions { + mint_mode: None, + access: Some(AccessMode::AllowList), + nesting: None, + } )); assert_ok!(Unique::add_to_allow_list( origin1.clone(), @@ -1989,10 +2047,14 @@ let origin1 = Origin::signed(1); // Toggle Allow List mode and add accounts 1 and 2 - assert_ok!(Unique::set_public_access_mode( + assert_ok!(Unique::set_collection_permissions( origin1.clone(), collection_id, - AccessMode::AllowList + CollectionPermissions { + mint_mode: None, + access: Some(AccessMode::AllowList), + nesting: None, + } )); assert_ok!(Unique::add_to_allow_list( origin1.clone(), @@ -2037,12 +2099,15 @@ let collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1)); let origin1 = Origin::signed(1); - assert_ok!(Unique::set_public_access_mode( + assert_ok!(Unique::set_collection_permissions( origin1.clone(), collection_id, - AccessMode::AllowList + CollectionPermissions { + mint_mode: Some(false), + access: Some(AccessMode::AllowList), + nesting: None, + } )); - assert_ok!(Unique::set_mint_permission(origin1, collection_id, false)); let data = default_nft_data(); create_test_item(collection_id, &data.into()); @@ -2058,15 +2123,14 @@ let origin1 = Origin::signed(1); let origin2 = Origin::signed(2); - assert_ok!(Unique::set_public_access_mode( + assert_ok!(Unique::set_collection_permissions( origin1.clone(), collection_id, - AccessMode::AllowList - )); - assert_ok!(Unique::set_mint_permission( - origin1.clone(), - collection_id, - false + CollectionPermissions { + mint_mode: Some(false), + access: Some(AccessMode::AllowList), + nesting: None, + } )); assert_ok!(Unique::add_collection_admin( @@ -2093,15 +2157,14 @@ let origin1 = Origin::signed(1); let origin2 = Origin::signed(2); - assert_ok!(Unique::set_public_access_mode( + assert_ok!(Unique::set_collection_permissions( origin1.clone(), collection_id, - AccessMode::AllowList - )); - assert_ok!(Unique::set_mint_permission( - origin1.clone(), - collection_id, - false + CollectionPermissions { + mint_mode: Some(false), + access: Some(AccessMode::AllowList), + nesting: None, + } )); assert_ok!(Unique::add_to_allow_list( origin1, @@ -2131,12 +2194,15 @@ let origin1 = Origin::signed(1); let origin2 = Origin::signed(2); - assert_ok!(Unique::set_public_access_mode( + assert_ok!(Unique::set_collection_permissions( origin1.clone(), collection_id, - AccessMode::AllowList + CollectionPermissions { + mint_mode: Some(false), + access: Some(AccessMode::AllowList), + nesting: None, + } )); - assert_ok!(Unique::set_mint_permission(origin1, collection_id, false)); assert_noop!( Unique::create_item( @@ -2159,12 +2225,15 @@ let origin1 = Origin::signed(1); - assert_ok!(Unique::set_public_access_mode( + assert_ok!(Unique::set_collection_permissions( origin1.clone(), collection_id, - AccessMode::AllowList + CollectionPermissions { + mint_mode: Some(true), + access: Some(AccessMode::AllowList), + nesting: None, + } )); - assert_ok!(Unique::set_mint_permission(origin1, collection_id, true)); let data = default_nft_data(); create_test_item(collection_id, &data.into()); @@ -2180,15 +2249,14 @@ let origin1 = Origin::signed(1); let origin2 = Origin::signed(2); - assert_ok!(Unique::set_public_access_mode( - origin1.clone(), - collection_id, - AccessMode::AllowList - )); - assert_ok!(Unique::set_mint_permission( + assert_ok!(Unique::set_collection_permissions( origin1.clone(), collection_id, - true + CollectionPermissions { + mint_mode: Some(true), + access: Some(AccessMode::AllowList), + nesting: None, + } )); assert_ok!(Unique::add_collection_admin( @@ -2215,12 +2283,15 @@ let origin1 = Origin::signed(1); let origin2 = Origin::signed(2); - assert_ok!(Unique::set_public_access_mode( + assert_ok!(Unique::set_collection_permissions( origin1.clone(), collection_id, - AccessMode::AllowList + CollectionPermissions { + mint_mode: Some(true), + access: Some(AccessMode::AllowList), + nesting: None, + } )); - assert_ok!(Unique::set_mint_permission(origin1, collection_id, true)); assert_noop!( Unique::create_item( @@ -2244,15 +2315,14 @@ let origin1 = Origin::signed(1); let origin2 = Origin::signed(2); - assert_ok!(Unique::set_public_access_mode( + assert_ok!(Unique::set_collection_permissions( origin1.clone(), collection_id, - AccessMode::AllowList - )); - assert_ok!(Unique::set_mint_permission( - origin1.clone(), - collection_id, - true + CollectionPermissions { + mint_mode: Some(true), + access: Some(AccessMode::AllowList), + nesting: None, + } )); assert_ok!(Unique::add_to_allow_list( origin1, @@ -2528,20 +2598,19 @@ ) .is_err()); - assert_ok!(Unique::set_public_access_mode( + assert_ok!(Unique::set_collection_permissions( origin1.clone(), collection_id, - AccessMode::AllowList + CollectionPermissions { + mint_mode: Some(true), + access: Some(AccessMode::AllowList), + nesting: None, + } )); assert_ok!(Unique::add_to_allow_list( origin1.clone(), collection_id, account2.clone() - )); - assert_ok!(Unique::set_mint_permission( - origin1.clone(), - collection_id, - true )); assert_ok!(Unique::create_item( -- gitstuff