import { mochaRun } from '../../../util/helpers.js';
import { INCINERATOR_ADDRESS } from '../../../util/constants.js';
import { ForumTest } from '../forum.test-util.js';

describe('Forum', function tests() {
  this.timeout(0);

  const forumTest = new ForumTest();

  before(async () => {
    await forumTest.setup();
  });

  context('Use incineration to achieve more balanced reweighting', async () => {
    let forum;
    let experts;
    let posts;

    before(() => {
      forum = forumTest.forum;
      experts = forumTest.experts;
      posts = forumTest.posts;
    });

    it('Post1', async () => {
      await forumTest.addPost(experts[0], 10);
      forum.getPost(posts[0]).value.should.equal(10);
    });

    it('Post2', async () => {
      await forumTest.addPost(experts[0], 0);
      forum.getPost(posts[0]).value.should.equal(10);
      forum.getPost(posts[1]).value.should.equal(0);
    });

    it('Post3 transfers reputation from Post1 to Post2', async () => {
      await forumTest.addPost(experts[0], 10, [
        { postId: posts[0], weight: -1 },
        { postId: posts[1], weight: 0.5 },
        { postId: INCINERATOR_ADDRESS, weight: 0.5 },
      ]);
      forum.getPost(posts[0]).value.should.equal(0);
      forum.getPost(posts[1]).value.should.equal(10);
      forum.getPost(posts[2]).value.should.equal(0);
    });
  });
});

mochaRun();