tcdbhtmlwidgets.pp 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. unit tcdbhtmlwidgets;
  2. {$mode objfpc}
  3. interface
  4. uses
  5. Classes, SysUtils, tcwidget, htmlwidgets, testregistry, db, dbhtmlwidgets, jsondataset, tcdbwidgets;
  6. Type
  7. TMyDBSelectWidget = class(TDBSelectWidget);
  8. { TTestDBSelectWidget }
  9. TTestDBSelectWidget= class(TBaseTestDBWidget)
  10. private
  11. FMy: TMyDBSelectWidget;
  12. procedure AssertOption(Idx: Integer; aText, aValue: String; Selected: Boolean=False);
  13. Protected
  14. Procedure SetUp; override;
  15. Procedure TearDown; override;
  16. Procedure Hookup;
  17. Public
  18. Property My : TMyDBSelectWidget Read FMy;
  19. Published
  20. Procedure TestHookup;
  21. Procedure TestRender;
  22. end;
  23. implementation
  24. uses JS, web;
  25. { TBaseTestDBWidget }
  26. { TTestDBSelectWidget }
  27. procedure TTestDBSelectWidget.AssertOption(Idx: Integer; aText, aValue: String; Selected: Boolean);
  28. Var
  29. O : TJSHTMLOptionElement;
  30. begin
  31. AssertTrue('Correct index',Idx<My.Element.childElementCount);
  32. O:=My.Element.children[Idx] as TJSHTMLOptionElement;
  33. AssertEquals('Text',aText,O.InnerText);
  34. if aValue='' then
  35. aValue:=aText;
  36. AssertEquals('Value',aValue,O.Value);
  37. AssertEquals('Selected',Selected,O.selected);
  38. end;
  39. procedure TTestDBSelectWidget.SetUp;
  40. begin
  41. inherited SetUp;
  42. FMy:=TMyDBSelectWidget.Create(Nil);
  43. FMy.ParentID:=SBaseWindowID;
  44. FMy.ItemField:='FS2';
  45. FMy.ValueField:='FI1';
  46. end;
  47. procedure TTestDBSelectWidget.TearDown;
  48. begin
  49. FreeAndNil(FMy);
  50. inherited TearDown;
  51. end;
  52. procedure TTestDBSelectWidget.Hookup;
  53. begin
  54. FMy.Datasource:=MyDatasource;
  55. end;
  56. procedure TTestDBSelectWidget.TestHookup;
  57. begin
  58. AssertNotNull('Have widget',My);
  59. AssertNull('Have no datasource',My.Datasource);
  60. AssertEquals('Have parentID',SBaseWindowID,My.ParentID);
  61. Hookup;
  62. AssertNotNull('Have datasource',MyDatasource);
  63. AssertNotNull('Have dataset',MyDataset);
  64. AssertSame('Have no datasource',MyDatasource,My.Datasource);
  65. AssertSame('Have dataset',MyDataset,My.Dataset);
  66. end;
  67. procedure TTestDBSelectWidget.TestRender;
  68. begin
  69. Hookup;
  70. My.Refresh;
  71. AssertTree('select/option');
  72. AssertEquals('Multi',False,My.multiple);
  73. AssertEquals('SelectedIndex',-1,My.selectedIndex);
  74. AssertEquals('Amount of option values',2,My.Element.childElementCount);
  75. AssertOption(0,'FS2_1','1');
  76. AssertOption(1,'FS2_2','2');
  77. end;
  78. initialization
  79. // RegisterTests([TTestDBSelectWidget]);
  80. end.