// Socální poradce - automatické testy

/** Spustí všechny automatické testy
 */
var DO_ASSERT = true;

function unitTest(){
  // alert('Going to clear the old report');
  clearReport();
  // čtyřčlenná rodinu k 5.12.08
  // alert('Report cleared');
  // testSP_1();     // Vyřazeno, staré dávky jsou vyjmuté
  // alert('Test 1 done');
  testSP_2();
  // alert('Test 2 done');
  testSP_3();
  // Podrobnější testy na sociální příplatek
  testSP_SocP();
  // Test na sociální příplatek po 1.1.11
  testSP_SocP11();
  Assert.warn('Zkontrolovat');
  // alert('unitTest finished');
}

/** Vyčistí formulář, nastaví dané datum
 * @param d .. datum, které se má nastavit do formuláře
 */
function clearForm(d) {
  $('SocPr').reset();
  $('rodina').scan();
  $('rodina').memberList.each(function(m){m.setView()});
  $('referencni_datum').value = (d.getDate() + "." + (d.getMonth() + 1) + "." + d.getFullYear());
  $('rodina').setValid(false);
  $('rodina').refresh();
}

/** Přepočítá stránku po automatických změnách rodiny.
 * Postup je trochu jiný než u ručního ovládání.
 */
function testRefresh() {
  $('rodina').scan();
  $('rodina').memberList.each(function(m){m.setView()});
  $('rodina').setValid(true);
  $('rodina').refresh();
}

/** Vyplní do formuláře dva rodiče a dítě, jeden rodič je nezaopatřené dítě
*/
function fillFamily5() {
    $('clen1_vek').value = 55;
    $('clen1_jmeno').value = 'Karel';
    $('clen2_vek').value = 17;
    $('clen2_jmeno').value = 'Silva';
    $('clen2_neza').checked = true;
    $('clen3_vek').value = 7;
    $('clen3_jmeno').value = 'Pepíček';
    $('zs1').checked = true;
    testRefresh();
}

/** Vyplní do formuláře rodinu JS
 */
function fillFamily4 (){
  $('clen1_vek').value = 46;
  $('clen2_vek').value = 46;
  $('clen3_vek').value = 22;
  $('clen3_neza').checked = true;
  $('clen4_vek').value = 14;
  testRefresh();
}

/** Vyplní do formuláře samoživitelku s postiženým dítětem s nízkým příjmem
 */
function fillFamily2 (){
  $('clen1_vek').value = 32;
  $('clen2_vek').value = 10;
  $('clen2_ozp_check').checked = true;
  $('clen2_ozp_stup').setValue(2);
  $('clen2_zav_stup').setValue(1);
  $('dav_PnP_zavislost').setValue(1);
  $('zs6').checked=true;
  testRefresh();
}

/** Vyplní do formuláře dva rodiče a dítě
*/
function fillFamily3() {
  $('clen1_vek').value = 41;
  $('clen1_jmeno').value = 'Petr';
  $('clen2_vek').value = 40;
  $('clen2_jmeno').value = 'Petra';
  $('clen3_vek').value = 7;
  $('clen3_jmeno').value = 'Peta';
  $('zs1').checked = true;
  //$('clen3_ozp_check').checked = true;
  // $('clen3_ozp_stup').setValue(1);
  testRefresh();
}



/** Nastaví jednu z připravených rodin
 */
function setTestFamily(familyCode) {
   clearForm(splitDate('17.2.2009'));
   $('dav_SocP_pinUp').checked = true;
   // $('show_pinnedUp').checked = true;
   $('davky_filtr_').value = 'show_pinnedUp';
  switch (+familyCode) {
    case 2:
      fillFamily2();
      break;
    case 3:
      fillFamily3();
      break;
    case 4:
      fillFamily4();
      break;
    default:
      alert('Neznámý kód domácnosti: ' + familyCode)
  };
  $('testFamily').setValue(familyCode);
}
/** Test č. 1
 * Nastaví čtyřčlennou rodinu k 5.12.08
 * Zkontroluje:
 * -  viditelnost některých dávek.
 * -  životní minimum rodiny.
 * -  ???.
 */
 function testSP_1() {
  clearForm(splitDate('5.12.2008'));
  fillFamily4();
  // alert ('Family 4 filled');
  var tstName = "Test 1 (čtyřčlenná rodina): ";
  Assert.isEqual(9690, 
  $('rodina').zivotniMinimum,
  DO_ASSERT, tstName + "životní minimum rodiny");
  // alert ('Assert životní minimum rodiny passed');
  Assert.isFalse( 
  $('dav_RodP').visible(),
  DO_ASSERT, tstName + "Rodičovský příspěvek (ne)viditelný");
  // alert ('Assert -Rodičovský příspěvek (ne)viditelný- passed');
 
  Assert.isFalse( 
  $('dav_RodP09').visible(),
  DO_ASSERT, tstName + "Rodičovský příspěvek na rok 2009 (ne)viditelný");
 
  Assert.isEqual(1310, 
  $('dav_PnD_vyse').value,
  DO_ASSERT, tstName + "Přídavek na dítě - výše");
  // alert ('Assert -Přídavek na dítě - výše- passed');

 } // testSP_1
 
    
/** Test č. 2
 * Nastaví datum 8.1.09
 * Vyprázdní rodinu
 * Odkryje všechny dávky (platné k datu)
 * Zkontroluje viditelnost některých dávek.
 */
 function testSP_2() {
  clearForm(splitDate('8.1.2009'));
  // $('show_all').checked = true;
  // $('show_all').onclick();
   $('davky_filtr_').value = 'show_all';
  showSelected();
  
  var tstName = "Test 2 (nevyplněná rodina, všechny platné dávky): ";
 
  /* Assert.isFalse( 
  $('dav_RodP').visible(),
  DO_ASSERT, tstName + "Rodičovský příspěvek na rok 2008 nemá být vidět");
  dav_RodP - příliš staré - zrušeno */
  
  Assert.isTrue( 
  $('dav_RodP09').visible(),
  DO_ASSERT, tstName + "Rodičovský příspěvek na rok 2009 má být vidět");

  /*
  Assert.isFalse( 
  $('dav_PvN').visible(),
  DO_ASSERT, tstName + "Podpora v nezaměstnanosti na rok 2008 nemá být vidět");
  - příliš staré - zrušeno
  */
  
  /*
  Assert.isTrue( 
  $('dav_PvN09').visible(),
  DO_ASSERT, tstName + "Podpora v nezaměstnanosti na rok 2009 má být vidět");
   - zrušeno .. možná omylem, platí až do 31.12.10
  */
   
  //////

  Assert.isTrue( 
  $('dav_Porod').visible(),
  DO_ASSERT, tstName + "Porodné má být vidět");
 
   
  Assert.isTrue( 
  $('dav_PnD').visible(),
  DO_ASSERT, tstName + "Přídavek na dítě má být vidět");

  Assert.isTrue( 
  $('dav_SocP').visible(),
  DO_ASSERT, tstName + "Sociální příplatek má být vidět");

  Assert.isTrue( 
  $('dav_PPOdm').visible(),
  DO_ASSERT, tstName + "Odměna pěstouna má být vidět");

 }

/** Test č. 3
 * Samoživitelka s postiženým dítětem 8.1.09
 * Zkontroluje:
 * -  výši životního minima rodiny
 * -  RodP09 - viditelnost
 * -  PnD - výše
 * -  PnZ - limit
 * -  PnP - výše
 * -  PnP - splnění podmínek
 */
 function testSP_3() {
  clearForm(splitDate('8.1.2009'));
  fillFamily2();
  
  var tstName = "Test 1 (samoživitelka s postiženým dítětem): ";
 
  Assert.isEqual(4840, 
  $('rodina').zivotniMinimum,
  DO_ASSERT, tstName + "životní minimum rodiny");
 
  Assert.isFalse( 
  $('dav_RodP09').visible(),
  DO_ASSERT, tstName + "Rodičovský příspěvek na rok 2009 nemá být vidět");
 
  Assert.isEqual(610, 
  $('dav_PnD_vyse').value,
  DO_ASSERT, tstName + "Přídavek na dítě - výše");

  Assert.isEqual(4410, 
  $('dav_PnZ_limit_2').value,
  DO_ASSERT, tstName + "Příspěvek na živobytí - limit na měsíční příjem");

  Assert.isEqual(3000, 
  $('dav_PnP_vyse').value,
  DO_ASSERT, tstName + "Příspěvek na péči - výše");

  Assert.isEqual(4006, 
  $('dav_SocP_vyse_max').value,
  DO_ASSERT, tstName + "Sociální příplatek - výše");

  Assert.isTrue( 
  $('dav_PnP_p_vse').value,
  DO_ASSERT, tstName + "Podmínky příspěvku na péči mají být splněné");


} // testSP_3


/** Test na Sociální příplatek po změnách k 1.1.11
 * Dva rodiče a dítě 17.2.11
 * Zkontroluje:
 * -  výši životního minima rodiny
 * -  SocP - maximální výše
 */
function testSP_SocP11() {
    clearForm(splitDate('17.2.2011'));
    $('dav_SocP11_pinUp').checked = true;
    $('davky_filtr_').setValue('show_pinnedUp');

  fillFamily5();
  var tstName = "Sociální příplatek. Jeden rodič dospělý (zdravý), druhý nezaopatřený (zdravý) s dítětem 7 let (nemocné ): ";
  $('clen3_ozp_check').checked = true;
  $('clen3_ozp_stup').setValue(1);
  $('dav_SocP11_rodice').setValue('diteRodicOZP');
  testRefresh();
    
  Assert.isEqual(1427,
  $('dav_SocP11_vyse_max').value,
  DO_ASSERT, tstName + "výše.");

  clearForm(splitDate('17.2.2011'));
  $('dav_SocP11_pinUp').checked = true;
  $('davky_filtr_').setValue('show_pinnedUp');
  fillFamily5();
  $('clen3_vek').setValue(2);

  var tstName = "Sociální příplatek. Jeden rodič dospělý (zdravý), druhý nezaopatřený (TZP) s dítětem 2 roky (zdravé): ";
  $('clen2_ozp_check').checked = true;
  $('clen2_ozp_stup').setValue(3);
  $('dav_SocP11_rodice').setValue('diteRodicTZP');
  testRefresh();

  Assert.isEqual(880,
  $('dav_SocP11_vyse_max').value,
  DO_ASSERT, tstName + "výše.");
  
  var tstName = "Sociální příplatek. Jeden rodič dospělý (zdravý), druhý nezaopatřený (TZP) s dítětem 2 roky  (nemocné): ";
  $('clen3_ozp_check').checked = true;
  $('clen3_ozp_stup').setValue(1);
  testRefresh();

  Assert.isEqual(1233,
  $('dav_SocP11_vyse_max').value,
  DO_ASSERT, tstName + "výše.");

  var tstName = "Sociální příplatek. Jeden rodič dospělý (zdravý), druhý nezaopatřený (TZP) s dítětem 2 roky (postižené): ";
  $('clen3_ozp_check').checked = true;
  $('clen3_ozp_stup').setValue(2);
  testRefresh();

  Assert.isEqual(2824,
  $('dav_SocP11_vyse_max').value,
  DO_ASSERT, tstName + "výše.");

  var tstName = "Sociální příplatek. Jeden rodič dospělý (zdravý), druhý nezaopatřený (TZP) s dítětem 2 roky (postižené): ";
  $('clen3_ozp_check').checked = true;
  $('clen3_ozp_stup').setValue(3);
  testRefresh();

  Assert.isEqual(3254,
  $('dav_SocP11_vyse_max').value,
  DO_ASSERT, tstName + "výše.");

  clearForm(splitDate('17.2.2011'));
  $('dav_SocP11_pinUp').checked = true;
  $('davky_filtr_').setValue('show_pinnedUp');
  fillFamily5();
  $('clen3_vek').setValue(16);

  var tstName = "Sociální příplatek. Jeden rodič dospělý (zdravý), druhý nezaopatřený (nemocný) s dítětem 16 let (zdravé): ";
  $('clen2_ozp_check').checked = true;
  $('clen2_ozp_stup').setValue(1);
  $('dav_SocP11_rodice').setValue('diteRodicOZP');
  testRefresh();

  Assert.isEqual(1125,
  $('dav_SocP11_vyse_max').value,
  DO_ASSERT, tstName + "výše.");

  //Assert.warn('Zkontrolovat');  
} // testSP_SocP11

/** Test na Sociální příplatek (s navýšením)
 * Dva rodiče a dítě 17.2.09
 * Zkontroluje:
 * -  výši životního minima rodiny
 * -  SocP - viditelnost, maximální výše, příjem při minimální výši, limit
 */
 function testSP_SocP() {

 
   clearForm(splitDate('17.2.2009'));
   $('dav_SocP_pinUp').checked = true;
   $('davky_filtr_').value = 'show_pinnedUp';
   // $('show_pinnedUp').checked = true;
   fillFamily3();
   

   var tstName = "Sociální příplatek. Dva rodiče (zdraví) s dítětem (zdravé): ";

  Assert.isEqual(7440,
  $('rodina').zivotniMinimum,
  DO_ASSERT, tstName + "životní minimum rodiny");

  Assert.isEqual(980,
  $('dav_SocP_vyse_max').value,
  DO_ASSERT, tstName + "výše.");

  Assert.isEqual(44640, // 7440 * 2 * 3,
  $('dav_SocP_limit').value,
  DO_ASSERT, tstName + "limit příjmu pro uznání dávky");

  Assert.isEqual(43502, 
  $('dav_SocP_prijem_min').value,
  DO_ASSERT, tstName + "příjem pro minimální výši");

  Assert.isEqual(22342,
  $('dav_SocP_prijem_max').value,
  DO_ASSERT, tstName + "příjem pro maximální výši");
 
   var tstName = "Sociální příplatek. Dva rodiče (zdraví) s dítětem (nemocné): ";
  $('clen3_ozp_check').checked = true;
  $('clen3_ozp_stup').setValue(1);
  testRefresh();

  Assert.isEqual(7440,
  $('rodina').zivotniMinimum,
  DO_ASSERT, tstName + "životní minimum rodiny");

  Assert.isEqual(1422,
  $('dav_SocP_vyse_max').value,
  DO_ASSERT, tstName + "výše.");

  Assert.isEqual(48639,
  $('dav_SocP_limit').value,
  DO_ASSERT, tstName + "limit příjmu pro uznání dávky");

  Assert.isEqual(47713,
  $('dav_SocP_prijem_min').value,
  DO_ASSERT, tstName + "příjem pro minimální výši");

  Assert.isEqual(22322,
  $('dav_SocP_prijem_max').value,
  DO_ASSERT, tstName + "příjem pro maximální výši");

  var tstName = "Sociální příplatek. Dva rodiče (zdraví) s dítětem (postižené): ";
  $('clen3_ozp_check').checked = true;
  $('clen3_ozp_stup').setValue(2);
  testRefresh();

  Assert.isEqual(7440,
  $('rodina').zivotniMinimum,
  DO_ASSERT, tstName + "životní minimum rodiny");

  Assert.isEqual(3417,
  $('dav_SocP_vyse_max').value,
  DO_ASSERT, tstName + "výše.");

  Assert.isEqual(64280,
  $('dav_SocP_limit').value,
  DO_ASSERT, tstName + "limit příjmu pro uznání dávky");

  Assert.isEqual(63666,
  $('dav_SocP_prijem_min').value,
  DO_ASSERT, tstName + "příjem pro minimální výši");

  Assert.isEqual(22320,
  $('dav_SocP_prijem_max').value,
  DO_ASSERT, tstName + "příjem pro maximální výši");
  
   var tstName = "Sociální příplatek. Dva rodiče (zdraví) s dítětem (těžce postižené): ";
  $('clen3_ozp_check').checked = true;
  $('clen3_ozp_stup').setValue(3);
  testRefresh();


  Assert.isEqual(7440,
  $('rodina').zivotniMinimum,
  DO_ASSERT, tstName + "životní minimum rodiny");

  Assert.isEqual(3955,
  $('dav_SocP_vyse_max').value,
  DO_ASSERT, tstName + "výše.");

  Assert.isEqual(68160,
  $('dav_SocP_limit').value,
  DO_ASSERT, tstName + "limit příjmu pro uznání dávky");

  Assert.isEqual(67581,
  $('dav_SocP_prijem_min').value,
  DO_ASSERT, tstName + "příjem pro minimální výši");

  Assert.isEqual(22325,
  $('dav_SocP_prijem_max').value,
  DO_ASSERT, tstName + "příjem pro maximální výši");

  // Samoživitelka zdravá
  clearForm(splitDate('17.2.2009'));
  $('dav_SocP_pinUp').checked = true;
  // $('show_pinnedUp').checked = true;
  $('davky_filtr_').value = 'show_pinnedUp';

  fillFamily2();

  $('clen1_ozp_check').checked = false;
  $('clen1_ozp_stup').setValue(0);
  $('clen2_ozp_check').checked = false;
  $('clen2_ozp_stup').setValue(0);
  testRefresh();


  var tstName = "Sociální příplatek. Osamělý rodič (zdravý) s dítětem (zdravé): ";
  Assert.isEqual(4840,
  $('rodina').zivotniMinimum,
  DO_ASSERT, tstName + "životní minimum rodiny");

  Assert.isEqual(1314,
  $('dav_SocP_vyse_max').value,
  DO_ASSERT, tstName + "výše.");

  Assert.isEqual(33977,
  $('dav_SocP_limit').value,
  DO_ASSERT, tstName + "limit příjmu pro uznání dávky");

  Assert.isEqual( 33236,
  $('dav_SocP_prijem_min').value,
  DO_ASSERT, tstName + "příjem pro minimální výši");

  Assert.isEqual(14522,
  $('dav_SocP_prijem_max').value,
  DO_ASSERT, tstName + "příjem pro maximální výši");
// ToDo - odtud dokončit

  var tstName = "Sociální příplatek. Osamělý rodič (zdravý) s dítětem (nemocné): ";
  $('clen2_ozp_check').checked = true;
  $('clen2_ozp_stup').setValue(1);
  testRefresh();

  Assert.isEqual(4840,
  $('rodina').zivotniMinimum,
  DO_ASSERT, tstName + "životní minimum rodiny");

  Assert.isEqual(1806,
  $('dav_SocP_vyse_max').value,
  DO_ASSERT, tstName + "výše.");

  Assert.isEqual(33977,
  $('dav_SocP_limit').value,
  DO_ASSERT, tstName + "limit příjmu pro uznání dávky");

  Assert.isEqual(33236,
  $('dav_SocP_prijem_min').value,
  DO_ASSERT, tstName + "příjem pro minimální výši");

  Assert.isEqual(14524,
  $('dav_SocP_prijem_max').value,
  DO_ASSERT, tstName + "příjem pro maximální výši");

  var tstName = "Sociální příplatek. Osamělý rodič (zdravý) s dítětem (postižené): ";
  $('clen2_ozp_check').checked = true;
  $('clen2_ozp_stup').setValue(2);
  testRefresh();

  Assert.isEqual(4840,
  $('rodina').zivotniMinimum,
  DO_ASSERT, tstName + "životní minimum rodiny");

  Assert.isEqual(4006,
  $('dav_SocP_vyse_max').value,
  DO_ASSERT, tstName + "výše.");

  Assert.isEqual(48680,
  $('dav_SocP_limit').value,
  DO_ASSERT, tstName + "limit příjmu pro uznání dávky");

  Assert.isEqual(48215,
  $('dav_SocP_prijem_min').value,
  DO_ASSERT, tstName + "příjem pro minimální výši");

  Assert.isEqual(14524,
  $('dav_SocP_prijem_max').value,
  DO_ASSERT, tstName + "příjem pro maximální výši");
  
  var tstName = "Sociální příplatek. Osamělý rodič (zdravý) s dítětem (těžce postižené): ";
  $('clen2_ozp_check').checked = true;
  $('clen2_ozp_stup').setValue(3);
  testRefresh();

  Assert.isEqual(4840,
  $('rodina').zivotniMinimum,
  DO_ASSERT, tstName + "životní minimum rodiny");

  Assert.isEqual(4589,
  $('dav_SocP_vyse_max').value,
  DO_ASSERT, tstName + "výše.");

  Assert.isEqual(52560,
  $('dav_SocP_limit').value,
  DO_ASSERT, tstName + "limit příjmu pro uznání dávky");

  Assert.isEqual(52114,
  $('dav_SocP_prijem_min').value,
  DO_ASSERT, tstName + "příjem pro minimální výši");

  Assert.isEqual(14527,
  $('dav_SocP_prijem_max').value,
  DO_ASSERT, tstName + "příjem pro maximální výši");

  
  // Rodič TZP (3)
  clearForm(splitDate('17.2.2009'));
  $('dav_SocP_pinUp').checked = true;
  //$('show_pinnedUp').checked = true;
   $('davky_filtr_').value = 'show_pinnedUp';
  fillFamily2();

  $('clen1_ozp_check').checked = true;
  $('clen1_ozp_stup').setValue(3);
  $('clen2_ozp_check').checked = false;
  $('clen2_ozp_stup').setValue(0);
  testRefresh();


  var tstName = "Sociální příplatek. Osamělý rodič (TZP) s dítětem (zdravé): ";
  Assert.isEqual(4840,
  $('rodina').zivotniMinimum,
  DO_ASSERT, tstName + "životní minimum rodiny");

  Assert.isEqual(1568,
  $('dav_SocP_vyse_max').value,
  DO_ASSERT, tstName + "výše.");

  Assert.isEqual(37752,
  $('dav_SocP_limit').value,
  DO_ASSERT, tstName + "limit příjmu pro uznání dávky");

  Assert.isEqual(37012,
  $('dav_SocP_prijem_min').value,
  DO_ASSERT, tstName + "příjem pro minimální výši");

  Assert.isEqual(14534,
  $('dav_SocP_prijem_max').value,
  DO_ASSERT, tstName + "příjem pro maximální výši");

  var tstName = "Sociální příplatek. Osamělý rodič (TZP) s dítětem (nemocné): ";
  $('clen2_ozp_check').checked = true;
  $('clen2_ozp_stup').setValue(1);
  testRefresh();

  Assert.isEqual(4840,
  $('rodina').zivotniMinimum,
  DO_ASSERT, tstName + "životní minimum rodiny");

  Assert.isEqual(2061,
  $('dav_SocP_vyse_max').value,
  DO_ASSERT, tstName + "výše.");

  Assert.isEqual(37752,
  $('dav_SocP_limit').value,
  DO_ASSERT, tstName + "limit příjmu pro uznání dávky");

  Assert.isEqual(37012,
  $('dav_SocP_prijem_min').value,
  DO_ASSERT, tstName + "příjem pro minimální výši");

  Assert.isEqual(14521,
  $('dav_SocP_prijem_max').value,
  DO_ASSERT, tstName + "příjem pro maximální výši");

 var tstName = "Sociální příplatek. Osamělý rodič (TZP) s dítětem (postižené): ";
  $('clen2_ozp_check').checked = true;
  $('clen2_ozp_stup').setValue(2);
  testRefresh();

  Assert.isEqual(4840,
  $('rodina').zivotniMinimum,
  DO_ASSERT, tstName + "životní minimum rodiny");

  Assert.isEqual(4261,
  $('dav_SocP_vyse_max').value,
  DO_ASSERT, tstName + "výše.");

  Assert.isEqual(48680,
  $('dav_SocP_limit').value,
  DO_ASSERT, tstName + "limit příjmu pro uznání dávky");

  Assert.isEqual(48215,
  $('dav_SocP_prijem_min').value,
  DO_ASSERT, tstName + "příjem pro minimální výši");

  Assert.isEqual(14522,
  $('dav_SocP_prijem_max').value,
  DO_ASSERT, tstName + "příjem pro maximální výši");

 var tstName = "Sociální příplatek. Osamělý rodič (TZP) s dítětem (těžce postižené): ";
  $('clen2_ozp_check').checked = true;
  $('clen2_ozp_stup').setValue(3);
  testRefresh();

  Assert.isEqual(4840,
  $('rodina').zivotniMinimum,
  DO_ASSERT, tstName + "životní minimum rodiny");

  Assert.isEqual(4844,
  $('dav_SocP_vyse_max').value,
  DO_ASSERT, tstName + "výše.");

  Assert.isEqual(52560,
  $('dav_SocP_limit').value,
  DO_ASSERT, tstName + "limit příjmu pro uznání dávky");

  Assert.isEqual(52114,
  $('dav_SocP_prijem_min').value,
  DO_ASSERT, tstName + "příjem pro minimální výši");

  Assert.isEqual(14525,
  $('dav_SocP_prijem_max').value,
  DO_ASSERT, tstName + "příjem pro maximální výši");

} // testSP_SocP

