{
  "tcID":"INT-SOL-081",
  "tcName":"ERC721.safeTransferFromWithData.toERC721Receiver.operator",
  "deploy":{
    "ERC721Mock":{
      "file":"contracts/mocks/ERC721Mock.sol",
      "constructorParams":[]
    },
    "ERC721ReceiverMock":{
      "file":"contracts/mocks/ERC721ReceiverMock.sol",
      "constructorParams":["0x150b7a02", false]
    }
  },
  "test":[
    {
      "tx":{
        "from":"env.sender",
        "type":"LEGACY",
        "to":"randomMinter",
        "value":"1000000000000000000",
        "gas":100000,
        "data":""
      },
      "expected":{
        "status":true
      }
    },
    {
      "tx":{
        "from":"env.sender",
        "type":"LEGACY",
        "to":"randomOwner",
        "value":"1000000000000000000",
        "gas":100000,
        "data":""
      },
      "expected":{
        "status":true
      }
    },
    {
      "tx":{
        "from":"env.sender",
        "type":"LEGACY",
        "to":"randomOperator",
        "value":"1000000000000000000",
        "gas":100000,
        "data":""
      },
      "expected":{
        "status":true
      }
    },
    {
      "send":{
        "from":"randomMinter",
        "to":"ERC721Mock",
        "gas":100000,
        "method":"mint",
        "params":["randomOwner", "1"]
      },
      "expected":{
        "status":true
      }
    },
    {
      "send":{
        "from":"randomMinter",
        "to":"ERC721Mock",
        "gas":100000,
        "method":"mint",
        "params":["randomOwner", "2"]
      },
      "expected":{
        "status":true
      }
    },
    {
      "send":{
        "from":"randomOwner",
        "to":"ERC721Mock",
        "gas":100000,
        "method":"approve",
        "params":["randomApproved", "1"]
      },
      "expected":{
        "status":true
      }
    },
    {
      "send":{
        "from":"randomOwner",
        "to":"ERC721Mock",
        "gas":100000,
        "method":"setApprovalForAll",
        "params":["randomOperator", true]
      },
      "expected":{
        "status":true
      }
    },
    {
      "send":{
        "from":"randomOwner",
        "to":"ERC721Mock",
        "gas":100000,
        "method":"approve",
        "params":["0x0000000000000000000000000000000000000000", "1"]
      },
      "expected":{
        "status":true
      }
    },
    {
      "send":{
        "from":"randomOperator",
        "to":"ERC721Mock",
        "gas":100000,
        "method":"safeTransferFrom(address,address,uint256,bytes)",
        "params":["randomOwner", "ERC721ReceiverMock", "1", "0x42"]
      },
      "expected":{
        "status":true,
        "events":{
          "Transfer": {
            "from":"randomOwner",
            "to":"ERC721ReceiverMock",
            "tokenId":"1"
          }
        }
      }
    },
    {
      "call":{
        "from":"env.sender",
        "to":"ERC721Mock",
        "method":"ownerOf",
        "params":["1"]
      },
      "expected":{
        "status":true,
        "returns":"ERC721ReceiverMock"
      }
    },
    {
      "call":{
        "from":"env.sender",
        "to":"ERC721Mock",
        "method":"getApproved",
        "params":["1"]
      },
      "expected":{
        "status":true,
        "returns":"0x0000000000000000000000000000000000000000"
      }
    },
    {
      "call":{
        "from":"env.sender",
        "to":"ERC721Mock",
        "method":"balanceOf",
        "params":["randomOwner"]
      },
      "expected":{
        "status":true,
        "returns":"1"
      }
    }
  ]
}

