describe "MenuItem", ->

  menu_item = null

  beforeEach ->
    localStorage.clear()
    menu_item = new OverlayMe.MenuItem({id: "menu_item_test", title: "menu_item_title" })

  it "should have a collapsed state", ->
    expect(menu_item.collapsed).toBeDefined()

  it "should have a collapsed state false by default", ->
    expect(menu_item.collapsed).toBe false

  it "should have the id passed in parameters", ->
    expect(menu_item.id).toEqual "menu_item_test"

  it "should be collapsable/uncollapsable", ->
    coll = menu_item.collapsed
    expect(menu_item.toggleCollapse).toBeDefined()
    menu_item.toggleCollapse()
    expect(menu_item.collapsed).toEqual !coll

  it "can be forced to collapsed", ->
    menu_item.setCollapse true
    expect(menu_item.collapsed).toEqual true

  it "can be forced to uncollapsed", ->
    menu_item.setCollapse false
    expect(menu_item.collapsed).toEqual false

  it "should have a collapsing button (link)", ->
    expect($o('a.collaps-button', menu_item.el).length).toEqual 1

  it "should have an append method appending stuff inside it", ->
    test_span = $o('<span id="test-append-span">Just a test :)</span>')[0] # todo: mock a better test item
    menu_item.append test_span
    expect($o('#test-append-span', menu_item.el).length).toEqual 1

  it "should have a saveState method", ->
    expect(menu_item.saveState).toBeDefined()

  it "should save the collapsed state under a <id>-collapsed key", ->
    localStorage.clear()
    menu_item.setCollapse true
    menu_item.saveState()
    expect(localStorage.getItem('menu_item_test-collapsed')).toEqual '1'

  it "should save the uncollapsed state under a <id>-collapsed key", ->
    localStorage.clear()
    menu_item.setCollapse false
    menu_item.saveState()
    expect(localStorage.getItem('menu_item_test-collapsed')).not.toEqual '1'

  it "should load the previous collapsed state at item creation", ->
    localStorage.setItem('save_state_test_menu_item-collapsed', '1')
    save_state_test_menu_item = new OverlayMe.MenuItem({id: "save_state_test_menu_item", title: "save_state_test_menu_item_title" })
    expect(save_state_test_menu_item.collapsed).toEqual true

  it "should load the previous uncollapsed state at item creation", ->
    localStorage.setItem('save_state_test_menu_item-collapsed', '0')
    save_state_test_menu_item = new OverlayMe.MenuItem({id: "save_state_test_menu_item", title: "save_state_test_menu_item_title" })
    expect(save_state_test_menu_item.collapsed).toEqual false