We briefly touched on testing for events but we did not get into much detail. Now is the time.
Events are a great way to let the client (frontend) know what has happened, and they're great for providing metadata about a transaction or public function invocation of your Solidity smart contract. Along with testing the state modifications of a transaction, return value of a view function, and modifiers, we can also test whether an event was emitted with the appropriate metadata.
Right now, our TaskMaster contract has no events. Let's quickly add one.
Inside the TaskMaster.sol file, underneath the state variable declarations and before the constructor, add the following line of code:
event LogRecipientRewarded(address recipient, uint rewardAmount);
This is how you declare an event in Solidity.
We call it LogRecipientRewarded. We also specify the...