describe 'PDFViewer', ->
  React = require 'react'
  PDFViewer = React.createFactory require('../../src/components/pdf_viewer')
  TestUtils = require 'react-dom/test-utils'
  ReactDOM = require 'react-dom'

  catchSpy = sinon.spy()

  window.PDFJS =
    getDocument: (params) ->
      then: ->
        catch: catchSpy

   
   
  #--------------------------------------------------------------------- Default Props
  it 'Should have default props', ->

    pdfViewer = TestUtils.renderIntoDocument PDFViewer {}
   
    defaultProps = pdfViewer.props

    expect(defaultProps.showPageDividers).to.equal(yes)
    expect(defaultProps.intent).to.equal('display')


  #--------------------------------------------------------------------- Render
  it 'Should Render the number of canvas pages based on the totalPages from state', ->

    pdfViewer = TestUtils.renderIntoDocument PDFViewer {}

    pdfViewer.setState
      totalPages: 5
   
    # getting all canvas pages
    pages = TestUtils.scryRenderedDOMComponentsWithClass pdfViewer, 'pdf-canvas'

    expect(pages.length).to.equal(pdfViewer.state.totalPages)


  it 'Should Render the appropriate number of page dividers if showPageDivider is true and intent isnt print', ->

    pdfViewer = TestUtils.renderIntoDocument PDFViewer {}

    pdfViewer.setState
      totalPages: 5
   
    # getting pageDivider divs
    pageDivider = TestUtils.scryRenderedDOMComponentsWithClass pdfViewer, 'pdf-page-divide'

    expect(pageDivider.length).to.equal(pdfViewer.state.totalPages-1)


  it 'Should NOT Render the page dividers if showPageDivider is false', ->

    pdfViewer = TestUtils.renderIntoDocument PDFViewer {
      showPageDividers: false
    }

    pdfViewer.setState
      totalPages: 5
   
    # getting pageDivider divs
    pageDivider = TestUtils.scryRenderedDOMComponentsWithClass pdfViewer, 'pdf-page-divide'

    expect(pageDivider.length).to.equal(0)


  it 'Should NOT Render the page dividers if intent is equal to print', ->

    pdfViewer = TestUtils.renderIntoDocument PDFViewer {
      intent: 'print'
    }

    pdfViewer.setState
      totalPages: 5
   
    # getting pageDivider divs
    pageDivider = TestUtils.scryRenderedDOMComponentsWithClass pdfViewer, 'pdf-page-divide'

    expect(pageDivider.length).to.equal(0)

  
  #--------------------------------------------------------------------- Click handling
  it 'Should call the onClick prop when a canvas page is clicked', ->
    onClick = sinon.spy()

    pdfViewer = TestUtils.renderIntoDocument PDFViewer {
      onClick: onClick
    }
     
    pages = TestUtils.scryRenderedDOMComponentsWithClass pdfViewer, 'pdf-canvas'

    canvasPage1 = pages[0]
        
    TestUtils.Simulate.click canvasPage1
   
    expect(onClick.calledOnce).to.equal(true)


    pdfViewer.setState
      totalPages: 5

    pages = TestUtils.scryRenderedDOMComponentsWithClass pdfViewer, 'pdf-canvas'

    canvasPage4 = pages[3]
        
    TestUtils.Simulate.click canvasPage4
   
    expect(onClick.calledTwice).to.equal(true)
   
   

   