@@ -2090,6 +2090,167 @@ mod tests {
2090
2090
) ;
2091
2091
}
2092
2092
2093
+ #[ tokio:: test]
2094
+ #[ tracing_test:: traced_test]
2095
+ async fn test_get_only_non_burnt_assets_by_owner ( ) {
2096
+ let cnt = 20 ;
2097
+ let cli = Cli :: default ( ) ;
2098
+ let ( env, generated_assets) =
2099
+ setup:: TestEnvironment :: create_burnt ( & cli, cnt, SLOT_UPDATED ) . await ;
2100
+ let api = nft_ingester:: api:: api_impl:: DasApi :: <
2101
+ MaybeProofChecker ,
2102
+ JsonWorker ,
2103
+ JsonWorker ,
2104
+ MockAccountBalanceGetter ,
2105
+ RaydiumTokenPriceFetcher ,
2106
+ Storage ,
2107
+ > :: new (
2108
+ env. pg_env . client . clone ( ) ,
2109
+ env. rocks_env . storage . clone ( ) ,
2110
+ Arc :: new ( ApiMetricsConfig :: new ( ) ) ,
2111
+ None ,
2112
+ None ,
2113
+ 50 ,
2114
+ None ,
2115
+ None ,
2116
+ JsonMiddlewareConfig :: default ( ) ,
2117
+ Arc :: new ( MockAccountBalanceGetter :: new ( ) ) ,
2118
+ None ,
2119
+ Arc :: new ( RaydiumTokenPriceFetcher :: default ( ) ) ,
2120
+ NATIVE_MINT_PUBKEY . to_string ( ) ,
2121
+ ) ;
2122
+ let tasks = JoinSet :: new ( ) ;
2123
+ let mutexed_tasks = Arc :: new ( Mutex :: new ( tasks) ) ;
2124
+
2125
+ let ref_value = generated_assets. owners [ 8 ] . clone ( ) ;
2126
+ let payload = GetAssetsByOwner {
2127
+ owner_address : ref_value. owner . value . map ( |owner| owner. to_string ( ) ) . unwrap_or_default ( ) ,
2128
+ sort_by : None ,
2129
+ limit : None ,
2130
+ page : None ,
2131
+ before : None ,
2132
+ after : None ,
2133
+ cursor : None ,
2134
+ options : GetByMethodsOptions {
2135
+ show_unverified_collections : true ,
2136
+ show_burnt : Some ( false ) ,
2137
+ ..Default :: default ( )
2138
+ } ,
2139
+ } ;
2140
+
2141
+ let res = api. get_assets_by_owner ( payload, mutexed_tasks. clone ( ) ) . await . unwrap ( ) ;
2142
+ let res_obj: AssetList = serde_json:: from_value ( res) . unwrap ( ) ;
2143
+
2144
+ // in the setup all assets were created as burnt
2145
+ // meaning that if we do not explicitly specify show_burnt
2146
+ // in the options, the response will be empty
2147
+ assert_eq ! ( res_obj. total, 0 , "total should be 0" ) ;
2148
+ assert_eq ! ( res_obj. items. len( ) , 0 , "items length should be 0" ) ;
2149
+ }
2150
+
2151
+ #[ tokio:: test]
2152
+ #[ tracing_test:: traced_test]
2153
+ async fn test_get_only_burnt_assets_by_owner ( ) {
2154
+ let cnt = 20 ;
2155
+ let cli = Cli :: default ( ) ;
2156
+ let ( env, generated_assets) =
2157
+ setup:: TestEnvironment :: create_burnt ( & cli, cnt, SLOT_UPDATED ) . await ;
2158
+ let api = nft_ingester:: api:: api_impl:: DasApi :: <
2159
+ MaybeProofChecker ,
2160
+ JsonWorker ,
2161
+ JsonWorker ,
2162
+ MockAccountBalanceGetter ,
2163
+ RaydiumTokenPriceFetcher ,
2164
+ Storage ,
2165
+ > :: new (
2166
+ env. pg_env . client . clone ( ) ,
2167
+ env. rocks_env . storage . clone ( ) ,
2168
+ Arc :: new ( ApiMetricsConfig :: new ( ) ) ,
2169
+ None ,
2170
+ None ,
2171
+ 50 ,
2172
+ None ,
2173
+ None ,
2174
+ JsonMiddlewareConfig :: default ( ) ,
2175
+ Arc :: new ( MockAccountBalanceGetter :: new ( ) ) ,
2176
+ None ,
2177
+ Arc :: new ( RaydiumTokenPriceFetcher :: default ( ) ) ,
2178
+ NATIVE_MINT_PUBKEY . to_string ( ) ,
2179
+ ) ;
2180
+ let tasks = JoinSet :: new ( ) ;
2181
+ let mutexed_tasks = Arc :: new ( Mutex :: new ( tasks) ) ;
2182
+
2183
+ let ref_value = generated_assets. owners [ 8 ] . clone ( ) ;
2184
+ let payload = GetAssetsByOwner {
2185
+ owner_address : ref_value. owner . value . map ( |owner| owner. to_string ( ) ) . unwrap_or_default ( ) ,
2186
+ sort_by : None ,
2187
+ limit : None ,
2188
+ page : None ,
2189
+ before : None ,
2190
+ after : None ,
2191
+ cursor : None ,
2192
+ options : GetByMethodsOptions {
2193
+ show_unverified_collections : true ,
2194
+ show_burnt : Some ( true ) ,
2195
+ ..Default :: default ( )
2196
+ } ,
2197
+ } ;
2198
+
2199
+ let res = api. get_assets_by_owner ( payload, mutexed_tasks. clone ( ) ) . await . unwrap ( ) ;
2200
+ let res_obj: AssetList = serde_json:: from_value ( res) . unwrap ( ) ;
2201
+
2202
+ assert_eq ! ( res_obj. total, 20 , "total should be 20" ) ;
2203
+ assert_eq ! ( res_obj. items. len( ) , 20 , "items length should be 20" ) ;
2204
+ }
2205
+
2206
+ #[ tokio:: test]
2207
+ #[ tracing_test:: traced_test]
2208
+ async fn test_search_assets_excluding_burnt_assets ( ) {
2209
+ let cnt = 20 ;
2210
+ let cli = Cli :: default ( ) ;
2211
+ let ( env, _generated_assets) =
2212
+ setup:: TestEnvironment :: create_burnt ( & cli, cnt, SLOT_UPDATED ) . await ;
2213
+ let api = nft_ingester:: api:: api_impl:: DasApi :: <
2214
+ MaybeProofChecker ,
2215
+ JsonWorker ,
2216
+ JsonWorker ,
2217
+ MockAccountBalanceGetter ,
2218
+ RaydiumTokenPriceFetcher ,
2219
+ Storage ,
2220
+ > :: new (
2221
+ env. pg_env . client . clone ( ) ,
2222
+ env. rocks_env . storage . clone ( ) ,
2223
+ Arc :: new ( ApiMetricsConfig :: new ( ) ) ,
2224
+ None ,
2225
+ None ,
2226
+ 50 ,
2227
+ None ,
2228
+ None ,
2229
+ JsonMiddlewareConfig :: default ( ) ,
2230
+ Arc :: new ( MockAccountBalanceGetter :: new ( ) ) ,
2231
+ None ,
2232
+ Arc :: new ( RaydiumTokenPriceFetcher :: default ( ) ) ,
2233
+ NATIVE_MINT_PUBKEY . to_string ( ) ,
2234
+ ) ;
2235
+ let tasks = JoinSet :: new ( ) ;
2236
+ let mutexed_tasks = Arc :: new ( Mutex :: new ( tasks) ) ;
2237
+ let limit = 20 ;
2238
+ let payload = SearchAssets {
2239
+ burnt : Some ( false ) ,
2240
+ limit : Some ( limit) ,
2241
+ options : SearchAssetsOptions {
2242
+ show_unverified_collections : true ,
2243
+ ..Default :: default ( )
2244
+ } ,
2245
+ ..Default :: default ( )
2246
+ } ;
2247
+ let res = api. search_assets ( payload, mutexed_tasks. clone ( ) ) . await . unwrap ( ) ;
2248
+ assert ! ( res. is_object( ) ) ;
2249
+ let res_obj: AssetList = serde_json:: from_value ( res) . unwrap ( ) ;
2250
+ assert_eq ! ( res_obj. total, 0 , "total should be 0" ) ;
2251
+ assert_eq ! ( res_obj. items. len( ) , 0 , "assets length should be 0" ) ;
2252
+ }
2253
+
2093
2254
#[ tokio:: test]
2094
2255
#[ tracing_test:: traced_test]
2095
2256
async fn test_get_assets_by_group ( ) {
0 commit comments