czy ja mam w testach jednostkowych pisać duble dla wszystkich pośrednio użytych metod klas zależnych ? Przecież np dla poniższej metody prepareFilterAndQuery musiałbym napisać z 50 dubli metod dla 3 wstrzykniętych obiektów. Strasznie dużo roboty, czegoś na pewno nie zrozumiałem.

  1. class Filter
  2. {
  3. public function prepareFilterAndQuery(TableDetails $td, FormsManagerExtended $forms, IFilterQuery $fq)
  4. {
  5. $td = $this->prepareDetails($td,$forms);
  6. $tds = $this->makeFilterAndQuery($td,$forms,$fq);
  7.  
  8. return $tds;
  9. }
  10.  
  11.  
  12. private function prepareDetails(TableDetails $tableDetails,FormsManagerExtended $tmpForms)
  13. {
  14. $tableDetails = $this->setFalse($tableDetails, $tmpForms);
  15. $tableDetails = $this->setFilter($tableDetails, $tmpForms);
  16.  
  17. return $tableDetails;
  18. }
  19.  
  20. private function makeFilterAndQuery(TableDetails $td,FormsManagerExtended $forms, IFilterQuery $fq)
  21. {
  22. if($td->getFilter() == 'all'){
  23. return $td;
  24. }
  25.  
  26. if($td->getFilter() == 'idstatus'){
  27. $td->setFilterField('idstatus');
  28. $tds = $fq->prepareStatusFilterQuery($td, $forms);
  29. return $tds;
  30. }
  31.  
  32. if($td->getFilter() == 'data') {
  33. $td->setFilterField('data');
  34. $tds = $fq->prepareDataFilterQuery($td, $forms);
  35. return $tds;
  36. }
  37.  
  38. if($td->getFilter() == 'idklient'){
  39. $tds = $fq->prepareKlientFilterQuery($td, $forms);
  40. return $tds;
  41. }
  42. }
  43.  
  44. private function setFalse(TableDetails $tb, FormsManagerExtended $fms)
  45. {
  46. if ($this->isAnyFormValid($fms)){
  47. $tb->setFilterField(false);
  48. $tb->setQuery(false);
  49. }
  50.  
  51. if(!($tb->getFilterField()))
  52. {
  53. $tb->setQuery(false);
  54. }
  55.  
  56. return $tb;
  57. }
  58.  
  59.  
  60. private function isAnyFormValid(FormsManager $forms)
  61. {
  62. return $forms->isAnyFormValid();
  63. }
  64.  
  65. private function setFilter(TableDetails $td,$forms)
  66. {
  67. if(!($td->getFilter()))
  68. {
  69. $td = $this->prepareFilterValue($forms,$td);
  70. }
  71.  
  72. return $td;
  73. }
  74.  
  75.  
  76. private function prepareFilterValue(FormsManagerExtended $fms,TableDetails $td){
  77. if($td->getFilterField()){
  78. $td->setFilter($td->getFilterField());
  79. return $td;
  80. }
  81. if($fms->isStatusFormValid()){
  82. $td->setFilter('idstatus');
  83. return $td;
  84. }
  85. if($fms->isDataZamFormValid()) {
  86. $td->setFilter('data');
  87. return $td;
  88. }
  89. if($fms->isNrKlientaFormValid()){
  90. $td->setFilter('idklient');
  91. return $td;
  92. }
  93.  
  94. $td->setFilter('all');
  95. return $td;
  96. }
  97. }