< Summary

Class:DCL.Helpers.NFT.NFTHelper
Assembly:NFTHelper
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Helpers/NFTHelper/NFTHelper.cs
Covered lines:15
Uncovered lines:11
Coverable lines:26
Total lines:95
Line coverage:57.6% (15 of 26)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
NFTHelper()0%110100%
FetchNFTsFromOwner()0%8.836057.14%
FetchNFTInfo()0%8.836057.14%
FetchNFTInfoSingleAsset()0%19.126028.57%
GetMarket()0%330100%
GetMarket()0%330100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Helpers/NFTHelper/NFTHelper.cs

#LineLine coverage
 1using System;
 2using System.Collections;
 3using DCL.Helpers.NFT.Markets;
 4
 5namespace DCL.Helpers.NFT
 6{
 7    public static class NFTHelper
 8    {
 19        static INFTMarket market = new OpenSea();
 10
 11        /// <summary>
 12        /// Fetch NFT from owner
 13        /// </summary>
 14        /// <param name="address">owner address</param>
 15        /// <param name="onSuccess">success callback</param>
 16        /// <param name="onError">error callback</param>
 17        /// <returns>IEnumerator</returns>
 18        public static IEnumerator FetchNFTsFromOwner(string address, Action<NFTOwner> onSuccess, Action<string> onError)
 19        {
 5520            INFTMarket selectedMarket = null;
 11021            yield return GetMarket(address, (mkt) => selectedMarket = mkt);
 22
 223            if (selectedMarket != null)
 24            {
 225                yield return selectedMarket.FetchNFTsFromOwner(address, onSuccess, onError);
 026            }
 27            else
 28            {
 029                onError?.Invoke($"Market not found for asset {address}");
 30            }
 031        }
 32
 33        /// <summary>
 34        /// Fetch NFT. Request is added to a batch of requests to reduce the amount of request to the api.
 35        /// NOTE: for ERC1155 result does not contain the array of owners and sell price for this asset
 36        /// </summary>
 37        /// <param name="assetContractAddress">asset contract address</param>
 38        /// <param name="tokenId">asset token id</param>
 39        /// <param name="onSuccess">success callback</param>
 40        /// <param name="onError">error callback</param>
 41        /// <returns>IEnumerator</returns>
 42        public static IEnumerator FetchNFTInfo(string assetContractAddress, string tokenId, Action<NFTInfo> onSuccess, A
 43        {
 1144            INFTMarket selectedMarket = null;
 2245            yield return GetMarket(assetContractAddress, tokenId, (mkt) => selectedMarket = mkt);
 46
 847            if (selectedMarket != null)
 48            {
 849                yield return selectedMarket.FetchNFTInfo(assetContractAddress, tokenId, onSuccess, onError);
 050            }
 51            else
 52            {
 053                onError?.Invoke($"Market not found for asset {assetContractAddress}/{tokenId}");
 54            }
 055        }
 56
 57        /// <summary>
 58        /// Fetch NFT. Request is fetch directly to the api instead of batched with other requests in a single query.
 59        /// Please try to use `FetchNFTInfo` if ownership info is not relevant for your use case.
 60        /// NOTE: result it does contain the array of owners for ERC1155 NFTs
 61        /// </summary>
 62        /// <param name="assetContractAddress">asset contract address</param>
 63        /// <param name="tokenId">asset token id</param>
 64        /// <param name="onSuccess">success callback</param>
 65        /// <param name="onError">error callback</param>
 66        /// <returns>IEnumerator</returns>
 67        public static IEnumerator FetchNFTInfoSingleAsset(string assetContractAddress, string tokenId, Action<NFTInfoSin
 68        {
 169            INFTMarket selectedMarket = null;
 270            yield return GetMarket(assetContractAddress, tokenId, (mkt) => selectedMarket = mkt);
 71
 072            if (selectedMarket != null)
 73            {
 074                yield return selectedMarket.FetchNFTInfoSingleAsset(assetContractAddress, tokenId, onSuccess, onError);
 075            }
 76            else
 77            {
 078                onError?.Invoke($"Market not found for asset {assetContractAddress}/{tokenId}");
 79            }
 080        }
 81
 82        // NOTE: this method doesn't make sense now, but it will when support for other market is added
 83        static public IEnumerator GetMarket(string assetContractAddress, string tokenId, Action<INFTMarket> onSuccess)
 84        {
 1285            onSuccess?.Invoke(market);
 1286            yield break;
 87        }
 88
 89        static public IEnumerator GetMarket(string assetContractAddress, Action<INFTMarket> onSuccess)
 90        {
 5591            onSuccess?.Invoke(market);
 5592            yield break;
 93        }
 94    }
 95}