@webiny/app-trash-bin 5.40.6 → 5.41.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/Domain/Repositories/SelectedItems/ISelectedItemsRepository.d.ts +3 -0
  2. package/Domain/Repositories/SelectedItems/ISelectedItemsRepository.js.map +1 -1
  3. package/Domain/Repositories/SelectedItems/SelectedItemsRepository.d.ts +4 -0
  4. package/Domain/Repositories/SelectedItems/SelectedItemsRepository.js +18 -0
  5. package/Domain/Repositories/SelectedItems/SelectedItemsRepository.js.map +1 -1
  6. package/Domain/Repositories/TrashBinItems/ITrashBinItemsRepository.d.ts +2 -1
  7. package/Domain/Repositories/TrashBinItems/ITrashBinItemsRepository.js.map +1 -1
  8. package/Domain/Repositories/TrashBinItems/TrashBinItemsRepository.d.ts +5 -3
  9. package/Domain/Repositories/TrashBinItems/TrashBinItemsRepository.js +15 -1
  10. package/Domain/Repositories/TrashBinItems/TrashBinItemsRepository.js.map +1 -1
  11. package/Domain/Repositories/TrashBinItems/TrashBinItemsRepositoryFactory.d.ts +2 -2
  12. package/Domain/Repositories/TrashBinItems/TrashBinItemsRepositoryFactory.js +2 -2
  13. package/Domain/Repositories/TrashBinItems/TrashBinItemsRepositoryFactory.js.map +1 -1
  14. package/Domain/Repositories/TrashBinItems/TrashBinItemsRepositoryWithLoading.d.ts +2 -1
  15. package/Domain/Repositories/TrashBinItems/TrashBinItemsRepositoryWithLoading.js +5 -0
  16. package/Domain/Repositories/TrashBinItems/TrashBinItemsRepositoryWithLoading.js.map +1 -1
  17. package/Gateways/TrashBinBulkActions/ITrashBinBulkActionsGateway.d.ts +4 -0
  18. package/Gateways/TrashBinBulkActions/ITrashBinBulkActionsGateway.js +7 -0
  19. package/Gateways/TrashBinBulkActions/ITrashBinBulkActionsGateway.js.map +1 -0
  20. package/Gateways/TrashBinBulkActions/index.d.ts +1 -0
  21. package/Gateways/TrashBinBulkActions/index.js +18 -0
  22. package/Gateways/TrashBinBulkActions/index.js.map +1 -0
  23. package/Gateways/index.d.ts +1 -0
  24. package/Gateways/index.js +11 -0
  25. package/Gateways/index.js.map +1 -1
  26. package/Presentation/TrashBin/TrashBin.d.ts +4 -1
  27. package/Presentation/TrashBin/TrashBin.js +2 -2
  28. package/Presentation/TrashBin/TrashBin.js.map +1 -1
  29. package/Presentation/TrashBin/TrashBin.test.js +157 -2
  30. package/Presentation/TrashBin/TrashBin.test.js.map +1 -1
  31. package/Presentation/TrashBin/TrashBinControllers.d.ts +8 -2
  32. package/Presentation/TrashBin/TrashBinControllers.js +26 -1
  33. package/Presentation/TrashBin/TrashBinControllers.js.map +1 -1
  34. package/Presentation/TrashBin/TrashBinPresenter.d.ts +3 -0
  35. package/Presentation/TrashBin/TrashBinPresenter.js +7 -0
  36. package/Presentation/TrashBin/TrashBinPresenter.js.map +1 -1
  37. package/Presentation/TrashBin/controllers/BulkAction/BulkActionsController.d.ts +9 -0
  38. package/Presentation/TrashBin/controllers/BulkAction/BulkActionsController.js +25 -0
  39. package/Presentation/TrashBin/controllers/BulkAction/BulkActionsController.js.map +1 -0
  40. package/Presentation/TrashBin/controllers/BulkAction/IBulkActionsController.d.ts +4 -0
  41. package/Presentation/TrashBin/controllers/BulkAction/IBulkActionsController.js +7 -0
  42. package/Presentation/TrashBin/controllers/BulkAction/IBulkActionsController.js.map +1 -0
  43. package/Presentation/TrashBin/controllers/BulkAction/index.d.ts +2 -0
  44. package/Presentation/TrashBin/controllers/BulkAction/index.js +29 -0
  45. package/Presentation/TrashBin/controllers/BulkAction/index.js.map +1 -0
  46. package/Presentation/TrashBin/controllers/SelectAllItems/ISelectAllItemsController.d.ts +3 -0
  47. package/Presentation/TrashBin/controllers/SelectAllItems/ISelectAllItemsController.js +7 -0
  48. package/Presentation/TrashBin/controllers/SelectAllItems/ISelectAllItemsController.js.map +1 -0
  49. package/Presentation/TrashBin/controllers/SelectAllItems/SelectAllItemsController.d.ts +7 -0
  50. package/Presentation/TrashBin/controllers/SelectAllItems/SelectAllItemsController.js +24 -0
  51. package/Presentation/TrashBin/controllers/SelectAllItems/SelectAllItemsController.js.map +1 -0
  52. package/Presentation/TrashBin/controllers/SelectAllItems/index.d.ts +2 -0
  53. package/Presentation/TrashBin/controllers/SelectAllItems/index.js +29 -0
  54. package/Presentation/TrashBin/controllers/SelectAllItems/index.js.map +1 -0
  55. package/Presentation/TrashBin/controllers/UnselectAllItems/IUnselectAllItemsController.d.ts +3 -0
  56. package/Presentation/TrashBin/controllers/UnselectAllItems/IUnselectAllItemsController.js +7 -0
  57. package/Presentation/TrashBin/controllers/UnselectAllItems/IUnselectAllItemsController.js.map +1 -0
  58. package/Presentation/TrashBin/controllers/UnselectAllItems/UnselectAllItemsController.d.ts +7 -0
  59. package/Presentation/TrashBin/controllers/UnselectAllItems/UnselectAllItemsController.js +24 -0
  60. package/Presentation/TrashBin/controllers/UnselectAllItems/UnselectAllItemsController.js.map +1 -0
  61. package/Presentation/TrashBin/controllers/UnselectAllItems/index.d.ts +2 -0
  62. package/Presentation/TrashBin/controllers/UnselectAllItems/index.js +29 -0
  63. package/Presentation/TrashBin/controllers/UnselectAllItems/index.js.map +1 -0
  64. package/Presentation/TrashBin/controllers/index.d.ts +3 -0
  65. package/Presentation/TrashBin/controllers/index.js +33 -0
  66. package/Presentation/TrashBin/controllers/index.js.map +1 -1
  67. package/Presentation/TrashBinRenderer/TrashBinRenderer.d.ts +1 -1
  68. package/Presentation/abstractions/ITrashBinControllers.d.ts +5 -1
  69. package/Presentation/abstractions/ITrashBinControllers.js.map +1 -1
  70. package/Presentation/abstractions/ITrashBinPresenter.d.ts +2 -0
  71. package/Presentation/abstractions/ITrashBinPresenter.js.map +1 -1
  72. package/Presentation/components/BulkActions/BulkActions/BulkActions.d.ts +1 -1
  73. package/Presentation/components/BulkActions/BulkActions/BulkActions.js +9 -4
  74. package/Presentation/components/BulkActions/BulkActions/BulkActions.js.map +1 -1
  75. package/Presentation/components/BulkActions/DeleteItems/DeleteItems.js +16 -3
  76. package/Presentation/components/BulkActions/DeleteItems/DeleteItems.js.map +1 -1
  77. package/Presentation/components/BulkActions/RestoreItems/RestoreItems.js +16 -3
  78. package/Presentation/components/BulkActions/RestoreItems/RestoreItems.js.map +1 -1
  79. package/Presentation/components/SelectAll/Messages.d.ts +7 -0
  80. package/Presentation/components/SelectAll/Messages.js +29 -0
  81. package/Presentation/components/SelectAll/Messages.js.map +1 -0
  82. package/Presentation/components/SelectAll/SelectAll.d.ts +3 -0
  83. package/Presentation/components/SelectAll/SelectAll.js +35 -0
  84. package/Presentation/components/SelectAll/SelectAll.js.map +1 -0
  85. package/Presentation/components/SelectAll/SelectAll.styled.d.ts +12 -0
  86. package/Presentation/components/SelectAll/SelectAll.styled.js +54 -0
  87. package/Presentation/components/SelectAll/SelectAll.styled.js.map +1 -0
  88. package/Presentation/components/SelectAll/index.d.ts +1 -0
  89. package/Presentation/components/SelectAll/index.js +18 -0
  90. package/Presentation/components/SelectAll/index.js.map +1 -0
  91. package/Presentation/components/TrashBinOverlay/TrashBinOverlay.js +2 -1
  92. package/Presentation/components/TrashBinOverlay/TrashBinOverlay.js.map +1 -1
  93. package/Presentation/configs/list/Browser/BulkAction.d.ts +3 -0
  94. package/Presentation/configs/list/Browser/BulkAction.js +8 -1
  95. package/Presentation/configs/list/Browser/BulkAction.js.map +1 -1
  96. package/Presentation/configs/list/Browser/EntryAction.d.ts +1 -1
  97. package/Presentation/configs/list/Browser/Table/Column.d.ts +1 -1
  98. package/Presentation/configs/list/Browser/Table/Sorting.d.ts +1 -1
  99. package/Presentation/configs/list/Browser/index.d.ts +2 -0
  100. package/Presentation/configs/list/TrashBinListConfig.d.ts +2 -0
  101. package/Presentation/hooks/useTrashBin.d.ts +5 -0
  102. package/Presentation/hooks/useTrashBin.js +17 -1
  103. package/Presentation/hooks/useTrashBin.js.map +1 -1
  104. package/Presentation/index.d.ts +6 -3
  105. package/Presentation/index.js.map +1 -1
  106. package/UseCases/BulkAction/BulkActionUseCase.d.ts +8 -0
  107. package/UseCases/BulkAction/BulkActionUseCase.js +25 -0
  108. package/UseCases/BulkAction/BulkActionUseCase.js.map +1 -0
  109. package/UseCases/BulkAction/IBulkActionUseCase.d.ts +4 -0
  110. package/UseCases/BulkAction/IBulkActionUseCase.js +7 -0
  111. package/UseCases/BulkAction/IBulkActionUseCase.js.map +1 -0
  112. package/UseCases/BulkAction/index.d.ts +2 -0
  113. package/UseCases/BulkAction/index.js +29 -0
  114. package/UseCases/BulkAction/index.js.map +1 -0
  115. package/UseCases/SelectAllItems/ISelectAllItemsUseCase.d.ts +3 -0
  116. package/UseCases/SelectAllItems/ISelectAllItemsUseCase.js +7 -0
  117. package/UseCases/SelectAllItems/ISelectAllItemsUseCase.js.map +1 -0
  118. package/UseCases/SelectAllItems/SelectAllItemsUseCase.d.ts +7 -0
  119. package/UseCases/SelectAllItems/SelectAllItemsUseCase.js +25 -0
  120. package/UseCases/SelectAllItems/SelectAllItemsUseCase.js.map +1 -0
  121. package/UseCases/SelectAllItems/index.d.ts +2 -0
  122. package/UseCases/SelectAllItems/index.js +29 -0
  123. package/UseCases/SelectAllItems/index.js.map +1 -0
  124. package/UseCases/UnSelectAllItems/IUnselectAllItemsUseCase.d.ts +3 -0
  125. package/UseCases/UnSelectAllItems/IUnselectAllItemsUseCase.js +7 -0
  126. package/UseCases/UnSelectAllItems/IUnselectAllItemsUseCase.js.map +1 -0
  127. package/UseCases/UnSelectAllItems/UnselectAllItemsUseCase.d.ts +7 -0
  128. package/UseCases/UnSelectAllItems/UnselectAllItemsUseCase.js +25 -0
  129. package/UseCases/UnSelectAllItems/UnselectAllItemsUseCase.js.map +1 -0
  130. package/UseCases/UnSelectAllItems/index.d.ts +2 -0
  131. package/UseCases/UnSelectAllItems/index.js +29 -0
  132. package/UseCases/UnSelectAllItems/index.js.map +1 -0
  133. package/UseCases/index.d.ts +3 -0
  134. package/UseCases/index.js +33 -0
  135. package/UseCases/index.js.map +1 -1
  136. package/package.json +11 -11
  137. package/types.d.ts +15 -0
  138. package/types.js.map +1 -1
@@ -40,6 +40,12 @@ var createBinRestoreItemGateway = function createBinRestoreItemGateway(_ref3) {
40
40
  execute: execute
41
41
  };
42
42
  };
43
+ var createBinBulkActionsGateway = function createBinBulkActionsGateway(_ref4) {
44
+ var execute = _ref4.execute;
45
+ return {
46
+ execute: execute
47
+ };
48
+ };
43
49
  var CustomItemMapper = /*#__PURE__*/function () {
44
50
  function CustomItemMapper() {
45
51
  (0, _classCallCheck2.default)(this, CustomItemMapper);
@@ -126,7 +132,16 @@ describe("TrashBin", function () {
126
132
  return Promise.resolve(item1);
127
133
  })
128
134
  });
135
+ var bulkActionGateway = createBinBulkActionsGateway({
136
+ execute: jest.fn().mockImplementation(function () {
137
+ return Promise.resolve({
138
+ id: "123456789"
139
+ });
140
+ })
141
+ });
129
142
  var itemMapper = new CustomItemMapper();
143
+ var BulkActionDeleteItems = "BulkDeleteItems";
144
+ var BulkActionRestoreItems = "BulkRestoreItems";
130
145
  var init = function init(listGateway, deleteItemGateway, restoreItemGateway) {
131
146
  var retentionPeriod = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 90;
132
147
  var selectedRepo = new _SelectedItems.SelectedItemsRepository();
@@ -135,11 +150,11 @@ describe("TrashBin", function () {
135
150
  var sortRepoWithDefaults = new _Sorting.SortingRepositoryWithDefaults(defaultSorting, sortRepo);
136
151
  var metaRepo = new _appUtils.MetaRepository();
137
152
  var searchRepo = new _Search.SearchRepository();
138
- var trashBinItemsRepo = new _TrashBinItems.TrashBinItemsRepository(metaRepo, listGateway, deleteItemGateway, restoreItemGateway, itemMapper);
153
+ var trashBinItemsRepo = new _TrashBinItems.TrashBinItemsRepository(metaRepo, listGateway, deleteItemGateway, restoreItemGateway, bulkActionGateway, itemMapper);
139
154
  var itemsRepo = new _TrashBinItems.TrashBinItemsRepositoryWithLoading(loadingRepo, trashBinItemsRepo);
140
155
  return {
141
156
  presenter: new _TrashBinPresenter.TrashBinPresenter(itemsRepo, selectedRepo, sortRepoWithDefaults, searchRepo, retentionPeriod),
142
- controllers: new _TrashBinControllers.TrashBinControllers(itemsRepo, selectedRepo, sortRepoWithDefaults, searchRepo).getControllers()
157
+ controllers: new _TrashBinControllers.TrashBinControllers(itemsRepo, selectedRepo, sortRepoWithDefaults, searchRepo, BulkActionDeleteItems, BulkActionRestoreItems).getControllers()
143
158
  };
144
159
  };
145
160
  beforeEach(function () {
@@ -651,6 +666,146 @@ describe("TrashBin", function () {
651
666
  retentionPeriod: output
652
667
  });
653
668
  });
669
+ it("should be able to perform bulk action - RESTORE", async function () {
670
+ var _init9 = init(listGateway, deleteItemGateway, restoreItemGateway),
671
+ controllers = _init9.controllers;
672
+
673
+ // let's list some entries from the gateway
674
+ await controllers.listItems.execute();
675
+ expect(listGateway.execute).toHaveBeenCalledTimes(1);
676
+ var restoreBulkActionPromise = controllers.restoreBulkAction.execute({
677
+ search: "Custom search",
678
+ where: {
679
+ title: "Item title"
680
+ },
681
+ data: {
682
+ any: 1
683
+ }
684
+ });
685
+ await restoreBulkActionPromise;
686
+ expect(bulkActionGateway.execute).toHaveBeenCalledTimes(1);
687
+ expect(bulkActionGateway.execute).toHaveBeenCalledWith({
688
+ action: BulkActionRestoreItems,
689
+ search: "Custom search",
690
+ where: {
691
+ title: "Item title"
692
+ },
693
+ data: {
694
+ any: 1
695
+ }
696
+ });
697
+ });
698
+ it("should be able to perform bulk action - DELETE", async function () {
699
+ var _init10 = init(listGateway, deleteItemGateway, restoreItemGateway),
700
+ controllers = _init10.controllers;
701
+
702
+ // let's list some entries from the gateway
703
+ await controllers.listItems.execute();
704
+ expect(listGateway.execute).toHaveBeenCalledTimes(1);
705
+ var deleteBulkActionPromise = controllers.deleteBulkAction.execute({
706
+ search: "Custom search",
707
+ where: {
708
+ title: "Item title"
709
+ },
710
+ data: {
711
+ any: 1
712
+ }
713
+ });
714
+ await deleteBulkActionPromise;
715
+ expect(bulkActionGateway.execute).toHaveBeenCalledTimes(1);
716
+ expect(bulkActionGateway.execute).toHaveBeenCalledWith({
717
+ action: BulkActionDeleteItems,
718
+ search: "Custom search",
719
+ where: {
720
+ title: "Item title"
721
+ },
722
+ data: {
723
+ any: 1
724
+ }
725
+ });
726
+ });
727
+ it("should be able to `selectAll` and `unselectAll` items", async function () {
728
+ {
729
+ // let's test the functionality by listing items that span multiple pages.
730
+ var _listGateway = createBinListGateway({
731
+ execute: jest.fn().mockImplementation(function () {
732
+ return Promise.resolve([[item1, item2, item3], {
733
+ totalCount: 4,
734
+ cursor: "IjMi",
735
+ hasMoreItems: true
736
+ }]);
737
+ })
738
+ });
739
+ var _init11 = init(_listGateway, deleteItemGateway, restoreItemGateway),
740
+ presenter = _init11.presenter,
741
+ controllers = _init11.controllers;
742
+
743
+ // let's list some entries from the gateway
744
+ await controllers.listItems.execute();
745
+ expect(_listGateway.execute).toHaveBeenCalledTimes(1);
746
+
747
+ // let's check the initial vm state
748
+ expect(presenter.vm.items.length).toBe(3);
749
+ expect(presenter.vm.selectedItems.length).toBe(0);
750
+ expect(presenter.vm.allowSelectAll).toBeFalsy();
751
+ expect(presenter.vm.isSelectedAll).toBeFalsy();
752
+
753
+ // let's check the vm state after selecting all items on the page
754
+ await controllers.selectItems.execute([item1, item2, item3]);
755
+ expect(presenter.vm.selectedItems.length).toBe(3);
756
+ expect(presenter.vm.allowSelectAll).toBeTruthy();
757
+ expect(presenter.vm.isSelectedAll).toBeFalsy();
758
+
759
+ // let's check the vm state after selecting all items
760
+ await controllers.selectAllItems.execute();
761
+ expect(presenter.vm.selectedItems.length).toBe(3);
762
+ expect(presenter.vm.allowSelectAll).toBeTruthy();
763
+ expect(presenter.vm.isSelectedAll).toBeTruthy();
764
+
765
+ // let's check the vm state after unselecting all items
766
+ await controllers.unselectAllItems.execute();
767
+ expect(presenter.vm.selectedItems.length).toBe(0);
768
+ expect(presenter.vm.allowSelectAll).toBeFalsy();
769
+ expect(presenter.vm.isSelectedAll).toBeFalsy();
770
+
771
+ // let's check the vm state after unselecting one item
772
+ await controllers.selectItems.execute([item1, item2, item3]);
773
+ expect(presenter.vm.selectedItems.length).toBe(3);
774
+ await controllers.selectAllItems.execute();
775
+ expect(presenter.vm.isSelectedAll).toBeTruthy();
776
+ await controllers.selectItems.execute([item1, item2]);
777
+ expect(presenter.vm.isSelectedAll).toBeFalsy();
778
+ expect(presenter.vm.allowSelectAll).toBeFalsy();
779
+ }
780
+ {
781
+ // let's test the functionality by listing items that span only one page.
782
+ var _listGateway2 = createBinListGateway({
783
+ execute: jest.fn().mockImplementation(function () {
784
+ return Promise.resolve([[item1, item2, item3], {
785
+ totalCount: 3,
786
+ cursor: null,
787
+ hasMoreItems: false
788
+ }]);
789
+ })
790
+ });
791
+ var _init12 = init(_listGateway2, deleteItemGateway, restoreItemGateway),
792
+ _presenter = _init12.presenter,
793
+ _controllers = _init12.controllers;
794
+
795
+ // let's list some entries from the gateway
796
+ await _controllers.listItems.execute();
797
+ expect(_listGateway2.execute).toHaveBeenCalledTimes(1);
798
+
799
+ // let's check the initial vm state
800
+ expect(_presenter.vm.items.length).toBe(3);
801
+
802
+ // let's check the vm state after selecting all items in the page
803
+ await _controllers.selectItems.execute([item1, item2, item3]);
804
+ expect(_presenter.vm.selectedItems.length).toBe(3);
805
+ expect(_presenter.vm.allowSelectAll).toBeFalsy();
806
+ expect(_presenter.vm.isSelectedAll).toBeFalsy();
807
+ }
808
+ });
654
809
  });
655
810
 
656
811
  //# sourceMappingURL=TrashBin.test.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_TrashBinPresenter","require","_appUtils","_types","_TrashBinControllers","_Search","_SelectedItems","_Sorting","_TrashBinItems","identity1","id","displayName","type","identity2","createBinListGateway","_ref","execute","createBinDeleteItemGateway","_ref2","createBinRestoreItemGateway","_ref3","CustomItemMapper","_classCallCheck2","default","_createClass2","key","value","toDTO","data","title","location","createdBy","deletedOn","deletedBy","defaultSorting","field","order","describe","item1","folderId","Date","toString","custom","item2","item3","item4","listGateway","jest","fn","mockImplementation","Promise","resolve","totalCount","cursor","hasMoreItems","deleteItemGateway","restoreItemGateway","itemMapper","init","retentionPeriod","arguments","length","undefined","selectedRepo","SelectedItemsRepository","loadingRepo","LoadingRepository","sortRepo","SortingRepository","sortRepoWithDefaults","SortingRepositoryWithDefaults","metaRepo","MetaRepository","searchRepo","SearchRepository","trashBinItemsRepo","TrashBinItemsRepository","itemsRepo","TrashBinItemsRepositoryWithLoading","presenter","TrashBinPresenter","controllers","TrashBinControllers","getControllers","beforeEach","clearAllMocks","it","_init","listPromise","listItems","expect","vm","toMatchObject","items","loading","_defineProperty2","LoadingActions","list","toHaveBeenCalledTimes","toHaveBeenCalledWith","sort","$selectable","any","String","mockImplementationOnce","_init2","listMorePromise","listMoreItems","listMore","after","search","sortListGateway","_init3","toHaveBeenNthCalledWith","sortItems","desc","sorting","searchItemsGateway","_init4","searchItems","searchQuery","isEmptyView","_init5","selectedItems","selectItems","_init6","deletePromise","deleteItem","delete","_init7","restorePromise","restoreItem","restore","restoredItems","restoredItem","getRestoredItemById","each","input","output","_init8"],"sources":["TrashBin.test.ts"],"sourcesContent":["import { TrashBinPresenter } from \"./TrashBinPresenter\";\nimport { LoadingRepository, MetaRepository, Sorting, SortingRepository } from \"@webiny/app-utils\";\nimport { LoadingActions, TrashBinIdentity, TrashBinLocation } from \"~/types\";\nimport { TrashBinControllers } from \"~/Presentation/TrashBin/TrashBinControllers\";\nimport {\n ITrashBinDeleteItemGateway,\n ITrashBinListGateway,\n ITrashBinRestoreItemGateway\n} from \"~/Gateways\";\nimport { ITrashBinItemMapper } from \"~/Domain/Models/TrashBinItem\";\nimport { SearchRepository } from \"~/Domain/Repositories/Search\";\nimport { SelectedItemsRepository } from \"~/Domain/Repositories/SelectedItems\";\nimport { SortingRepositoryWithDefaults } from \"~/Domain/Repositories/Sorting\";\nimport {\n TrashBinItemsRepository,\n TrashBinItemsRepositoryWithLoading\n} from \"~/Domain/Repositories/TrashBinItems\";\n\ninterface Item {\n id: string;\n title: string;\n location: TrashBinLocation;\n createdBy: TrashBinIdentity;\n deletedOn: string;\n deletedBy: TrashBinIdentity;\n custom: string;\n}\n\nconst identity1: TrashBinIdentity = {\n id: \"1234\",\n displayName: \"John Doe\",\n type: \"admin\"\n};\n\nconst identity2: TrashBinIdentity = {\n id: \"5678\",\n displayName: \"Jane Doe\",\n type: \"admin\"\n};\n\nconst createBinListGateway = ({\n execute\n}: ITrashBinListGateway<Item>): ITrashBinListGateway<Item> => ({\n execute\n});\n\nconst createBinDeleteItemGateway = ({\n execute\n}: ITrashBinDeleteItemGateway): ITrashBinDeleteItemGateway => ({\n execute\n});\n\nconst createBinRestoreItemGateway = ({\n execute\n}: ITrashBinRestoreItemGateway<Item>): ITrashBinRestoreItemGateway<Item> => ({\n execute\n});\n\nclass CustomItemMapper implements ITrashBinItemMapper<Item> {\n toDTO(data: Item) {\n return {\n id: data.id,\n title: data.title,\n location: data.location,\n createdBy: data.createdBy,\n deletedOn: data.deletedOn,\n deletedBy: data.deletedBy\n };\n }\n}\n\nconst defaultSorting: Sorting[] = [{ field: \"deletedOn\", order: \"desc\" }];\n\ndescribe(\"TrashBin\", () => {\n const item1: Item = {\n id: \"item-1\",\n title: \"Item 1\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity2,\n deletedOn: new Date().toString(),\n custom: \"any custom data\"\n };\n\n const item2: Item = {\n id: \"item-2\",\n title: \"Item 2\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity1,\n deletedOn: new Date().toString(),\n custom: \"any custom data\"\n };\n\n const item3: Item = {\n id: \"item-3\",\n title: \"Item 3\",\n location: {\n folderId: \"folder-b\"\n },\n createdBy: identity2,\n deletedBy: identity2,\n deletedOn: new Date().toString(),\n custom: \"any custom data\"\n };\n\n const item4: Item = {\n id: \"item-4\",\n title: \"Item 4\",\n location: {\n folderId: \"folder-b\"\n },\n createdBy: identity1,\n deletedBy: identity1,\n deletedOn: new Date().toString(),\n custom: \"any custom data\"\n };\n\n const listGateway = createBinListGateway({\n execute: jest.fn().mockImplementation(() => {\n return Promise.resolve([\n [item1, item2, item3],\n { totalCount: 3, cursor: null, hasMoreItems: false }\n ]);\n })\n });\n\n const deleteItemGateway = createBinDeleteItemGateway({\n execute: jest.fn().mockImplementation(() => {\n return Promise.resolve(true);\n })\n });\n\n const restoreItemGateway = createBinRestoreItemGateway({\n execute: jest.fn().mockImplementation(() => {\n return Promise.resolve(item1);\n })\n });\n\n const itemMapper = new CustomItemMapper();\n\n const init = (\n listGateway: ITrashBinListGateway<Item>,\n deleteItemGateway: ITrashBinDeleteItemGateway,\n restoreItemGateway: ITrashBinRestoreItemGateway<Item>,\n retentionPeriod = 90\n ) => {\n const selectedRepo = new SelectedItemsRepository();\n const loadingRepo = new LoadingRepository();\n const sortRepo = new SortingRepository();\n const sortRepoWithDefaults = new SortingRepositoryWithDefaults(defaultSorting, sortRepo);\n const metaRepo = new MetaRepository();\n const searchRepo = new SearchRepository();\n const trashBinItemsRepo = new TrashBinItemsRepository(\n metaRepo,\n listGateway,\n deleteItemGateway,\n restoreItemGateway,\n itemMapper\n );\n\n const itemsRepo = new TrashBinItemsRepositoryWithLoading(loadingRepo, trashBinItemsRepo);\n\n return {\n presenter: new TrashBinPresenter(\n itemsRepo,\n selectedRepo,\n sortRepoWithDefaults,\n searchRepo,\n retentionPeriod\n ),\n controllers: new TrashBinControllers(\n itemsRepo,\n selectedRepo,\n sortRepoWithDefaults,\n searchRepo\n ).getControllers()\n };\n };\n\n beforeEach(() => {\n jest.clearAllMocks();\n });\n\n it(\"should create a presenter and list trash bin entries from the gateway\", async () => {\n const { presenter, controllers } = init(listGateway, deleteItemGateway, restoreItemGateway);\n\n const listPromise = controllers.listItems.execute();\n\n // Let's check the transition to loading state\n expect(presenter.vm).toMatchObject({\n items: [],\n loading: {\n [LoadingActions.list]: true\n }\n });\n\n await listPromise;\n\n expect(listGateway.execute).toHaveBeenCalledTimes(1);\n expect(listGateway.execute).toHaveBeenCalledWith({\n sort: [\"deletedOn_DESC\"]\n });\n\n expect(presenter.vm).toMatchObject({\n items: [\n {\n id: \"item-1\",\n $selectable: true,\n title: \"Item 1\",\n createdBy: identity1,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-2\",\n $selectable: true,\n title: \"Item 2\",\n createdBy: identity1,\n deletedBy: identity1,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-3\",\n $selectable: true,\n title: \"Item 3\",\n createdBy: identity2,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n }\n ],\n loading: {\n [LoadingActions.list]: false\n }\n });\n });\n\n it(\"should list more items from the gateway\", async () => {\n const listGateway = createBinListGateway({\n execute: jest\n .fn()\n .mockImplementationOnce(() => {\n return Promise.resolve([\n [item1, item2, item3],\n { totalCount: 4, cursor: \"IjMi\", hasMoreItems: true }\n ]);\n })\n .mockImplementationOnce(() => {\n return Promise.resolve([\n [item4],\n { totalCount: 4, cursor: null, hasMoreItems: false }\n ]);\n })\n });\n\n const { presenter, controllers } = init(listGateway, deleteItemGateway, restoreItemGateway);\n\n // Let's list some initial entries\n await controllers.listItems.execute();\n expect(listGateway.execute).toHaveBeenCalledTimes(1);\n\n // Let's list more items from the gateway\n const listMorePromise = controllers.listMoreItems.execute();\n\n expect(presenter.vm).toMatchObject({\n loading: {\n [LoadingActions.listMore]: true\n }\n });\n\n await listMorePromise;\n\n expect(listGateway.execute).toHaveBeenCalledTimes(2);\n expect(listGateway.execute).toHaveBeenCalledWith({\n after: \"IjMi\",\n search: undefined,\n sort: [\"deletedOn_DESC\"]\n });\n\n expect(presenter.vm).toMatchObject({\n items: [\n {\n id: \"item-1\",\n $selectable: true,\n title: \"Item 1\",\n createdBy: identity1,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-2\",\n $selectable: true,\n title: \"Item 2\",\n createdBy: identity1,\n deletedBy: identity1,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-3\",\n $selectable: true,\n title: \"Item 3\",\n createdBy: identity2,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-4\",\n $selectable: true,\n title: \"Item 4\",\n createdBy: identity1,\n deletedBy: identity1,\n deletedOn: expect.any(String)\n }\n ],\n loading: {\n [LoadingActions.listMore]: false\n }\n });\n });\n\n it(\"should be able to sort items\", async () => {\n const sortListGateway = createBinListGateway({\n execute: jest\n .fn()\n .mockImplementationOnce(() => {\n return Promise.resolve([\n [item1, item2, item3],\n { totalCount: 3, cursor: null, hasMoreItems: false }\n ]);\n })\n .mockImplementation(() => {\n return Promise.resolve([\n [item3, item2, item1],\n { totalCount: 3, cursor: null, hasMoreItems: false }\n ]);\n })\n });\n\n const { presenter, controllers } = init(\n sortListGateway,\n deleteItemGateway,\n restoreItemGateway\n );\n\n // let's list some entries from the gateway\n await controllers.listItems.execute();\n\n expect(sortListGateway.execute).toHaveBeenNthCalledWith(1, {\n sort: [\"deletedOn_DESC\"]\n });\n\n // Let's sort items, it should call back the list gateway to retrieve the items sorted\n await controllers.sortItems.execute(() => [{ id: \"deletedOn\", desc: false }]);\n\n expect(sortListGateway.execute).toHaveBeenNthCalledWith(2, {\n sort: [\"deletedOn_ASC\"]\n });\n\n expect(presenter.vm).toMatchObject({\n items: [\n {\n id: \"item-3\",\n $selectable: true,\n title: \"Item 3\",\n createdBy: identity2,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-2\",\n $selectable: true,\n title: \"Item 2\",\n createdBy: identity1,\n deletedBy: identity1,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-1\",\n $selectable: true,\n title: \"Item 1\",\n createdBy: identity1,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n }\n ],\n loading: {\n [LoadingActions.list]: false\n },\n sorting: [{ id: \"deletedOn\", desc: false }]\n });\n });\n\n it(\"should be able to search items\", async () => {\n const searchItemsGateway = createBinListGateway({\n execute: jest\n .fn()\n .mockImplementationOnce(() => {\n return Promise.resolve([\n [item1, item2, item3],\n { totalCount: 3, cursor: null, hasMoreItems: false }\n ]);\n })\n .mockImplementationOnce(() => {\n return Promise.resolve([\n [item1],\n { totalCount: 1, cursor: null, hasMoreItems: false }\n ]);\n })\n .mockImplementationOnce(() => {\n return Promise.resolve([\n [],\n { totalCount: 0, cursor: null, hasMoreItems: false }\n ]);\n })\n });\n\n const { presenter, controllers } = init(\n searchItemsGateway,\n deleteItemGateway,\n restoreItemGateway\n );\n\n // let's list some entries from the gateway\n await controllers.listItems.execute();\n\n expect(searchItemsGateway.execute).toHaveBeenNthCalledWith(1, {\n sort: [\"deletedOn_DESC\"]\n });\n\n // Let's search for items, it should return items from the gateway\n await controllers.searchItems.execute(\"Item 1\");\n\n expect(searchItemsGateway.execute).toHaveBeenNthCalledWith(2, {\n sort: [\"deletedOn_DESC\"],\n search: \"Item 1\"\n });\n\n expect(presenter.vm).toMatchObject({\n items: [\n {\n id: \"item-1\",\n $selectable: true,\n title: \"Item 1\",\n createdBy: identity1,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n }\n ],\n loading: {\n [LoadingActions.list]: false\n },\n searchQuery: \"Item 1\"\n });\n\n // Let's search for items, it should return no items from the gateway\n await controllers.searchItems.execute(\"Not found query\");\n\n expect(searchItemsGateway.execute).toHaveBeenNthCalledWith(3, {\n sort: [\"deletedOn_DESC\"],\n search: \"Not found query\"\n });\n\n expect(presenter.vm).toMatchObject({\n items: [],\n loading: {\n [LoadingActions.list]: false\n },\n searchQuery: \"Not found query\",\n isEmptyView: true\n });\n });\n\n it(\"should be able to select items\", async () => {\n const { presenter, controllers } = init(listGateway, deleteItemGateway, restoreItemGateway);\n\n // let's list some entries from the gateway\n await controllers.listItems.execute();\n\n // No selected items found by default\n expect(presenter.vm).toMatchObject({\n selectedItems: []\n });\n\n // Let's select the first Item\n await controllers.selectItems.execute([\n {\n id: \"item-1\",\n $selectable: true,\n title: \"Item 1\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity2,\n deletedOn: new Date().toString()\n }\n ]);\n\n expect(presenter.vm).toMatchObject({\n selectedItems: [\n {\n id: \"item-1\",\n $selectable: true,\n title: \"Item 1\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n }\n ]\n });\n\n // Let's select the second item\n await controllers.selectItems.execute([\n {\n id: \"item-1\",\n $selectable: true,\n title: \"Item 1\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity2,\n deletedOn: new Date().toString()\n },\n {\n id: \"item-2\",\n $selectable: true,\n title: \"Item 2\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity1,\n deletedOn: new Date().toString()\n }\n ]);\n\n expect(presenter.vm).toMatchObject({\n selectedItems: [\n {\n id: \"item-1\",\n $selectable: true,\n title: \"Item 1\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-2\",\n $selectable: true,\n title: \"Item 2\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity1,\n deletedOn: expect.any(String)\n }\n ]\n });\n });\n\n it(\"should delete an item, removing it from the list\", async () => {\n const { presenter, controllers } = init(listGateway, deleteItemGateway, restoreItemGateway);\n\n // let's list some entries from the gateway\n await controllers.listItems.execute();\n\n expect(listGateway.execute).toHaveBeenCalledTimes(1);\n\n expect(presenter.vm).toMatchObject({\n items: [\n {\n id: \"item-1\",\n $selectable: true,\n title: \"Item 1\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-2\",\n $selectable: true,\n title: \"Item 2\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity1,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-3\",\n $selectable: true,\n title: \"Item 3\",\n location: {\n folderId: \"folder-b\"\n },\n createdBy: identity2,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n }\n ]\n });\n\n const deletePromise = controllers.deleteItem.execute(item1.id);\n\n // Let's check the transition to loading state\n expect(presenter.vm).toMatchObject({\n loading: {\n [LoadingActions.delete]: true\n }\n });\n\n await deletePromise;\n\n expect(deleteItemGateway.execute).toHaveBeenCalledTimes(1);\n expect(deleteItemGateway.execute).toHaveBeenCalledWith(item1.id);\n\n expect(presenter.vm).toMatchObject({\n items: [\n {\n id: \"item-2\",\n $selectable: true,\n title: \"Item 2\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity1,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-3\",\n $selectable: true,\n title: \"Item 3\",\n location: {\n folderId: \"folder-b\"\n },\n createdBy: identity2,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n }\n ]\n });\n });\n\n it(\"should restore an item, removing it from the list\", async () => {\n const { presenter, controllers } = init(listGateway, deleteItemGateway, restoreItemGateway);\n\n // let's list some entries from the gateway\n await controllers.listItems.execute();\n\n expect(listGateway.execute).toHaveBeenCalledTimes(1);\n\n expect(presenter.vm).toMatchObject({\n items: [\n {\n id: \"item-1\",\n $selectable: true,\n title: \"Item 1\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-2\",\n $selectable: true,\n title: \"Item 2\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity1,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-3\",\n $selectable: true,\n title: \"Item 3\",\n location: {\n folderId: \"folder-b\"\n },\n createdBy: identity2,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n }\n ]\n });\n\n const restorePromise = controllers.restoreItem.execute(item1.id);\n\n // Let's check the transition to loading state\n expect(presenter.vm).toMatchObject({\n loading: {\n [LoadingActions.restore]: true\n }\n });\n\n await restorePromise;\n\n expect(restoreItemGateway.execute).toHaveBeenCalledTimes(1);\n expect(restoreItemGateway.execute).toHaveBeenCalledWith(item1.id);\n\n expect(presenter.vm).toMatchObject({\n items: [\n {\n id: \"item-2\",\n $selectable: true,\n title: \"Item 2\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity1,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-3\",\n $selectable: true,\n title: \"Item 3\",\n location: {\n folderId: \"folder-b\"\n },\n createdBy: identity2,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n }\n ],\n restoredItems: [\n {\n id: \"item-1\",\n $selectable: true,\n title: \"Item 1\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n }\n ]\n });\n\n // We should be able to get the restored item by id\n const restoredItem = await controllers.getRestoredItemById.execute(\"item-1\");\n expect(restoredItem).toMatchObject({\n id: \"item-1\",\n $selectable: true,\n title: \"Item 1\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n });\n });\n\n it.each([\n [0, \"0 days\"],\n [1, \"1 day\"],\n [2, \"2 days\"]\n ])(\"should set the retention period to `%s` when input is `%i`\", (input, output) => {\n const { presenter } = init(listGateway, deleteItemGateway, restoreItemGateway, input);\n\n expect(presenter.vm).toMatchObject({\n retentionPeriod: output\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_TrashBinPresenter","require","_appUtils","_types","_TrashBinControllers","_Search","_SelectedItems","_Sorting","_TrashBinItems","identity1","id","displayName","type","identity2","createBinListGateway","_ref","execute","createBinDeleteItemGateway","_ref2","createBinRestoreItemGateway","_ref3","createBinBulkActionsGateway","_ref4","CustomItemMapper","_classCallCheck2","default","_createClass2","key","value","toDTO","data","title","location","createdBy","deletedOn","deletedBy","defaultSorting","field","order","describe","item1","folderId","Date","toString","custom","item2","item3","item4","listGateway","jest","fn","mockImplementation","Promise","resolve","totalCount","cursor","hasMoreItems","deleteItemGateway","restoreItemGateway","bulkActionGateway","itemMapper","BulkActionDeleteItems","BulkActionRestoreItems","init","retentionPeriod","arguments","length","undefined","selectedRepo","SelectedItemsRepository","loadingRepo","LoadingRepository","sortRepo","SortingRepository","sortRepoWithDefaults","SortingRepositoryWithDefaults","metaRepo","MetaRepository","searchRepo","SearchRepository","trashBinItemsRepo","TrashBinItemsRepository","itemsRepo","TrashBinItemsRepositoryWithLoading","presenter","TrashBinPresenter","controllers","TrashBinControllers","getControllers","beforeEach","clearAllMocks","it","_init","listPromise","listItems","expect","vm","toMatchObject","items","loading","_defineProperty2","LoadingActions","list","toHaveBeenCalledTimes","toHaveBeenCalledWith","sort","$selectable","any","String","mockImplementationOnce","_init2","listMorePromise","listMoreItems","listMore","after","search","sortListGateway","_init3","toHaveBeenNthCalledWith","sortItems","desc","sorting","searchItemsGateway","_init4","searchItems","searchQuery","isEmptyView","_init5","selectedItems","selectItems","_init6","deletePromise","deleteItem","delete","_init7","restorePromise","restoreItem","restore","restoredItems","restoredItem","getRestoredItemById","each","input","output","_init8","_init9","restoreBulkActionPromise","restoreBulkAction","where","action","_init10","deleteBulkActionPromise","deleteBulkAction","_init11","toBe","allowSelectAll","toBeFalsy","isSelectedAll","toBeTruthy","selectAllItems","unselectAllItems","_init12"],"sources":["TrashBin.test.ts"],"sourcesContent":["import { TrashBinPresenter } from \"./TrashBinPresenter\";\nimport { LoadingRepository, MetaRepository, Sorting, SortingRepository } from \"@webiny/app-utils\";\nimport { LoadingActions, TrashBinIdentity, TrashBinLocation } from \"~/types\";\nimport { TrashBinControllers } from \"~/Presentation/TrashBin/TrashBinControllers\";\nimport {\n ITrashBinBulkActionsGateway,\n ITrashBinDeleteItemGateway,\n ITrashBinListGateway,\n ITrashBinRestoreItemGateway\n} from \"~/Gateways\";\nimport { ITrashBinItemMapper } from \"~/Domain/Models/TrashBinItem\";\nimport { SearchRepository } from \"~/Domain/Repositories/Search\";\nimport { SelectedItemsRepository } from \"~/Domain/Repositories/SelectedItems\";\nimport { SortingRepositoryWithDefaults } from \"~/Domain/Repositories/Sorting\";\nimport {\n TrashBinItemsRepository,\n TrashBinItemsRepositoryWithLoading\n} from \"~/Domain/Repositories/TrashBinItems\";\n\ninterface Item {\n id: string;\n title: string;\n location: TrashBinLocation;\n createdBy: TrashBinIdentity;\n deletedOn: string;\n deletedBy: TrashBinIdentity;\n custom: string;\n}\n\nconst identity1: TrashBinIdentity = {\n id: \"1234\",\n displayName: \"John Doe\",\n type: \"admin\"\n};\n\nconst identity2: TrashBinIdentity = {\n id: \"5678\",\n displayName: \"Jane Doe\",\n type: \"admin\"\n};\n\nconst createBinListGateway = ({\n execute\n}: ITrashBinListGateway<Item>): ITrashBinListGateway<Item> => ({\n execute\n});\n\nconst createBinDeleteItemGateway = ({\n execute\n}: ITrashBinDeleteItemGateway): ITrashBinDeleteItemGateway => ({\n execute\n});\n\nconst createBinRestoreItemGateway = ({\n execute\n}: ITrashBinRestoreItemGateway<Item>): ITrashBinRestoreItemGateway<Item> => ({\n execute\n});\n\nconst createBinBulkActionsGateway = ({\n execute\n}: ITrashBinBulkActionsGateway): ITrashBinBulkActionsGateway => ({\n execute\n});\n\nclass CustomItemMapper implements ITrashBinItemMapper<Item> {\n toDTO(data: Item) {\n return {\n id: data.id,\n title: data.title,\n location: data.location,\n createdBy: data.createdBy,\n deletedOn: data.deletedOn,\n deletedBy: data.deletedBy\n };\n }\n}\n\nconst defaultSorting: Sorting[] = [{ field: \"deletedOn\", order: \"desc\" }];\n\ndescribe(\"TrashBin\", () => {\n const item1: Item = {\n id: \"item-1\",\n title: \"Item 1\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity2,\n deletedOn: new Date().toString(),\n custom: \"any custom data\"\n };\n\n const item2: Item = {\n id: \"item-2\",\n title: \"Item 2\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity1,\n deletedOn: new Date().toString(),\n custom: \"any custom data\"\n };\n\n const item3: Item = {\n id: \"item-3\",\n title: \"Item 3\",\n location: {\n folderId: \"folder-b\"\n },\n createdBy: identity2,\n deletedBy: identity2,\n deletedOn: new Date().toString(),\n custom: \"any custom data\"\n };\n\n const item4: Item = {\n id: \"item-4\",\n title: \"Item 4\",\n location: {\n folderId: \"folder-b\"\n },\n createdBy: identity1,\n deletedBy: identity1,\n deletedOn: new Date().toString(),\n custom: \"any custom data\"\n };\n\n const listGateway = createBinListGateway({\n execute: jest.fn().mockImplementation(() => {\n return Promise.resolve([\n [item1, item2, item3],\n { totalCount: 3, cursor: null, hasMoreItems: false }\n ]);\n })\n });\n\n const deleteItemGateway = createBinDeleteItemGateway({\n execute: jest.fn().mockImplementation(() => {\n return Promise.resolve(true);\n })\n });\n\n const restoreItemGateway = createBinRestoreItemGateway({\n execute: jest.fn().mockImplementation(() => {\n return Promise.resolve(item1);\n })\n });\n\n const bulkActionGateway = createBinBulkActionsGateway({\n execute: jest.fn().mockImplementation(() => {\n return Promise.resolve({ id: \"123456789\" });\n })\n });\n\n const itemMapper = new CustomItemMapper();\n\n const BulkActionDeleteItems = \"BulkDeleteItems\";\n const BulkActionRestoreItems = \"BulkRestoreItems\";\n\n const init = (\n listGateway: ITrashBinListGateway<Item>,\n deleteItemGateway: ITrashBinDeleteItemGateway,\n restoreItemGateway: ITrashBinRestoreItemGateway<Item>,\n retentionPeriod = 90\n ) => {\n const selectedRepo = new SelectedItemsRepository();\n const loadingRepo = new LoadingRepository();\n const sortRepo = new SortingRepository();\n const sortRepoWithDefaults = new SortingRepositoryWithDefaults(defaultSorting, sortRepo);\n const metaRepo = new MetaRepository();\n const searchRepo = new SearchRepository();\n const trashBinItemsRepo = new TrashBinItemsRepository(\n metaRepo,\n listGateway,\n deleteItemGateway,\n restoreItemGateway,\n bulkActionGateway,\n itemMapper\n );\n\n const itemsRepo = new TrashBinItemsRepositoryWithLoading(loadingRepo, trashBinItemsRepo);\n\n return {\n presenter: new TrashBinPresenter(\n itemsRepo,\n selectedRepo,\n sortRepoWithDefaults,\n searchRepo,\n retentionPeriod\n ),\n controllers: new TrashBinControllers(\n itemsRepo,\n selectedRepo,\n sortRepoWithDefaults,\n searchRepo,\n BulkActionDeleteItems,\n BulkActionRestoreItems\n ).getControllers()\n };\n };\n\n beforeEach(() => {\n jest.clearAllMocks();\n });\n\n it(\"should create a presenter and list trash bin entries from the gateway\", async () => {\n const { presenter, controllers } = init(listGateway, deleteItemGateway, restoreItemGateway);\n\n const listPromise = controllers.listItems.execute();\n\n // Let's check the transition to loading state\n expect(presenter.vm).toMatchObject({\n items: [],\n loading: {\n [LoadingActions.list]: true\n }\n });\n\n await listPromise;\n\n expect(listGateway.execute).toHaveBeenCalledTimes(1);\n expect(listGateway.execute).toHaveBeenCalledWith({\n sort: [\"deletedOn_DESC\"]\n });\n\n expect(presenter.vm).toMatchObject({\n items: [\n {\n id: \"item-1\",\n $selectable: true,\n title: \"Item 1\",\n createdBy: identity1,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-2\",\n $selectable: true,\n title: \"Item 2\",\n createdBy: identity1,\n deletedBy: identity1,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-3\",\n $selectable: true,\n title: \"Item 3\",\n createdBy: identity2,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n }\n ],\n loading: {\n [LoadingActions.list]: false\n }\n });\n });\n\n it(\"should list more items from the gateway\", async () => {\n const listGateway = createBinListGateway({\n execute: jest\n .fn()\n .mockImplementationOnce(() => {\n return Promise.resolve([\n [item1, item2, item3],\n { totalCount: 4, cursor: \"IjMi\", hasMoreItems: true }\n ]);\n })\n .mockImplementationOnce(() => {\n return Promise.resolve([\n [item4],\n { totalCount: 4, cursor: null, hasMoreItems: false }\n ]);\n })\n });\n\n const { presenter, controllers } = init(listGateway, deleteItemGateway, restoreItemGateway);\n\n // Let's list some initial entries\n await controllers.listItems.execute();\n expect(listGateway.execute).toHaveBeenCalledTimes(1);\n\n // Let's list more items from the gateway\n const listMorePromise = controllers.listMoreItems.execute();\n\n expect(presenter.vm).toMatchObject({\n loading: {\n [LoadingActions.listMore]: true\n }\n });\n\n await listMorePromise;\n\n expect(listGateway.execute).toHaveBeenCalledTimes(2);\n expect(listGateway.execute).toHaveBeenCalledWith({\n after: \"IjMi\",\n search: undefined,\n sort: [\"deletedOn_DESC\"]\n });\n\n expect(presenter.vm).toMatchObject({\n items: [\n {\n id: \"item-1\",\n $selectable: true,\n title: \"Item 1\",\n createdBy: identity1,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-2\",\n $selectable: true,\n title: \"Item 2\",\n createdBy: identity1,\n deletedBy: identity1,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-3\",\n $selectable: true,\n title: \"Item 3\",\n createdBy: identity2,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-4\",\n $selectable: true,\n title: \"Item 4\",\n createdBy: identity1,\n deletedBy: identity1,\n deletedOn: expect.any(String)\n }\n ],\n loading: {\n [LoadingActions.listMore]: false\n }\n });\n });\n\n it(\"should be able to sort items\", async () => {\n const sortListGateway = createBinListGateway({\n execute: jest\n .fn()\n .mockImplementationOnce(() => {\n return Promise.resolve([\n [item1, item2, item3],\n { totalCount: 3, cursor: null, hasMoreItems: false }\n ]);\n })\n .mockImplementation(() => {\n return Promise.resolve([\n [item3, item2, item1],\n { totalCount: 3, cursor: null, hasMoreItems: false }\n ]);\n })\n });\n\n const { presenter, controllers } = init(\n sortListGateway,\n deleteItemGateway,\n restoreItemGateway\n );\n\n // let's list some entries from the gateway\n await controllers.listItems.execute();\n\n expect(sortListGateway.execute).toHaveBeenNthCalledWith(1, {\n sort: [\"deletedOn_DESC\"]\n });\n\n // Let's sort items, it should call back the list gateway to retrieve the items sorted\n await controllers.sortItems.execute(() => [{ id: \"deletedOn\", desc: false }]);\n\n expect(sortListGateway.execute).toHaveBeenNthCalledWith(2, {\n sort: [\"deletedOn_ASC\"]\n });\n\n expect(presenter.vm).toMatchObject({\n items: [\n {\n id: \"item-3\",\n $selectable: true,\n title: \"Item 3\",\n createdBy: identity2,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-2\",\n $selectable: true,\n title: \"Item 2\",\n createdBy: identity1,\n deletedBy: identity1,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-1\",\n $selectable: true,\n title: \"Item 1\",\n createdBy: identity1,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n }\n ],\n loading: {\n [LoadingActions.list]: false\n },\n sorting: [{ id: \"deletedOn\", desc: false }]\n });\n });\n\n it(\"should be able to search items\", async () => {\n const searchItemsGateway = createBinListGateway({\n execute: jest\n .fn()\n .mockImplementationOnce(() => {\n return Promise.resolve([\n [item1, item2, item3],\n { totalCount: 3, cursor: null, hasMoreItems: false }\n ]);\n })\n .mockImplementationOnce(() => {\n return Promise.resolve([\n [item1],\n { totalCount: 1, cursor: null, hasMoreItems: false }\n ]);\n })\n .mockImplementationOnce(() => {\n return Promise.resolve([\n [],\n { totalCount: 0, cursor: null, hasMoreItems: false }\n ]);\n })\n });\n\n const { presenter, controllers } = init(\n searchItemsGateway,\n deleteItemGateway,\n restoreItemGateway\n );\n\n // let's list some entries from the gateway\n await controllers.listItems.execute();\n\n expect(searchItemsGateway.execute).toHaveBeenNthCalledWith(1, {\n sort: [\"deletedOn_DESC\"]\n });\n\n // Let's search for items, it should return items from the gateway\n await controllers.searchItems.execute(\"Item 1\");\n\n expect(searchItemsGateway.execute).toHaveBeenNthCalledWith(2, {\n sort: [\"deletedOn_DESC\"],\n search: \"Item 1\"\n });\n\n expect(presenter.vm).toMatchObject({\n items: [\n {\n id: \"item-1\",\n $selectable: true,\n title: \"Item 1\",\n createdBy: identity1,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n }\n ],\n loading: {\n [LoadingActions.list]: false\n },\n searchQuery: \"Item 1\"\n });\n\n // Let's search for items, it should return no items from the gateway\n await controllers.searchItems.execute(\"Not found query\");\n\n expect(searchItemsGateway.execute).toHaveBeenNthCalledWith(3, {\n sort: [\"deletedOn_DESC\"],\n search: \"Not found query\"\n });\n\n expect(presenter.vm).toMatchObject({\n items: [],\n loading: {\n [LoadingActions.list]: false\n },\n searchQuery: \"Not found query\",\n isEmptyView: true\n });\n });\n\n it(\"should be able to select items\", async () => {\n const { presenter, controllers } = init(listGateway, deleteItemGateway, restoreItemGateway);\n\n // let's list some entries from the gateway\n await controllers.listItems.execute();\n\n // No selected items found by default\n expect(presenter.vm).toMatchObject({\n selectedItems: []\n });\n\n // Let's select the first Item\n await controllers.selectItems.execute([\n {\n id: \"item-1\",\n $selectable: true,\n title: \"Item 1\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity2,\n deletedOn: new Date().toString()\n }\n ]);\n\n expect(presenter.vm).toMatchObject({\n selectedItems: [\n {\n id: \"item-1\",\n $selectable: true,\n title: \"Item 1\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n }\n ]\n });\n\n // Let's select the second item\n await controllers.selectItems.execute([\n {\n id: \"item-1\",\n $selectable: true,\n title: \"Item 1\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity2,\n deletedOn: new Date().toString()\n },\n {\n id: \"item-2\",\n $selectable: true,\n title: \"Item 2\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity1,\n deletedOn: new Date().toString()\n }\n ]);\n\n expect(presenter.vm).toMatchObject({\n selectedItems: [\n {\n id: \"item-1\",\n $selectable: true,\n title: \"Item 1\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-2\",\n $selectable: true,\n title: \"Item 2\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity1,\n deletedOn: expect.any(String)\n }\n ]\n });\n });\n\n it(\"should delete an item, removing it from the list\", async () => {\n const { presenter, controllers } = init(listGateway, deleteItemGateway, restoreItemGateway);\n\n // let's list some entries from the gateway\n await controllers.listItems.execute();\n\n expect(listGateway.execute).toHaveBeenCalledTimes(1);\n\n expect(presenter.vm).toMatchObject({\n items: [\n {\n id: \"item-1\",\n $selectable: true,\n title: \"Item 1\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-2\",\n $selectable: true,\n title: \"Item 2\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity1,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-3\",\n $selectable: true,\n title: \"Item 3\",\n location: {\n folderId: \"folder-b\"\n },\n createdBy: identity2,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n }\n ]\n });\n\n const deletePromise = controllers.deleteItem.execute(item1.id);\n\n // Let's check the transition to loading state\n expect(presenter.vm).toMatchObject({\n loading: {\n [LoadingActions.delete]: true\n }\n });\n\n await deletePromise;\n\n expect(deleteItemGateway.execute).toHaveBeenCalledTimes(1);\n expect(deleteItemGateway.execute).toHaveBeenCalledWith(item1.id);\n\n expect(presenter.vm).toMatchObject({\n items: [\n {\n id: \"item-2\",\n $selectable: true,\n title: \"Item 2\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity1,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-3\",\n $selectable: true,\n title: \"Item 3\",\n location: {\n folderId: \"folder-b\"\n },\n createdBy: identity2,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n }\n ]\n });\n });\n\n it(\"should restore an item, removing it from the list\", async () => {\n const { presenter, controllers } = init(listGateway, deleteItemGateway, restoreItemGateway);\n\n // let's list some entries from the gateway\n await controllers.listItems.execute();\n\n expect(listGateway.execute).toHaveBeenCalledTimes(1);\n\n expect(presenter.vm).toMatchObject({\n items: [\n {\n id: \"item-1\",\n $selectable: true,\n title: \"Item 1\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-2\",\n $selectable: true,\n title: \"Item 2\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity1,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-3\",\n $selectable: true,\n title: \"Item 3\",\n location: {\n folderId: \"folder-b\"\n },\n createdBy: identity2,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n }\n ]\n });\n\n const restorePromise = controllers.restoreItem.execute(item1.id);\n\n // Let's check the transition to loading state\n expect(presenter.vm).toMatchObject({\n loading: {\n [LoadingActions.restore]: true\n }\n });\n\n await restorePromise;\n\n expect(restoreItemGateway.execute).toHaveBeenCalledTimes(1);\n expect(restoreItemGateway.execute).toHaveBeenCalledWith(item1.id);\n\n expect(presenter.vm).toMatchObject({\n items: [\n {\n id: \"item-2\",\n $selectable: true,\n title: \"Item 2\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity1,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-3\",\n $selectable: true,\n title: \"Item 3\",\n location: {\n folderId: \"folder-b\"\n },\n createdBy: identity2,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n }\n ],\n restoredItems: [\n {\n id: \"item-1\",\n $selectable: true,\n title: \"Item 1\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n }\n ]\n });\n\n // We should be able to get the restored item by id\n const restoredItem = await controllers.getRestoredItemById.execute(\"item-1\");\n expect(restoredItem).toMatchObject({\n id: \"item-1\",\n $selectable: true,\n title: \"Item 1\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n });\n });\n\n it.each([\n [0, \"0 days\"],\n [1, \"1 day\"],\n [2, \"2 days\"]\n ])(\"should set the retention period to `%s` when input is `%i`\", (input, output) => {\n const { presenter } = init(listGateway, deleteItemGateway, restoreItemGateway, input);\n\n expect(presenter.vm).toMatchObject({\n retentionPeriod: output\n });\n });\n\n it(\"should be able to perform bulk action - RESTORE\", async () => {\n const { controllers } = init(listGateway, deleteItemGateway, restoreItemGateway);\n\n // let's list some entries from the gateway\n await controllers.listItems.execute();\n\n expect(listGateway.execute).toHaveBeenCalledTimes(1);\n\n const restoreBulkActionPromise = controllers.restoreBulkAction.execute({\n search: \"Custom search\",\n where: {\n title: \"Item title\"\n },\n data: {\n any: 1\n }\n });\n\n await restoreBulkActionPromise;\n\n expect(bulkActionGateway.execute).toHaveBeenCalledTimes(1);\n expect(bulkActionGateway.execute).toHaveBeenCalledWith({\n action: BulkActionRestoreItems,\n search: \"Custom search\",\n where: {\n title: \"Item title\"\n },\n data: {\n any: 1\n }\n });\n });\n\n it(\"should be able to perform bulk action - DELETE\", async () => {\n const { controllers } = init(listGateway, deleteItemGateway, restoreItemGateway);\n\n // let's list some entries from the gateway\n await controllers.listItems.execute();\n\n expect(listGateway.execute).toHaveBeenCalledTimes(1);\n\n const deleteBulkActionPromise = controllers.deleteBulkAction.execute({\n search: \"Custom search\",\n where: {\n title: \"Item title\"\n },\n data: {\n any: 1\n }\n });\n\n await deleteBulkActionPromise;\n\n expect(bulkActionGateway.execute).toHaveBeenCalledTimes(1);\n expect(bulkActionGateway.execute).toHaveBeenCalledWith({\n action: BulkActionDeleteItems,\n search: \"Custom search\",\n where: {\n title: \"Item title\"\n },\n data: {\n any: 1\n }\n });\n });\n\n it(\"should be able to `selectAll` and `unselectAll` items\", async () => {\n {\n // let's test the functionality by listing items that span multiple pages.\n const listGateway = createBinListGateway({\n execute: jest.fn().mockImplementation(() => {\n return Promise.resolve([\n [item1, item2, item3],\n { totalCount: 4, cursor: \"IjMi\", hasMoreItems: true }\n ]);\n })\n });\n\n const { presenter, controllers } = init(\n listGateway,\n deleteItemGateway,\n restoreItemGateway\n );\n\n // let's list some entries from the gateway\n await controllers.listItems.execute();\n\n expect(listGateway.execute).toHaveBeenCalledTimes(1);\n\n // let's check the initial vm state\n expect(presenter.vm.items.length).toBe(3);\n expect(presenter.vm.selectedItems.length).toBe(0);\n expect(presenter.vm.allowSelectAll).toBeFalsy();\n expect(presenter.vm.isSelectedAll).toBeFalsy();\n\n // let's check the vm state after selecting all items on the page\n await controllers.selectItems.execute([item1, item2, item3]);\n expect(presenter.vm.selectedItems.length).toBe(3);\n expect(presenter.vm.allowSelectAll).toBeTruthy();\n expect(presenter.vm.isSelectedAll).toBeFalsy();\n\n // let's check the vm state after selecting all items\n await controllers.selectAllItems.execute();\n expect(presenter.vm.selectedItems.length).toBe(3);\n expect(presenter.vm.allowSelectAll).toBeTruthy();\n expect(presenter.vm.isSelectedAll).toBeTruthy();\n\n // let's check the vm state after unselecting all items\n await controllers.unselectAllItems.execute();\n expect(presenter.vm.selectedItems.length).toBe(0);\n expect(presenter.vm.allowSelectAll).toBeFalsy();\n expect(presenter.vm.isSelectedAll).toBeFalsy();\n\n // let's check the vm state after unselecting one item\n await controllers.selectItems.execute([item1, item2, item3]);\n expect(presenter.vm.selectedItems.length).toBe(3);\n await controllers.selectAllItems.execute();\n expect(presenter.vm.isSelectedAll).toBeTruthy();\n await controllers.selectItems.execute([item1, item2]);\n expect(presenter.vm.isSelectedAll).toBeFalsy();\n expect(presenter.vm.allowSelectAll).toBeFalsy();\n }\n\n {\n // let's test the functionality by listing items that span only one page.\n const listGateway = createBinListGateway({\n execute: jest.fn().mockImplementation(() => {\n return Promise.resolve([\n [item1, item2, item3],\n { totalCount: 3, cursor: null, hasMoreItems: false }\n ]);\n })\n });\n\n const { presenter, controllers } = init(\n listGateway,\n deleteItemGateway,\n restoreItemGateway\n );\n\n // let's list some entries from the gateway\n await controllers.listItems.execute();\n\n expect(listGateway.execute).toHaveBeenCalledTimes(1);\n\n // let's check the initial vm state\n expect(presenter.vm.items.length).toBe(3);\n\n // let's check the vm state after selecting all items in the page\n await controllers.selectItems.execute([item1, item2, item3]);\n expect(presenter.vm.selectedItems.length).toBe(3);\n expect(presenter.vm.allowSelectAll).toBeFalsy();\n expect(presenter.vm.isSelectedAll).toBeFalsy();\n }\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -1,18 +1,24 @@
1
1
  import { ISortingRepository } from "@webiny/app-utils";
2
2
  import { ISearchRepository, ISelectedItemsRepository, ITrashBinItemsRepository } from "../../Domain";
3
- import { DeleteItemController, GetRestoredItemByIdController, ListItemsController, ListMoreItemsController, RestoreItemController, SearchItemsController, SelectItemsController, SortItemsController } from "./controllers";
3
+ import { BulkActionsController, DeleteItemController, GetRestoredItemByIdController, ListItemsController, ListMoreItemsController, RestoreItemController, SearchItemsController, SelectAllItemsController, SelectItemsController, SortItemsController, UnselectAllItemsController } from "./controllers";
4
4
  export declare class TrashBinControllers {
5
5
  private readonly itemsRepository;
6
6
  private readonly selectedRepository;
7
7
  private readonly sortingRepository;
8
8
  private readonly searchRepository;
9
- constructor(itemsRepository: ITrashBinItemsRepository, selectedRepository: ISelectedItemsRepository, sortingRepository: ISortingRepository, searchRepository: ISearchRepository);
9
+ private readonly deleteBulkActionName;
10
+ private readonly restoreBulkActionName;
11
+ constructor(itemsRepository: ITrashBinItemsRepository, selectedRepository: ISelectedItemsRepository, sortingRepository: ISortingRepository, searchRepository: ISearchRepository, deleteBulkActionName: string, restoreBulkActionName: string);
10
12
  getControllers(): {
11
13
  listItems: ListItemsController;
12
14
  listMoreItems: ListMoreItemsController;
13
15
  deleteItem: DeleteItemController;
14
16
  restoreItem: RestoreItemController;
17
+ restoreBulkAction: BulkActionsController;
18
+ deleteBulkAction: BulkActionsController;
15
19
  selectItems: SelectItemsController;
20
+ selectAllItems: SelectAllItemsController;
21
+ unselectAllItems: UnselectAllItemsController;
16
22
  sortItems: SortItemsController;
17
23
  searchItems: SearchItemsController;
18
24
  getRestoredItemById: GetRestoredItemByIdController;
@@ -10,12 +10,14 @@ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/creat
10
10
  var _controllers = require("./controllers");
11
11
  var _UseCases = require("../../UseCases");
12
12
  var TrashBinControllers = exports.TrashBinControllers = /*#__PURE__*/function () {
13
- function TrashBinControllers(itemsRepository, selectedRepository, sortingRepository, searchRepository) {
13
+ function TrashBinControllers(itemsRepository, selectedRepository, sortingRepository, searchRepository, deleteBulkActionName, restoreBulkActionName) {
14
14
  (0, _classCallCheck2.default)(this, TrashBinControllers);
15
15
  this.itemsRepository = itemsRepository;
16
16
  this.selectedRepository = selectedRepository;
17
17
  this.sortingRepository = sortingRepository;
18
18
  this.searchRepository = searchRepository;
19
+ this.deleteBulkActionName = deleteBulkActionName;
20
+ this.restoreBulkActionName = restoreBulkActionName;
19
21
  }
20
22
  return (0, _createClass2.default)(TrashBinControllers, [{
21
23
  key: "getControllers",
@@ -26,6 +28,16 @@ var TrashBinControllers = exports.TrashBinControllers = /*#__PURE__*/function ()
26
28
  return new _UseCases.SelectItemsUseCase(_this.selectedRepository);
27
29
  };
28
30
 
31
+ // Select All Items UseCase
32
+ var selectAllItemsUseCase = function selectAllItemsUseCase() {
33
+ return new _UseCases.SelectAllItemsUseCase(_this.selectedRepository);
34
+ };
35
+
36
+ // Unselect All Items UseCase
37
+ var unselectAllItemsUseCase = function unselectAllItemsUseCase() {
38
+ return new _UseCases.UnselectAllItemsUseCase(_this.selectedRepository);
39
+ };
40
+
29
41
  // Sort Items UseCase
30
42
  var sortItemsUseCase = function sortItemsUseCase() {
31
43
  return new _UseCases.SortItemsUseCase(_this.sortingRepository);
@@ -63,21 +75,34 @@ var TrashBinControllers = exports.TrashBinControllers = /*#__PURE__*/function ()
63
75
  return new _UseCases.GetRestoredItemUseCase(_this.itemsRepository);
64
76
  };
65
77
 
78
+ // Bulk Action UseCase
79
+ var bulkActionUseCase = function bulkActionUseCase() {
80
+ return new _UseCases.BulkActionUseCase(_this.itemsRepository);
81
+ };
82
+
66
83
  // Create controllers
67
84
  var listItems = new _controllers.ListItemsController(listItemsUseCase);
68
85
  var listMoreItems = new _controllers.ListMoreItemsController(listMoreItemsUseCase);
69
86
  var deleteItem = new _controllers.DeleteItemController(deleteItemUseCase);
70
87
  var restoreItem = new _controllers.RestoreItemController(restoreItemUseCase);
71
88
  var selectItems = new _controllers.SelectItemsController(selectItemsUseCase);
89
+ var selectAllItems = new _controllers.SelectAllItemsController(selectAllItemsUseCase);
90
+ var unselectAllItems = new _controllers.UnselectAllItemsController(unselectAllItemsUseCase);
72
91
  var sortItems = new _controllers.SortItemsController(listItemsUseCase, sortItemsUseCase);
73
92
  var searchItems = new _controllers.SearchItemsController(listItemsUseCase, searchItemsUseCase);
74
93
  var getRestoredItemById = new _controllers.GetRestoredItemByIdController(getRestoredItemUseCase);
94
+ var restoreBulkAction = new _controllers.BulkActionsController(bulkActionUseCase, this.restoreBulkActionName);
95
+ var deleteBulkAction = new _controllers.BulkActionsController(bulkActionUseCase, this.deleteBulkActionName);
75
96
  return {
76
97
  listItems: listItems,
77
98
  listMoreItems: listMoreItems,
78
99
  deleteItem: deleteItem,
79
100
  restoreItem: restoreItem,
101
+ restoreBulkAction: restoreBulkAction,
102
+ deleteBulkAction: deleteBulkAction,
80
103
  selectItems: selectItems,
104
+ selectAllItems: selectAllItems,
105
+ unselectAllItems: unselectAllItems,
81
106
  sortItems: sortItems,
82
107
  searchItems: searchItems,
83
108
  getRestoredItemById: getRestoredItemById
@@ -1 +1 @@
1
- {"version":3,"names":["_controllers","require","_UseCases","TrashBinControllers","exports","itemsRepository","selectedRepository","sortingRepository","searchRepository","_classCallCheck2","default","_createClass2","key","value","getControllers","_this","selectItemsUseCase","SelectItemsUseCase","sortItemsUseCase","SortItemsUseCase","searchItemsUseCase","SearchItemsUseCase","listItemsUseCase","baseListItemsUseCase","ListItemsUseCase","listItemsWithSearch","ListItemsUseCaseWithSearch","ListItemsUseCaseWithSorting","listMoreItemsUseCase","ListMoreItemsUseCase","deleteItemUseCase","DeleteItemUseCase","restoreItemUseCase","RestoreItemUseCase","getRestoredItemUseCase","GetRestoredItemUseCase","listItems","ListItemsController","listMoreItems","ListMoreItemsController","deleteItem","DeleteItemController","restoreItem","RestoreItemController","selectItems","SelectItemsController","sortItems","SortItemsController","searchItems","SearchItemsController","getRestoredItemById","GetRestoredItemByIdController"],"sources":["TrashBinControllers.ts"],"sourcesContent":["import { ISortingRepository } from \"@webiny/app-utils\";\nimport { ISearchRepository, ISelectedItemsRepository, ITrashBinItemsRepository } from \"~/Domain\";\nimport {\n DeleteItemController,\n GetRestoredItemByIdController,\n ListItemsController,\n ListMoreItemsController,\n RestoreItemController,\n SearchItemsController,\n SelectItemsController,\n SortItemsController\n} from \"~/Presentation/TrashBin/controllers\";\nimport {\n DeleteItemUseCase,\n GetRestoredItemUseCase,\n ListItemsUseCase,\n ListItemsUseCaseWithSearch,\n ListItemsUseCaseWithSorting,\n ListMoreItemsUseCase,\n RestoreItemUseCase,\n SearchItemsUseCase,\n SelectItemsUseCase,\n SortItemsUseCase\n} from \"~/UseCases\";\n\nexport class TrashBinControllers {\n private readonly itemsRepository: ITrashBinItemsRepository;\n private readonly selectedRepository: ISelectedItemsRepository;\n private readonly sortingRepository: ISortingRepository;\n private readonly searchRepository: ISearchRepository;\n\n constructor(\n itemsRepository: ITrashBinItemsRepository,\n selectedRepository: ISelectedItemsRepository,\n sortingRepository: ISortingRepository,\n searchRepository: ISearchRepository\n ) {\n this.itemsRepository = itemsRepository;\n this.selectedRepository = selectedRepository;\n this.sortingRepository = sortingRepository;\n this.searchRepository = searchRepository;\n }\n\n getControllers() {\n // Select Items UseCase\n const selectItemsUseCase = () => new SelectItemsUseCase(this.selectedRepository);\n\n // Sort Items UseCase\n const sortItemsUseCase = () => new SortItemsUseCase(this.sortingRepository);\n\n // Search Items UseCase\n const searchItemsUseCase = () => new SearchItemsUseCase(this.searchRepository);\n\n // List Items UseCase\n const listItemsUseCase = () => {\n const baseListItemsUseCase = new ListItemsUseCase(this.itemsRepository);\n const listItemsWithSearch = new ListItemsUseCaseWithSearch(\n this.searchRepository,\n baseListItemsUseCase\n );\n return new ListItemsUseCaseWithSorting(this.sortingRepository, listItemsWithSearch);\n };\n\n // List More Items UseCase\n const listMoreItemsUseCase = () => new ListMoreItemsUseCase(this.itemsRepository);\n\n // Delete Item UseCase\n const deleteItemUseCase = () => new DeleteItemUseCase(this.itemsRepository);\n\n // Restore Item UseCase\n const restoreItemUseCase = () => new RestoreItemUseCase(this.itemsRepository);\n\n // Get RestoredItem UseCase\n const getRestoredItemUseCase = () => new GetRestoredItemUseCase(this.itemsRepository);\n\n // Create controllers\n const listItems = new ListItemsController(listItemsUseCase);\n const listMoreItems = new ListMoreItemsController(listMoreItemsUseCase);\n const deleteItem = new DeleteItemController(deleteItemUseCase);\n const restoreItem = new RestoreItemController(restoreItemUseCase);\n const selectItems = new SelectItemsController(selectItemsUseCase);\n const sortItems = new SortItemsController(listItemsUseCase, sortItemsUseCase);\n const searchItems = new SearchItemsController(listItemsUseCase, searchItemsUseCase);\n const getRestoredItemById = new GetRestoredItemByIdController(getRestoredItemUseCase);\n\n return {\n listItems,\n listMoreItems,\n deleteItem,\n restoreItem,\n selectItems,\n sortItems,\n searchItems,\n getRestoredItemById\n };\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_controllers","require","_UseCases","TrashBinControllers","exports","itemsRepository","selectedRepository","sortingRepository","searchRepository","deleteBulkActionName","restoreBulkActionName","_classCallCheck2","default","_createClass2","key","value","getControllers","_this","selectItemsUseCase","SelectItemsUseCase","selectAllItemsUseCase","SelectAllItemsUseCase","unselectAllItemsUseCase","UnselectAllItemsUseCase","sortItemsUseCase","SortItemsUseCase","searchItemsUseCase","SearchItemsUseCase","listItemsUseCase","baseListItemsUseCase","ListItemsUseCase","listItemsWithSearch","ListItemsUseCaseWithSearch","ListItemsUseCaseWithSorting","listMoreItemsUseCase","ListMoreItemsUseCase","deleteItemUseCase","DeleteItemUseCase","restoreItemUseCase","RestoreItemUseCase","getRestoredItemUseCase","GetRestoredItemUseCase","bulkActionUseCase","BulkActionUseCase","listItems","ListItemsController","listMoreItems","ListMoreItemsController","deleteItem","DeleteItemController","restoreItem","RestoreItemController","selectItems","SelectItemsController","selectAllItems","SelectAllItemsController","unselectAllItems","UnselectAllItemsController","sortItems","SortItemsController","searchItems","SearchItemsController","getRestoredItemById","GetRestoredItemByIdController","restoreBulkAction","BulkActionsController","deleteBulkAction"],"sources":["TrashBinControllers.ts"],"sourcesContent":["import { ISortingRepository } from \"@webiny/app-utils\";\nimport { ISearchRepository, ISelectedItemsRepository, ITrashBinItemsRepository } from \"~/Domain\";\nimport {\n BulkActionsController,\n DeleteItemController,\n GetRestoredItemByIdController,\n ListItemsController,\n ListMoreItemsController,\n RestoreItemController,\n SearchItemsController,\n SelectAllItemsController,\n SelectItemsController,\n SortItemsController,\n UnselectAllItemsController\n} from \"~/Presentation/TrashBin/controllers\";\nimport {\n BulkActionUseCase,\n DeleteItemUseCase,\n GetRestoredItemUseCase,\n ListItemsUseCase,\n ListItemsUseCaseWithSearch,\n ListItemsUseCaseWithSorting,\n ListMoreItemsUseCase,\n RestoreItemUseCase,\n SearchItemsUseCase,\n SelectAllItemsUseCase,\n SelectItemsUseCase,\n SortItemsUseCase,\n UnselectAllItemsUseCase\n} from \"~/UseCases\";\n\nexport class TrashBinControllers {\n private readonly itemsRepository: ITrashBinItemsRepository;\n private readonly selectedRepository: ISelectedItemsRepository;\n private readonly sortingRepository: ISortingRepository;\n private readonly searchRepository: ISearchRepository;\n private readonly deleteBulkActionName: string;\n private readonly restoreBulkActionName: string;\n\n constructor(\n itemsRepository: ITrashBinItemsRepository,\n selectedRepository: ISelectedItemsRepository,\n sortingRepository: ISortingRepository,\n searchRepository: ISearchRepository,\n deleteBulkActionName: string,\n restoreBulkActionName: string\n ) {\n this.itemsRepository = itemsRepository;\n this.selectedRepository = selectedRepository;\n this.sortingRepository = sortingRepository;\n this.searchRepository = searchRepository;\n this.deleteBulkActionName = deleteBulkActionName;\n this.restoreBulkActionName = restoreBulkActionName;\n }\n\n getControllers() {\n // Select Items UseCase\n const selectItemsUseCase = () => new SelectItemsUseCase(this.selectedRepository);\n\n // Select All Items UseCase\n const selectAllItemsUseCase = () => new SelectAllItemsUseCase(this.selectedRepository);\n\n // Unselect All Items UseCase\n const unselectAllItemsUseCase = () => new UnselectAllItemsUseCase(this.selectedRepository);\n\n // Sort Items UseCase\n const sortItemsUseCase = () => new SortItemsUseCase(this.sortingRepository);\n\n // Search Items UseCase\n const searchItemsUseCase = () => new SearchItemsUseCase(this.searchRepository);\n\n // List Items UseCase\n const listItemsUseCase = () => {\n const baseListItemsUseCase = new ListItemsUseCase(this.itemsRepository);\n const listItemsWithSearch = new ListItemsUseCaseWithSearch(\n this.searchRepository,\n baseListItemsUseCase\n );\n return new ListItemsUseCaseWithSorting(this.sortingRepository, listItemsWithSearch);\n };\n\n // List More Items UseCase\n const listMoreItemsUseCase = () => new ListMoreItemsUseCase(this.itemsRepository);\n\n // Delete Item UseCase\n const deleteItemUseCase = () => new DeleteItemUseCase(this.itemsRepository);\n\n // Restore Item UseCase\n const restoreItemUseCase = () => new RestoreItemUseCase(this.itemsRepository);\n\n // Get RestoredItem UseCase\n const getRestoredItemUseCase = () => new GetRestoredItemUseCase(this.itemsRepository);\n\n // Bulk Action UseCase\n const bulkActionUseCase = () => new BulkActionUseCase(this.itemsRepository);\n\n // Create controllers\n const listItems = new ListItemsController(listItemsUseCase);\n const listMoreItems = new ListMoreItemsController(listMoreItemsUseCase);\n const deleteItem = new DeleteItemController(deleteItemUseCase);\n const restoreItem = new RestoreItemController(restoreItemUseCase);\n const selectItems = new SelectItemsController(selectItemsUseCase);\n const selectAllItems = new SelectAllItemsController(selectAllItemsUseCase);\n const unselectAllItems = new UnselectAllItemsController(unselectAllItemsUseCase);\n const sortItems = new SortItemsController(listItemsUseCase, sortItemsUseCase);\n const searchItems = new SearchItemsController(listItemsUseCase, searchItemsUseCase);\n const getRestoredItemById = new GetRestoredItemByIdController(getRestoredItemUseCase);\n const restoreBulkAction = new BulkActionsController(\n bulkActionUseCase,\n this.restoreBulkActionName\n );\n const deleteBulkAction = new BulkActionsController(\n bulkActionUseCase,\n this.deleteBulkActionName\n );\n\n return {\n listItems,\n listMoreItems,\n deleteItem,\n restoreItem,\n restoreBulkAction,\n deleteBulkAction,\n selectItems,\n selectAllItems,\n unselectAllItems,\n sortItems,\n searchItems,\n getRestoredItemById\n };\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -13,6 +13,8 @@ export declare class TrashBinPresenter {
13
13
  items: import("../../Domain").TrashBinItemDTO[];
14
14
  restoredItems: import("../../Domain").TrashBinItemDTO[];
15
15
  selectedItems: import("../../Domain").TrashBinItemDTO[];
16
+ allowSelectAll: boolean;
17
+ isSelectedAll: boolean;
16
18
  meta: import("@webiny/app-utils").MetaDTO;
17
19
  sorting: import("@webiny/app-utils").ColumnSorting[];
18
20
  loading: Record<string, any>;
@@ -27,4 +29,5 @@ export declare class TrashBinPresenter {
27
29
  private getIsEmptyView;
28
30
  private getIsSearchView;
29
31
  private getRetentionPeriod;
32
+ private getAllowSelectAll;
30
33
  }
@@ -30,6 +30,8 @@ var TrashBinPresenter = exports.TrashBinPresenter = /*#__PURE__*/function () {
30
30
  items: this.mapItemsToDTOs(this.itemsRepository.getItems()),
31
31
  restoredItems: this.mapItemsToDTOs(this.itemsRepository.getRestoredItems()),
32
32
  selectedItems: this.mapItemsToDTOs(this.selectedRepository.getSelectedItems()),
33
+ allowSelectAll: this.getAllowSelectAll(),
34
+ isSelectedAll: this.selectedRepository.getSelectedAllItems(),
33
35
  meta: _appUtils.MetaMapper.toDto(this.itemsRepository.getMeta()),
34
36
  sorting: this.sortingRepository.get().map(function (sort) {
35
37
  return _appUtils.SortingMapper.fromDTOtoColumn(sort);
@@ -74,6 +76,11 @@ var TrashBinPresenter = exports.TrashBinPresenter = /*#__PURE__*/function () {
74
76
  }
75
77
  return "".concat(this.retentionPeriod, " days");
76
78
  }
79
+ }, {
80
+ key: "getAllowSelectAll",
81
+ value: function getAllowSelectAll() {
82
+ return this.itemsRepository.getMeta().hasMoreItems && !!this.itemsRepository.getItems().length && this.selectedRepository.getSelectedItems().length === this.itemsRepository.getItems().length;
83
+ }
77
84
  }]);
78
85
  }();
79
86