it('updates view elements', function () {
      view = DeclinationView({
        reading: Reading(),
        observation: Observation(),
        calculator: calculator
      });

      // These are equal, this is probably bs.
      expect(view._magneticSouthMeridian.innerHTML).to.equal(
          Format.degreesAndDegreesMinutes(
              calculator.magneticSouthMeridian()));
      expect(view._meanMark.textContent).to.equal(
          Format.roundHalfToEven(calculator.meanMark(),3) + '°');
      expect(view._magneticAzimuthOfMark.textContent).to.equal(
          Format.roundHalfToEven(
              calculator.magneticAzimuthMark(),3) + '°');
      expect(view._trueAzimuthOfMark.textContent).to.equal('' +
          calculator.trueAzimuthOfMark() + '°');
      expect(view._magneticDeclination.innerHTML).to.equal(
          Format.degreesAndDegreesMinutes(
              calculator.magneticDeclination()));
      expect(view._westUpMinusEastDown.textContent).to.equal(
          Format.roundHalfToEven(
            (calculator.westUpMinusEastDown()*60),3) + '\'');
      expect(view._eastUpMinusWestDown.textContent).to.equal(
          Format.roundHalfToEven(
          (calculator.eastUpMinusWestDown()*60),3) + '\'');
    });
  describe('Initialize', function () {
    var i = 0,
        len = 0,
        reading = Reading(),
        measurements = reading.getMeasurements(),
        observation = Observation(),
        view;

    view = DeclinationView({
      reading: reading,
      observation: observation,
      calculator: testCalculator
    });

    it('binds measurement change to render', function () {
      var spy = sinon.spy(view, 'render');

      var testmeasurements = [
          measurements[Measurement.FIRST_MARK_UP][0],
          measurements[Measurement.FIRST_MARK_DOWN][0],
          measurements[Measurement.WEST_DOWN][0],
          measurements[Measurement.EAST_DOWN][0],
          measurements[Measurement.WEST_UP][0],
          measurements[Measurement.EAST_UP][0],
          measurements[Measurement.SECOND_MARK_UP][0],
          measurements[Measurement.SECOND_MARK_DOWN][0]
      ];

      for (i = 0, len = testmeasurements.length; i < len; i++){
        testmeasurements[i].trigger('change');
        expect(spy.callCount).to.equal(i+1);
      }
    });

    // it('binds calculator change to render', function () {
    //   view.called = false;
    //   testCalculator.trigger('change');
    //   expect(view.called).to.equal(true);
    // });

  });
  _initialize = function () {
    _this._observation = _options.observation;
    _this._reading = _options.reading;
    _this._calculator = _options.baselineCalculator;
    _this._measurements = _this._reading.getMeasurements();

    _this._firstMarkUpMeasurement =
        _this._measurements[Measurement.FIRST_MARK_UP][0];
    _this._firstMarkDownMeasurement =
        _this._measurements[Measurement.FIRST_MARK_DOWN][0];
    _this._westDownMeasurement = _this._measurements[Measurement.WEST_DOWN][0];
    _this._eastDownMeasurement = _this._measurements[Measurement.EAST_DOWN][0];
    _this._westUpMeasurement = _this._measurements[Measurement.WEST_UP][0];
    _this._eastUpMeasurement = _this._measurements[Measurement.EAST_UP][0];
    _this._secondMarkUpMeasurement =
        _this._measurements[Measurement.SECOND_MARK_UP][0];
    _this._secondMarkDownMeasurement =
        _this._measurements[Measurement.SECOND_MARK_DOWN][0];

    _this._southDownMeasurement =
        _this._measurements[Measurement.SOUTH_DOWN][0];
    _this._northUpMeasurement = _this._measurements[Measurement.NORTH_UP][0];
    _this._southUpMeasurement = _this._measurements[Measurement.SOUTH_UP][0];
    _this._northDownMeasurement =
        _this._measurements[Measurement.NORTH_DOWN][0];

    _this._westDownMeasurement.on('change:time', _onTimeChange,
          _this._westDownMeasurement);
    _this._eastDownMeasurement.on('change:time', _onTimeChange,
          _this._eastDownMeasurement);
    _this._westUpMeasurement.on('change:time', _onTimeChange,
          _this._westUpMeasurement);
    _this._eastUpMeasurement.on('change:time', _onTimeChange,
          _this._eastUpMeasurement);
    _this._southDownMeasurement.on('change:time', _onTimeChange,
          _this._southDownMeasurement);
    _this._northDownMeasurement.on('change:time', _onTimeChange,
          _this._northDownMeasurement);
    _this._southUpMeasurement.on('change:time', _onTimeChange,
          _this._southUpMeasurement);
    _this._northUpMeasurement.on('change:time', _onTimeChange,
          _this._northUpMeasurement);

    _this.el.innerHTML = [
      '<section class="reading-view">',
        '<section class="row">',
          '<h2>Declination</h2>',
          '<section class="declination-input">',
            '<table>',
              '<thead>',
                '<tr>',
                  '<th scope="col">&nbsp;</th>',
                  '<th scope="col" class="measurement-time">Time</th>',
                  '<th scope="col" class="measurement-degrees">Deg</th>',
                  '<th scope="col" class="measurement-minutes">Min</th>',
                  '<th scope="col" class="measurement-seconds">Sec</th>',
                  '<th scope="col" class="measurement-h">H <small>(nT)</small></th>',
                  '<th scope="col" class="measurement-e">E <small>(nT)</small></th>',
                  '<th scope="col" class="measurement-z">Z <small>(nT)</small></th>',
                  '<th scope="col" class="measurement-f">F <small>(nT)</small></th>',
                '</tr>',
              '</thead>',
              '<tbody>',
                '<tr class="first-mark-up"></tr>',
                '<tr class="first-mark-down"></tr>',
                '<tr class="west-down"></tr>',
                '<tr class="east-down"></tr>',
                '<tr class="west-up"></tr>',
                '<tr class="east-up"></tr>',
                '<tr class="second-mark-up"></tr>',
                '<tr class="second-mark-down"></tr>',
              '</tbody>',
            '</table>',
          '</section>',
          '<section class="declination-output"></section>',
        '</section>',
        '<section class="row">',
          '<h2>Inclination</h2>',
          '<section class="inclination-input">',
            '<table>',
              '<thead>',
                '<tr>',
                  '<th scope="col">&nbsp;</th>',
                  '<th scope="col" class="measurement-time">Time</th>',
                  '<th scope="col" class="measurement-degrees">Deg</th>',
                  '<th scope="col" class="measurement-minutes">Min</th>',
                  '<th scope="col" class="measurement-seconds">Sec</th>',
                  '<th scope="col" class="measurement-h">H <small>(nT)</small></th>',
                  '<th scope="col" class="measurement-e">E <small>(nT)</small></th>',
                  '<th scope="col" class="measurement-z">Z <small>(nT)</small></th>',
                  '<th scope="col" class="measurement-f">F <small>(nT)</small></th>',
                '</tr>',
              '</thead>',
              '<tbody>',
                '<tr class="south-down"></tr>',
                '<tr class="north-up"></tr>',
                '<tr class="south-up"></tr>',
                '<tr class="north-down"></tr>',
              '</tbody>',
            '</table>',
          '</section>',
          '<section class="inclination-output"></section>',
        '</section>',
        '<section >',
          '<h2>Magnetometer Ordinates</h2>',
          '<section class="magnetometer-ordinates-output"></section>',
        '</section>',
      '</section>'
    ].join('');

    _this._firstMarkUpView = MeasurementView({
      el: _this.el.querySelector('.first-mark-up'),
      measurement: _this._firstMarkUpMeasurement,
      observation: _this._observation
    });

    _this._firstMarkDownView = MeasurementView({
      el: _this.el.querySelector('.first-mark-down'),
      measurement: _this._firstMarkDownMeasurement,
      observation: _this._observation
    });

    _this._westDownView = MeasurementView({
      el: _this.el.querySelector('.west-down'),
      measurement: _this._westDownMeasurement,
      observation: _this._observation
    });

    _this._eastDownView = MeasurementView({
      el: _this.el.querySelector('.east-down'),
      measurement: _this._eastDownMeasurement,
      observation: _this._observation
    });

    _this._westUpView = MeasurementView({
      el: _this.el.querySelector('.west-up'),
      measurement: _this._westUpMeasurement,
      observation: _this._observation
    });

    _this._eastUpView = MeasurementView({
      el: _this.el.querySelector('.east-up'),
      measurement: _this._eastUpMeasurement,
      observation: _this._observation
    });

    _this._secondMarkUpView = MeasurementView({
      el: _this.el.querySelector('.second-mark-up'),
      measurement: _this._secondMarkUpMeasurement,
      observation: _this._observation
    });

    _this._secondMarkDownView = MeasurementView({
      el: _this.el.querySelector('.second-mark-down'),
      measurement: _this._secondMarkDownMeasurement,
      observation: _this._observation
    });

    _this._declinationView = DeclinationView({
      el: _this.el.querySelector('.declination-output'),
      reading: _this._reading,
      observation: _this._observation,
      baselineCalculator: _this._calculator
    });


    _this._southDownView = MeasurementView({
      el: _this.el.querySelector('.south-down'),
      measurement: _this._southDownMeasurement,
      observation: _this._observation
    });

    _this._northUpView = MeasurementView({
      el: _this.el.querySelector('.north-up'),
      measurement: _this._northUpMeasurement,
      observation: _this._observation
    });

    _this._southUpView = MeasurementView({
      el: _this.el.querySelector('.south-up'),
      measurement: _this._southUpMeasurement,
      observation: _this._observation
    });

    _this._northDownView = MeasurementView({
      el: _this.el.querySelector('.north-down'),
      measurement: _this._northDownMeasurement,
      observation: _this._observation
    });

    _this._inclinationView = InclinationView({
      el: _this.el.querySelector('.inclination-output'),
      reading: _this._reading,
      observation: _this._observation,
      baselineCalculator: _this._calculator
    });


    _this._magnetometerOrdinatesView = MagnetometerOrdinatesView({
      el: _this.el.querySelector('.magnetometer-ordinates-output'),
      reading: _this._reading,
      observation: _this._observation,
      baselineCalculator: _this._calculator
    });
  };