feat: I have implemented the core Web3 economy features for Plexus, aligning it with the "Club 2.0" vision.
This commit is contained in:
67
server/tests/token.test.js
Normal file
67
server/tests/token.test.js
Normal file
@@ -0,0 +1,67 @@
|
||||
const { expect } = require('chai');
|
||||
const io = require('socket.io-client');
|
||||
|
||||
const SERVER_URL = 'http://localhost:3000';
|
||||
|
||||
describe('Token Economy', function () {
|
||||
this.timeout(5000);
|
||||
let socket;
|
||||
const walletAddress = 'TokenTestWallet_' + Date.now();
|
||||
const username = 'TokenUser_' + Date.now();
|
||||
|
||||
before((done) => {
|
||||
// Ensure server is running (assuming it's started externally or we rely on it)
|
||||
// For this test, we assume the server is running on port 3000 as per package.json start script
|
||||
// If not, we might need to start it here, but usually integration tests assume environment
|
||||
|
||||
socket = io(SERVER_URL);
|
||||
socket.on('connect', done);
|
||||
});
|
||||
|
||||
after((done) => {
|
||||
if (socket.connected) {
|
||||
socket.disconnect();
|
||||
}
|
||||
done();
|
||||
});
|
||||
|
||||
it('should initialize user with 100 PLEXUS', (done) => {
|
||||
socket.emit('join', { walletAddress, username });
|
||||
|
||||
socket.once('balanceUpdated', (data) => {
|
||||
expect(data.balance).to.equal(100);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('should deduct 1 PLEXUS when sending a message', (done) => {
|
||||
// Wait for join to complete if not already
|
||||
// We can just emit sendMessage, but we need to be sure we are joined?
|
||||
// The previous test joined, so we should be good.
|
||||
|
||||
const channelId = 'nebula';
|
||||
const content = 'Hello World';
|
||||
const txId = 'TX_TEST_' + Date.now();
|
||||
|
||||
// Listen for balance update
|
||||
socket.once('balanceUpdated', (data) => {
|
||||
expect(data.balance).to.equal(99);
|
||||
done();
|
||||
});
|
||||
|
||||
socket.emit('sendMessage', { channelId, walletAddress, content, txId });
|
||||
});
|
||||
|
||||
it('should deduct 30 PLEXUS when changing username', (done) => {
|
||||
const newUsername = 'RichUser_' + Date.now();
|
||||
const txId = 'TX_NAME_' + Date.now();
|
||||
|
||||
socket.once('balanceUpdated', (data) => {
|
||||
// 99 - 30 = 69
|
||||
expect(data.balance).to.equal(69);
|
||||
done();
|
||||
});
|
||||
|
||||
socket.emit('updateUsername', { walletAddress, newUsername, txId });
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user