11// using System.Numerics;
2+ using System . Numerics ;
23using Thirdweb . AI ;
34
45namespace Thirdweb . Tests . AI ;
56
67public class NebulaTests : BaseTests
78{
8- // private const string NEBULA_TEST_CONTRACT = "0xe2cb0eb5147b42095c2FfA6F7ec953bb0bE347D8";
9- // private const string NEBULA_TEST_USDC_ADDRESS = "0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238";
10- // private const int NEBULA_TEST_CHAIN = 11155111;
9+ private const string NEBULA_TEST_USDC_ADDRESS = "0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238" ;
10+
11+ private const string NEBULA_TEST_CONTRACT = "0xe2cb0eb5147b42095c2FfA6F7ec953bb0bE347D8" ;
12+
13+ private const int NEBULA_TEST_CHAIN = 11155111 ;
1114
1215 public NebulaTests ( ITestOutputHelper output )
1316 : base ( output ) { }
@@ -33,104 +36,58 @@ public async Task Create_ResumesSession()
3336 Assert . Equal ( sessionId , nebula . SessionId ) ;
3437 }
3538
36- // [Fact(Timeout = 120000)]
37- // public async Task Chat_Single_ReturnsResponse()
38- // {
39- // var nebula = await ThirdwebNebula.Create(this.Client);
40- // var response = await nebula.Chat(
41- // message: "What's the symbol of this contract?",
42- // context: new NebulaContext(contractAddresses: new List<string> { NEBULA_TEST_CONTRACT }, chainIds: new List<BigInteger> { NEBULA_TEST_CHAIN })
43- // );
44- // Assert.NotNull(response);
45- // Assert.NotNull(response.Message);
46- // Assert.Contains("CAT", response.Message);
47- // }
48-
49- // [Fact(Timeout = 120000)]
50- // public async Task Chat_Single_NoContext_ReturnsResponse()
51- // {
52- // var nebula = await ThirdwebNebula.Create(this.Client);
53- // var response = await nebula.Chat(message: $"What's the symbol of this contract: {NEBULA_TEST_CONTRACT} (Sepolia)?");
54- // Assert.NotNull(response);
55- // Assert.NotNull(response.Message);
56- // Assert.Contains("CAT", response.Message);
57- // }
58-
59- // [Fact(Timeout = 120000)]
60- // public async Task Chat_Multiple_ReturnsResponse()
61- // {
62- // var nebula = await ThirdwebNebula.Create(this.Client);
63- // var response = await nebula.Chat(
64- // messages: new List<NebulaChatMessage>
65- // {
66- // new("What's the symbol of this contract?", NebulaChatRole.User),
67- // new("The symbol is CAT", NebulaChatRole.Assistant),
68- // new("What's the name of this contract?", NebulaChatRole.User),
69- // },
70- // context: new NebulaContext(contractAddresses: new List<string> { NEBULA_TEST_CONTRACT }, chainIds: new List<BigInteger> { NEBULA_TEST_CHAIN })
71- // );
72- // Assert.NotNull(response);
73- // Assert.NotNull(response.Message);
74- // Assert.Contains("CatDrop", response.Message, StringComparison.OrdinalIgnoreCase);
75- // }
39+ [ Fact ( Timeout = 120000 ) ]
40+ public async Task Chat_Single_ReturnsResponse ( )
41+ {
42+ var nebula = await ThirdwebNebula . Create ( this . Client ) ;
43+ var response = await nebula . Chat ( message : $ "What's the symbol of this contract { NEBULA_TEST_CONTRACT } ?", context : new NebulaContext ( chainIds : new List < BigInteger > ( ) { NEBULA_TEST_CHAIN } ) ) ;
44+ Assert . NotNull ( response ) ;
45+ Assert . NotNull ( response . Message ) ;
46+ Assert . Contains ( "CAT" , response . Message ) ;
47+ }
7648
77- // [Fact(Timeout = 120000)]
78- // public async Task Chat_UnderstandsWalletContext()
79- // {
80- // var wallet = await PrivateKeyWallet.Generate(this.Client);
81- // var expectedAddress = await wallet.GetAddress();
82- // var nebula = await ThirdwebNebula.Create(this.Client);
83- // var response = await nebula.Chat(message: "What is my wallet address?", wallet: wallet);
84- // Assert.NotNull(response);
85- // Assert.NotNull(response.Message);
86- // Assert.Contains(expectedAddress, response.Message);
87- // }
49+ [ Fact ( Timeout = 120000 ) ]
50+ public async Task Chat_Single_NoContext_ReturnsResponse ( )
51+ {
52+ var nebula = await ThirdwebNebula . Create ( this . Client ) ;
53+ var response = await nebula . Chat ( message : $ "What's the symbol of this contract: { NEBULA_TEST_CONTRACT } (Sepolia)?") ;
54+ Assert . NotNull ( response ) ;
55+ Assert . NotNull ( response . Message ) ;
56+ Assert . Contains ( "CAT" , response . Message ) ;
57+ }
8858
89- // [Fact(Timeout = 120000)]
90- // public async Task Execute_ReturnsMessageAndReceipt()
91- // {
92- // var signer = await PrivateKeyWallet.Generate(this.Client);
93- // var wallet = await SmartWallet.Create(signer, NEBULA_TEST_CHAIN);
94- // var nebula = await ThirdwebNebula.Create(this.Client);
95- // var response = await nebula.Execute(
96- // new List<NebulaChatMessage>
97- // {
98- // new("What's the address of vitalik.eth", NebulaChatRole.User),
99- // new("The address of vitalik.eth is 0xd8dA6BF26964aF8E437eEa5e3616511D7G3a3298", NebulaChatRole.Assistant),
100- // new("Approve 1 USDC to them", NebulaChatRole.User),
101- // },
102- // wallet: wallet,
103- // context: new NebulaContext(contractAddresses: new List<string>() { NEBULA_TEST_USDC_ADDRESS })
104- // );
105- // Assert.NotNull(response);
106- // Assert.NotNull(response.Message);
107- // Assert.NotNull(response.TransactionReceipts);
108- // Assert.NotEmpty(response.TransactionReceipts);
109- // Assert.NotNull(response.TransactionReceipts[0].TransactionHash);
110- // Assert.True(response.TransactionReceipts[0].TransactionHash.Length == 66);
111- // }
59+ [ Fact ( Timeout = 120000 ) ]
60+ public async Task Chat_UnderstandsWalletContext ( )
61+ {
62+ var wallet = await PrivateKeyWallet . Generate ( this . Client ) ;
63+ var expectedAddress = await wallet . GetAddress ( ) ;
64+ var nebula = await ThirdwebNebula . Create ( this . Client ) ;
65+ var response = await nebula . Chat ( message : "What is my wallet address?" , wallet : wallet ) ;
66+ Assert . NotNull ( response ) ;
67+ Assert . NotNull ( response . Message ) ;
68+ Assert . Contains ( expectedAddress , response . Message ) ;
69+ }
11270
113- // [Fact(Timeout = 120000)]
114- // public async Task Execute_ReturnsMessageAndReceipts()
115- // {
116- // var signer = await PrivateKeyWallet.Generate(this.Client);
117- // var wallet = await SmartWallet.Create(signer, NEBULA_TEST_CHAIN);
118- // var nebula = await ThirdwebNebula.Create(this.Client);
119- // var response = await nebula.Execute(
120- // new List<NebulaChatMessage>
121- // {
122- // new("What's the address of vitalik.eth", NebulaChatRole.User),
123- // new("The address of vitalik.eth is 0xd8dA6BF26964aF8E437eEa5e3616511D7G3a3298", NebulaChatRole.Assistant),
124- // new("Approve 1 USDC to them", NebulaChatRole.User),
125- // },
126- // wallet: wallet,
127- // context: new NebulaContext(contractAddresses: new List<string>() { NEBULA_TEST_USDC_ADDRESS })
128- // );
129- // Assert.NotNull(response);
130- // Assert.NotNull(response.Message);
131- // Assert.NotNull(response.TransactionReceipts);
132- // Assert.NotEmpty(response.TransactionReceipts);
133- // Assert.NotNull(response.TransactionReceipts[0].TransactionHash);
134- // Assert.True(response.TransactionReceipts[0].TransactionHash.Length == 66);
135- // }
71+ [ Fact ( Timeout = 120000 ) ]
72+ public async Task Execute_ReturnsMessageAndReceipt ( )
73+ {
74+ var signer = await PrivateKeyWallet . Generate ( this . Client ) ;
75+ var wallet = await SmartWallet . Create ( signer , NEBULA_TEST_CHAIN ) ;
76+ var nebula = await ThirdwebNebula . Create ( this . Client ) ;
77+ var response = await nebula . Execute (
78+ new List < NebulaChatMessage >
79+ {
80+ new ( "What's the address of vitalik.eth" , NebulaChatRole . User ) ,
81+ new ( "The address of vitalik.eth is 0xd8dA6BF26964aF8E437eEa5e3616511D7G3a3298" , NebulaChatRole . Assistant ) ,
82+ new ( $ "Approve 1 USDC (this contract: { NEBULA_TEST_USDC_ADDRESS } ) to them", NebulaChatRole . User ) ,
83+ } ,
84+ wallet : wallet
85+ ) ;
86+ Assert . NotNull ( response ) ;
87+ Assert . NotNull ( response . Message ) ;
88+ Assert . NotNull ( response . TransactionReceipts ) ;
89+ Assert . NotEmpty ( response . TransactionReceipts ) ;
90+ Assert . NotNull ( response . TransactionReceipts [ 0 ] . TransactionHash ) ;
91+ Assert . True ( response . TransactionReceipts [ 0 ] . TransactionHash . Length == 66 ) ;
92+ }
13693}
0 commit comments