With reference to OpenZeppelin/openzeppelin-contracts#584 (comment) , here is the working code. Thanks https://github.com/Shrugs
it('Token transfer', async () => {
const fromAccount = accounts[1]
const toAccount = accounts[4]
const transferLimit = 4000000000000000000
const transferAmount = 3000000000000000000
let ecoSystemBalance = await tokenInstance.balanceOf(fromAccount)
assert.isAtLeast(ecoSystemBalance, transferLimit, 'From account balance should be atleast 4')
await tokenInstance.approve(toAccount, transferLimit, {from: fromAccount})
assert.equal(await tokenInstance.allowance(fromAccount, toAccount), transferLimit, 'Allowance from->to should be 4')
console.log(`Attempting a transfer with ecoSystem balance of ${ecoSystemBalance}`)
await tokenInstance.transferFrom(fromAccount, toAccount, transferAmount, {from: toAccount})
assert.equal(await tokenInstance.balanceOf(toAccount), transferAmount, 'To account should have 3')
})