Event = require "../../src/flux/models/event"
AccountStore = require "../../src/flux/stores/account-store"

json_event =
  {
    "object": "event",
    "id": "4ee4xbnx7pxdb9g7c2f8ncyto",
    "calendar_id": "ci0k1wfyv533ccgox4t7uri4h",
    "account_id": "14e5bn96uizyuhidhcw5rfrb0",
    "description": null,
    "location": null,
    "participants": [
      {
        "email": "example@gmail.com",
        "name": "Ben Bitdiddle",
        "status": "yes"
      }
    ],
    "read_only": false,
    "title": "Meeting with Ben Bitdiddle",
    "when": {
      "object": "timespan",
      "end_time": 1408123800,
      "start_time": 1408120200
    },
    "busy": true,
    "status": "confirmed",
  }

when_1 =
  end_time: 1408123800
  start_time: 1408120200

participant_1 =
  name: "Ethan Blackburn"
  status: "yes"
  email: "ethan@nylas.com"

participant_2 =
  name: "Other Person"
  status: "maybe"
  email: "other@person.com"

participant_3 =
  name: "Another Person"
  status: "no"
  email: "another@person.com"

event_1 =
  title: "Dolores"
  description: "Hanging at the park"
  location: "Dolores Park"
  when: when_1
  start: 1408120200
  end: 1408123800
  participants: [participant_1, participant_2, participant_3]

describe "Event", ->

  it "can be built via the constructor", ->
    e1 = new Event event_1
    expect(e1.title).toBe "Dolores"
    expect(e1.description).toBe "Hanging at the park"
    expect(e1.location).toBe "Dolores Park"
    expect(e1.when.start_time).toBe 1408120200
    expect(e1.when.end_time).toBe 1408123800
    expect(e1.start).toBe 1408120200
    expect(e1.end).toBe 1408123800
    expect(e1.participants[0].name).toBe "Ethan Blackburn"
    expect(e1.participants[0].email).toBe "ethan@nylas.com"
    expect(e1.participants[0].status).toBe "yes"
    expect(e1.participants[1].name).toBe "Other Person"
    expect(e1.participants[1].email).toBe "other@person.com"
    expect(e1.participants[1].status).toBe "maybe"
    expect(e1.participants[2].name).toBe "Another Person"
    expect(e1.participants[2].email).toBe "another@person.com"
    expect(e1.participants[2].status).toBe "no"

  it "accepts a JSON response", ->
    e1 = (new Event).fromJSON(json_event)
    expect(e1.title).toBe "Meeting with Ben Bitdiddle"
    expect(e1.description).toBe ''
    expect(e1.location).toBe ''
    expect(e1.start).toBe 1408120200
    expect(e1.end).toBe 1408123800
    expect(e1.participants[0].name).toBe "Ben Bitdiddle"
    expect(e1.participants[0].email).toBe "example@gmail.com"
    expect(e1.participants[0].status).toBe "yes"
