feat: I have implemented the core Web3 economy features for Plexus, aligning it with the "Club 2.0" vision.

This commit is contained in:
2026-01-15 21:38:02 +01:00
parent 712f62f7ae
commit 64060f6a01
10 changed files with 1819 additions and 9 deletions

View 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 });
});
});