public async Task ShouldGetAllTokensUsingServerFeatures() { var request = new GetAllOwnedTokensSharedRequest(); GetAllOwnedTokensSharedResponse totalTokens = await Mediator.Send(request); totalTokens.TokenIdList.Count.ShouldBe(3); }
public override async Task <WebThreeState> Handle ( GetAllOwnedTokensAction aGetAllOwnedTokensClientRequest, CancellationToken aCancellationToken ) { TokenDataList = new List <TokenBase>(); WebThreeState WebThreeState = Store.GetState <WebThreeState>(); GetAllOwnedTokensSharedResponse aTokenList = await HttpClient.GetJsonAsync <GetAllOwnedTokensSharedResponse>(GetAllOwnedTokensSharedRequest.Route); WebThreeState.OwnedTokenIdList = aTokenList.TokenIdList; if (aTokenList.TokenIdList.Count > 0) { foreach (uint token in aTokenList.TokenIdList) { // TokenId var ownedToken = new TokenBase() { TokenId = token }; // TokenNFtTypeId ownedToken.TemplateData = await GetNft(ownedToken.TokenId); // Get Token Nft Type Data // Token Balance ownedToken.Balance = await GetBalance(token); // Token ImmutableData (Data) string aDataString = await GetDataString(token); DeserializeAndAddData(ownedToken, aDataString); } WebThreeState.TokenDataList = TokenDataList; WebThreeState.CurrentTokenData = TokenDataList[0]; WebThreeState.CurrentTokenNftType = WebThreeState.CurrentTokenData.TemplateData.NftId; } return(WebThreeState); }
//List<NftTemplate> TemplateDataList => WebThreeState.TemplateDataList; public async Task ShouldBuildTokenList() { WebThreeState webThree = await Mediator.Send(new GetNftTypesClientFeaturesAction()); GetAllOwnedTokensSharedResponse aTokenList = await HttpClient.GetJsonAsync <GetAllOwnedTokensSharedResponse>(GetAllOwnedTokensSharedRequest.Route); aTokenList.TokenIdList.Count.ShouldBeGreaterThan(3); aTokenList.TokenIdList.Contains(3).ShouldBe(true); aTokenList.TokenIdList.Contains(4).ShouldBe(true); aTokenList.TokenIdList.Contains(5).ShouldBe(true); foreach (uint token in aTokenList.TokenIdList) { // TokenId var ownedToken = new TokenBase() { TokenId = token }; // TokenNFtTypeId string getNftTypeUri = GetTokenNftTypeSharedRequest.RouteFactory((int)token); WebThreeState NftTypeContainer = await Mediator.Send(new FetchTokenNftTypeAction() { TokenId = (int)ownedToken.TokenId }); // TokenNftTypeData Should already have the data in state so no need to make a service call NftTemplate nftType = webThree.TemplateDataList.Find(nft => nft.NftId == NftTypeContainer.CurrentTokenNftType); ownedToken.TemplateData = nftType; // Token Balance BalanceOfSharedResponse BalanceContainer = await HttpClient.GetJsonAsync <BalanceOfSharedResponse>(BalanceOfSharedRequest.RouteFactory((int)token)); ownedToken.Balance = BalanceContainer.Balance; // Token ImmutableData (Data) ownedToken.TemplateData.ShouldBeOfType <NftTemplate>(); ViewTokenDataSharedResponse DataString = await HttpClient.GetJsonAsync <ViewTokenDataSharedResponse>(ViewTokenDataSharedRequest.RouteFactory((int)token)); DataString.TokenDataString.ShouldNotBe(null); if (token == 3) { byte[] serializedImmutableData = Convert.FromBase64String(DataString.TokenDataString); // need to figure out a way to get the type occording to the nftId ImmutableData DeserializedObject = Serializer.Deserialize <ImmutableData>(serializedImmutableData, options); // options == 0 ownedToken.ImmDataObj = DeserializedObject; // Add to StateList TokenDataList.Add(ownedToken); } else { ownedToken.Data = DataString.TokenDataString; TokenDataList.Add(ownedToken); } } TokenDataList.Count.ShouldBe(3); }