---
# System prepended metadata

title: Untitled

---

## Error Message
```
  Can handle NewSubmitProposalEvent
          🛠  Mapping aborted at ~lib/array.ts, line 106, column 42, with message: Index out of range
wasm backtrace:
    0: 0x2a5b - <unknown>!~lib/array/Array<~lib/@graphprotocol/graph-ts/chain/ethereum/ethereum.EventParam>#__get
    1: 0x328d - <unknown>!src/mappings/handleSubmitProposal
    2: 0x35d0 - <unknown>!start:tests/submitproposal.test~anonymous|1~anonymous|1

```


## Info of my test

#### sumbitproposal.test.ts file
```typescript=

test("Should throw an error", () => {
  throw new Error()
}, true)


export function createNewSubmitProposalEvent(
  applicant: string, 
  sharesRequested: i32, 
  lootRequested: i32, 
  tributeOffered: i32,
  tributeToken: string,
  paymentRequested: i32,
  paymentToken: i32,
  details: string,
  flags: boolean,
  proposalId: i32,
  ):   SubmitProposal {
    
  
  let NewSubmitProposalEvent = changetype<SubmitProposal>(newMockEvent())

  NewSubmitProposalEvent.parameters = new Array();

  let applicantParam = new ethereum.EventParam("applicant", ethereum.Value.fromAddress(Address.fromString(applicant)));
  let sharesRequestedParam = new ethereum.EventParam("sharesRequested", ethereum.Value.fromI32(sharesRequested));
  let lootRequestedParam = new ethereum.EventParam("lootRequested", ethereum.Value.fromI32(lootRequested));
  let tributeOfferedParam = new ethereum.EventParam("tributeOffered", ethereum.Value.fromI32((tributeOffered)));
  let tributeTokenParam = new ethereum.EventParam("tributeToken", ethereum.Value.fromAddress(Address.fromString(tributeToken)));
  let paymentRequestedParam = new ethereum.EventParam("paymentRequested", ethereum.Value.fromI32(paymentRequested));
  let paymentTokenParam = new ethereum.EventParam("paymentToken", ethereum.Value.fromI32(paymentToken));
  let detailsParam = new ethereum.EventParam("details", ethereum.Value.fromAddress(Address.fromString(details)));
  let flagsParam = new ethereum.EventParam("flags", ethereum.Value.fromBoolean(flags));
  let proposalIdParam = new ethereum.EventParam("proposalId", ethereum.Value.fromI32(proposalId));


  NewSubmitProposalEvent.parameters.push(applicantParam);
  NewSubmitProposalEvent.parameters.push(sharesRequestedParam);
  NewSubmitProposalEvent.parameters.push(lootRequestedParam);
  NewSubmitProposalEvent.parameters.push(tributeOfferedParam);
  NewSubmitProposalEvent.parameters.push(tributeTokenParam);
  NewSubmitProposalEvent.parameters.push(paymentRequestedParam);
  NewSubmitProposalEvent.parameters.push(paymentTokenParam);
  NewSubmitProposalEvent.parameters.push(detailsParam);
  NewSubmitProposalEvent.parameters.push(flagsParam);
  NewSubmitProposalEvent.parameters.push(proposalIdParam);

  return NewSubmitProposalEvent;
}


describe("Mocked Events", () => {
 afterEach(() => {
clearStore();

  })

  test("Can handle NewSubmitProposalEvent", () => {
    // Call mappings
    let NewSubmitProposalEvent = createNewSubmitProposalEvent(
      "0x00c9894ec45e1e0c547da44c007b1fa7ead36222", 
      1, 
      1,
      1,
      "0x00c9894ec45e1e0c547da44c007b1fa7ead36222",
      1,
      1,
      "0x00c9894ec45e1e0c547da44c007b1fa7ead36222",
      true,
      1,
    )

    handleSubmitProposal(NewSubmitProposalEvent)

//assert.entityCount("Moloch", 1)
logStore();
//  assert.fieldEquals("Moloch", "0x00c9894ec45e1e0c547da44c007b1fa7ead36228","summoner", "0x00c9894ec45e1e0c547da44c007b1fa7ead36221")
  //  assert.fieldEquals("Moloch", "displayName", "Gravatar 0xdead", "https://example.com/image0xdead.png") 
  //  assert.fieldEquals("0xbeef", "displayName", "Gravatar 0xbeef")


  })
})


```


#### Event Signature
```yaml
      eventHandlers:
        - event: SubmitProposal(indexed address,uint256,uint256,uint256,address,uint256,address,string,bool[6],uint256,indexed address,indexed address)
          handler: handleSubmitProposal

```

#### mappings.ts file
```typescript
export function handleSubmitProposal(event: SubmitProposal):void {
  let molochId = event.address.toHexString();
  let newProposalId = molochId.concat("-proposal-").concat(event.params.proposalId.toString());
  let memberId = molochId.concat("-member-").concat(event.params.memberAddress.toHex());

  let proposal = new Proposal(newProposalId);
  proposal.proposalId      = event.params.proposalId;
  proposal.moloch          = molochId;
  proposal.member          = memberId;
  proposal.memberAddress   = event.params.memberAddress;
  proposal.delegateKey     = event.params.delegateKey;
  proposal.yesVotes        = BigInt.fromI32(0);
  proposal.noVotes         = BigInt.fromI32(0);
  proposal.yesShares       = BigInt.fromI32(0);
  proposal.noShares        = BigInt.fromI32(0);
  proposal.maxTotalSharesAndLootAtYesVote = BigInt.fromI32(0);

  proposal.save();
}



```