<?php
/**
 * @copyright (c) Kufer Software GmbH, Loisachstrasse 4, D-84453 Mühldorf
 */

class DBWorkTeilnehmer2Integrationtest extends \PHPUnit\Framework\TestCase
{
  /**
   * @var DBWorkTeilnehmer2
   */
  protected $object;

  /**
   * Sets up the fixture, for example, opens a network connection.
   * This method is called before a test is executed.
   */
  protected function setUp(): void
  {
    $this->object = new DBWorkTeilnehmer2();
    $this->object->newSearch();
  }

  /**
   * Tears down the fixture, for example, closes a network connection.
   * This method is called after a test is executed.
   */
  protected function tearDown(): void
  {
  }

  private function getDefaultTn2()
  {
    $result = new Teilnehmer();
    $result->dse_unterschrieben_bearbeiter = 'DE';
    $result->dse_unterschrieben_datum = '22.03.2018 00:00';
    $result->dse_unterschrieben_weg = 'I';
    $result->dse_widerrufen_bearbeiter = 'MM';
    $result->dse_widerrufen_datum = '23.12.2099 23:59';
    $result->dse_widerrufen_weg = 'T';

    return $result;
  }

  /**
   * @covers DBWorkTeilnehmer2::getByIds()
   * @test
   * getById ist derzeit im DBWork auskommentiert, daher das Requires eingefügt
   */
  public function getByIds_no_entry_in_teilnehm2_with_pTeilnehmAry()
  {
    $tn = new Teilnehmer();
    $expected1 = 'Jürgen';
    $expected2 = 'Möller';
    $tn->vorname = $expected1;
    $tn->name = $expected2;
    $tn2 = new Teilnehmer();
    $expected3 = 'Ida';
    $expected4 = 'Maier';
    $tn2->vorname = $expected3;
    $tn2->name = $expected4;
    $tnAry = array();
    $tnAry[] = $tn;
    $tnAry[] = $tn2;

    $ids = array(9999999, 99999999);
    $tns = $this->object->getByIds($ids, $tnAry);

    $this->assertEquals($expected1, $tns[0]->vorname);
    $this->assertEquals($expected2, $tns[0]->name);
    $this->assertEquals($expected3, $tns[1]->vorname);
    $this->assertEquals($expected4, $tns[1]->name);

    //aus der teilnehm2 darf aber nichts ausgelesen sein
    $this->assertEquals('', $tns[0]->dse_unterschrieben_datum);
    $this->assertEquals('', $tns[1]->dse_unterschrieben_datum);
  }

  /**
   * @covers DBWorkTeilnehmer2::updateTeilnehm2()
   * @test
   */
  public function updateTeilnehm2_no_entry_in_teilnehm2()
  {
    $tnr = 99999;
    $tn = $this->getDefaultTn2();
    $tn->id = $tnr;

    $this->expectException(InvalidArgumentException::class);
    $this->object->updateTeilnehm2($tn);
  }
}
