I have tests 100% working and returning values but when I try and read the data using the web3 api in javascript for the homework i retrieve a return value of /u0000 for name and symbol, I'm not sure why.
Result
0: ""
1: "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"
name: ""
symbol: "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"
[[Prototype]]: Object
JS
lookUp: async function (){
const { lookUptokenIdToStarInfo } = this.meta.methods;
const id = document.getElementById("lookid").value;
var star = await lookUptokenIdToStarInfo(id).call();
console.log(star)
console.log(JSON.stringify(star));
App.setStatus("star info is name:" + star.name + " symbol:" +
star.symbol + ".");
}
Solidity
function lookUptokenIdToStarInfo (uint _tokenId) public view returns
(string memory name, string memory symbol) {
//Solidity 0.8.0 and above can return our Star struct but to
be pure to previous standard way of doing things we are
returning it as a string
name = tokenIdToStarInfo[_tokenId].name;
symbol = tokenIdToStarInfo[_tokenId].symbol;
return (name,symbol);
}
Test
it('lookUptokenIdToStarInfo test', async() => {
let tokenId = 7;
let instance = await StarNotary.deployed();
await instance.createStar('Awesome Star!', "AS", tokenId, {from: accounts[0]})
var getByTokenId = await instance.lookUptokenIdToStarInfo(tokenId);
assert.equal(await getByTokenId.name, 'Awesome Star!')
assert.equal(await getByTokenId.symbol, 'AS')
});