cat-documents-ng 1.0.4 → 1.0.6

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 (210) hide show
  1. package/ng-package.json +10 -0
  2. package/package.json +5 -11
  3. package/src/Shared/components/confirmation-dialog/confirmation-dialog.component.html +3 -0
  4. package/src/Shared/components/confirmation-dialog/confirmation-dialog.component.scss +13 -0
  5. package/src/Shared/components/confirmation-dialog/confirmation-dialog.component.spec.ts +70 -0
  6. package/src/Shared/components/confirmation-dialog/confirmation-dialog.component.ts +133 -0
  7. package/src/Shared/components/table-primary/table-primary.component.html +66 -0
  8. package/src/Shared/components/table-primary/table-primary.component.scss +227 -0
  9. package/src/Shared/components/table-primary/table-primary.component.spec.ts +23 -0
  10. package/src/Shared/components/table-primary/table-primary.component.ts +143 -0
  11. package/src/Shared/components/table-primary/table-primary.model.ts +21 -0
  12. package/src/Shared/constant/ERROR.ts +55 -0
  13. package/src/Shared/constant/PERMISSIONS.ts +17 -0
  14. package/src/Shared/constant/SHARED.ts +936 -0
  15. package/{Shared/constant/URLS.d.ts → src/Shared/constant/URLS.ts} +31 -25
  16. package/src/Shared/services/app-config.service.spec.ts +19 -0
  17. package/src/Shared/services/app-config.service.ts +73 -0
  18. package/{Shared/services/global-error.handler.d.ts → src/Shared/services/global-error.handler.ts} +11 -9
  19. package/src/Shared/services/session.service.spec.ts +16 -0
  20. package/src/Shared/services/session.service.ts +76 -0
  21. package/src/Shared/shared.module.ts +25 -0
  22. package/src/lib/document/components/csv-viewer/csv-viewer.component.ts +1 -0
  23. package/src/lib/document/components/document-actions/document-actions.component.html +59 -0
  24. package/src/lib/document/components/document-actions/document-actions.component.scss +362 -0
  25. package/src/lib/document/components/document-actions/document-actions.component.spec.ts +297 -0
  26. package/src/lib/document/components/document-actions/document-actions.component.ts +163 -0
  27. package/src/lib/document/components/document-container/document-container.component.html +36 -0
  28. package/src/lib/document/components/document-container/document-container.component.scss +144 -0
  29. package/src/lib/document/components/document-container/document-container.component.spec.ts +110 -0
  30. package/src/lib/document/components/document-container/document-container.component.ts +363 -0
  31. package/src/lib/document/components/document-content-viewer/document-content-viewer.component.html +332 -0
  32. package/src/lib/document/components/document-content-viewer/document-content-viewer.component.scss +1877 -0
  33. package/src/lib/document/components/document-content-viewer/document-content-viewer.component.spec.ts +258 -0
  34. package/src/lib/document/components/document-content-viewer/document-content-viewer.component.ts +664 -0
  35. package/src/lib/document/components/document-history/document-history.component.html +96 -0
  36. package/src/lib/document/components/document-history/document-history.component.scss +392 -0
  37. package/src/lib/document/components/document-history/document-history.component.spec.ts +93 -0
  38. package/src/lib/document/components/document-history/document-history.component.ts +373 -0
  39. package/src/lib/document/components/document-list/document-list.component.html +46 -0
  40. package/src/lib/document/components/document-list/document-list.component.scss +513 -0
  41. package/src/lib/document/components/document-list/document-list.component.spec.ts +486 -0
  42. package/src/lib/document/components/document-list/document-list.component.ts +682 -0
  43. package/src/lib/document/components/document-list-item/document-list-item.component.html +36 -0
  44. package/src/lib/document/components/document-list-item/document-list-item.component.scss +34 -0
  45. package/src/lib/document/components/document-list-item/document-list-item.component.spec.ts +75 -0
  46. package/src/lib/document/components/document-list-item/document-list-item.component.ts +40 -0
  47. package/src/lib/document/components/document-search/document-search.component.html +64 -0
  48. package/src/lib/document/components/document-search/document-search.component.scss +206 -0
  49. package/src/lib/document/components/document-search/document-search.component.spec.ts +82 -0
  50. package/src/lib/document/components/document-search/document-search.component.ts +163 -0
  51. package/src/lib/document/components/document-status/document-status.component.html +31 -0
  52. package/src/lib/document/components/document-status/document-status.component.scss +192 -0
  53. package/src/lib/document/components/document-status/document-status.component.spec.ts +23 -0
  54. package/src/lib/document/components/document-status/document-status.component.ts +87 -0
  55. package/src/lib/document/components/document-upload/document-upload.component.html +160 -0
  56. package/src/lib/document/components/document-upload/document-upload.component.scss +235 -0
  57. package/src/lib/document/components/document-upload/document-upload.component.spec.ts +95 -0
  58. package/src/lib/document/components/document-upload/document-upload.component.ts +668 -0
  59. package/src/lib/document/components/document-viewer/document-viewer.component.html +50 -0
  60. package/src/lib/document/components/document-viewer/document-viewer.component.scss +187 -0
  61. package/src/lib/document/components/document-viewer/document-viewer.component.spec.ts +79 -0
  62. package/src/lib/document/components/document-viewer/document-viewer.component.ts +261 -0
  63. package/src/lib/document/components/document-zoom-controls/document-zoom-controls.component.html +48 -0
  64. package/src/lib/document/components/document-zoom-controls/document-zoom-controls.component.scss +320 -0
  65. package/src/lib/document/components/document-zoom-controls/document-zoom-controls.component.spec.ts +59 -0
  66. package/src/lib/document/components/document-zoom-controls/document-zoom-controls.component.ts +150 -0
  67. package/src/lib/document/components/documents-menu/documents-menu.component.html +44 -0
  68. package/src/lib/document/components/documents-menu/documents-menu.component.scss +363 -0
  69. package/src/lib/document/components/documents-menu/documents-menu.component.spec.ts +23 -0
  70. package/src/lib/document/components/documents-menu/documents-menu.component.ts +316 -0
  71. package/src/lib/document/components/folder-block/folder-block.component.html +46 -0
  72. package/src/lib/document/components/folder-block/folder-block.component.scss +9 -0
  73. package/src/lib/document/components/folder-block/folder-block.component.spec.ts +70 -0
  74. package/{lib/document/components/folder-block/folder-block.component.d.ts → src/lib/document/components/folder-block/folder-block.component.ts} +28 -12
  75. package/src/lib/document/components/folder-container/folder-container.component.html +56 -0
  76. package/src/lib/document/components/folder-container/folder-container.component.scss +20 -0
  77. package/src/lib/document/components/folder-container/folder-container.component.spec.ts +27 -0
  78. package/src/lib/document/components/folder-container/folder-container.component.ts +328 -0
  79. package/src/lib/document/components/linked-document/linked-document.component.html +23 -0
  80. package/src/lib/document/components/linked-document/linked-document.component.scss +10 -0
  81. package/src/lib/document/components/linked-document/linked-document.component.spec.ts +61 -0
  82. package/src/lib/document/components/linked-document/linked-document.component.ts +49 -0
  83. package/src/lib/document/components/request-document/request-document.component.html +86 -0
  84. package/src/lib/document/components/request-document/request-document.component.scss +16 -0
  85. package/src/lib/document/components/request-document/request-document.component.ts +278 -0
  86. package/src/lib/document/components/sidebar/sidebar.component.html +75 -0
  87. package/src/lib/document/components/sidebar/sidebar.component.scss +157 -0
  88. package/src/lib/document/components/sidebar/sidebar.component.spec.ts +114 -0
  89. package/src/lib/document/components/sidebar/sidebar.component.ts +223 -0
  90. package/src/lib/document/components/user-list/user-list.component.html +33 -0
  91. package/src/lib/document/components/user-list/user-list.component.scss +118 -0
  92. package/src/lib/document/components/user-list/user-list.component.spec.ts +23 -0
  93. package/src/lib/document/components/user-list/user-list.component.ts +181 -0
  94. package/src/lib/document/constant/DOCUMENT_HISTORY.ts +52 -0
  95. package/src/lib/document/directives/document.directive.ts +32 -0
  96. package/src/lib/document/directives/permission.directive.spec.ts +0 -0
  97. package/src/lib/document/directives/permission.directive.ts +72 -0
  98. package/src/lib/document/document.module.ts +351 -0
  99. package/{lib/document/models/document-alert.model.d.ts → src/lib/document/models/document-alert.model.ts} +11 -4
  100. package/src/lib/document/models/document-category.model.ts +30 -0
  101. package/src/lib/document/models/document-history.model.ts +109 -0
  102. package/src/lib/document/models/document-list-response.model.ts +37 -0
  103. package/src/lib/document/models/document-type.model.ts +44 -0
  104. package/src/lib/document/models/document.model.ts +53 -0
  105. package/{lib/document/models/folder.model.d.ts → src/lib/document/models/folder.model.ts} +10 -4
  106. package/src/lib/document/models/status-data.model.ts +31 -0
  107. package/src/lib/document/models/uploaded-file-response.model.ts +7 -0
  108. package/src/lib/document/models/user-list.model.ts +10 -0
  109. package/src/lib/document/services/csv-parser.service.spec.ts +97 -0
  110. package/src/lib/document/services/csv-parser.service.ts +303 -0
  111. package/src/lib/document/services/document-actions.service.ts +125 -0
  112. package/src/lib/document/services/document-content-type.service.ts +193 -0
  113. package/src/lib/document/services/document-history-style.service.ts +138 -0
  114. package/src/lib/document/services/document-history.service.ts +129 -0
  115. package/src/lib/document/services/document-http.service.spec.ts +119 -0
  116. package/src/lib/document/services/document-http.service.ts +497 -0
  117. package/src/lib/document/services/document-list.service.ts +195 -0
  118. package/src/lib/document/services/document-menu.service.ts +277 -0
  119. package/src/lib/document/services/document-scroll.service.ts +138 -0
  120. package/src/lib/document/services/document-severity.service.ts +98 -0
  121. package/src/lib/document/services/document-table-builder.service.ts +82 -0
  122. package/src/lib/document/services/document-upload-business.service.ts +326 -0
  123. package/src/lib/document/services/document-upload-data.service.ts +82 -0
  124. package/src/lib/document/services/document-upload-form.service.ts +149 -0
  125. package/src/lib/document/services/document-upload.service.spec.ts +99 -0
  126. package/src/lib/document/services/document-upload.service.ts +209 -0
  127. package/src/lib/document/services/document-viewer.service.ts +279 -0
  128. package/src/lib/document/services/document-zoom.service.spec.ts +56 -0
  129. package/src/lib/document/services/document-zoom.service.ts +164 -0
  130. package/src/lib/document/services/document.service.ts +356 -0
  131. package/src/lib/document/services/eml-parser.service.ts +444 -0
  132. package/src/lib/document/services/excel-parser.service.spec.ts +66 -0
  133. package/src/lib/document/services/excel-parser.service.ts +483 -0
  134. package/src/lib/document/services/file-format.service.spec.ts +16 -0
  135. package/src/lib/document/services/file-format.service.ts +63 -0
  136. package/src/lib/document/services/status-calculator.service.ts +44 -0
  137. package/src/lib/document/services/user-list.service.ts +77 -0
  138. package/src/lib/document/state/document.query.ts +378 -0
  139. package/{lib/document/state/document.service.d.ts → src/lib/document/state/document.service.ts} +46 -15
  140. package/src/lib/document/state/document.state.ts +100 -0
  141. package/src/lib/document/state/document.store.ts +200 -0
  142. package/{public-api.d.ts → src/public-api.ts} +4 -0
  143. package/tsconfig.lib.json +15 -0
  144. package/tsconfig.lib.prod.json +11 -0
  145. package/tsconfig.spec.json +15 -0
  146. package/Shared/components/confirmation-dialog/confirmation-dialog.component.d.ts +0 -44
  147. package/Shared/components/table-primary/table-primary.component.d.ts +0 -31
  148. package/Shared/components/table-primary/table-primary.model.d.ts +0 -19
  149. package/Shared/constant/ERROR.d.ts +0 -52
  150. package/Shared/constant/SHARED.d.ts +0 -546
  151. package/Shared/services/app-config.service.d.ts +0 -51
  152. package/Shared/services/session.service.d.ts +0 -46
  153. package/Shared/shared.module.d.ts +0 -14
  154. package/fesm2022/cat-documents-ng.mjs +0 -11392
  155. package/fesm2022/cat-documents-ng.mjs.map +0 -1
  156. package/index.d.ts +0 -5
  157. package/lib/document/components/document-actions/document-actions.component.d.ts +0 -78
  158. package/lib/document/components/document-container/document-container.component.d.ts +0 -162
  159. package/lib/document/components/document-content-viewer/document-content-viewer.component.d.ts +0 -291
  160. package/lib/document/components/document-history/document-history.component.d.ts +0 -160
  161. package/lib/document/components/document-list/document-list.component.d.ts +0 -299
  162. package/lib/document/components/document-list-item/document-list-item.component.d.ts +0 -28
  163. package/lib/document/components/document-search/document-search.component.d.ts +0 -77
  164. package/lib/document/components/document-status/document-status.component.d.ts +0 -24
  165. package/lib/document/components/document-upload/document-upload.component.d.ts +0 -321
  166. package/lib/document/components/document-viewer/document-viewer.component.d.ts +0 -137
  167. package/lib/document/components/document-zoom-controls/document-zoom-controls.component.d.ts +0 -33
  168. package/lib/document/components/documents-menu/documents-menu.component.d.ts +0 -110
  169. package/lib/document/components/folder-container/folder-container.component.d.ts +0 -162
  170. package/lib/document/components/linked-document/linked-document.component.d.ts +0 -39
  171. package/lib/document/components/request-document/request-document.component.d.ts +0 -69
  172. package/lib/document/components/sidebar/sidebar.component.d.ts +0 -109
  173. package/lib/document/components/user-list/user-list.component.d.ts +0 -34
  174. package/lib/document/constant/DOCUMENT_HISTORY.d.ts +0 -41
  175. package/lib/document/directives/document.directive.d.ts +0 -20
  176. package/lib/document/directives/permission.directive.d.ts +0 -38
  177. package/lib/document/document.module.d.ts +0 -60
  178. package/lib/document/models/document-category.model.d.ts +0 -24
  179. package/lib/document/models/document-history.model.d.ts +0 -94
  180. package/lib/document/models/document-list-response.model.d.ts +0 -33
  181. package/lib/document/models/document-type.model.d.ts +0 -37
  182. package/lib/document/models/document.model.d.ts +0 -44
  183. package/lib/document/models/status-data.model.d.ts +0 -27
  184. package/lib/document/models/uploaded-file-response.model.d.ts +0 -7
  185. package/lib/document/models/user-list.model.d.ts +0 -8
  186. package/lib/document/services/csv-parser.service.d.ts +0 -88
  187. package/lib/document/services/document-actions.service.d.ts +0 -48
  188. package/lib/document/services/document-content-type.service.d.ts +0 -85
  189. package/lib/document/services/document-history-style.service.d.ts +0 -34
  190. package/lib/document/services/document-history.service.d.ts +0 -42
  191. package/lib/document/services/document-http.service.d.ts +0 -179
  192. package/lib/document/services/document-list.service.d.ts +0 -74
  193. package/lib/document/services/document-menu.service.d.ts +0 -122
  194. package/lib/document/services/document-scroll.service.d.ts +0 -55
  195. package/lib/document/services/document-table-builder.service.d.ts +0 -38
  196. package/lib/document/services/document-upload-business.service.d.ts +0 -107
  197. package/lib/document/services/document-upload-data.service.d.ts +0 -40
  198. package/lib/document/services/document-upload-form.service.d.ts +0 -41
  199. package/lib/document/services/document-upload.service.d.ts +0 -99
  200. package/lib/document/services/document-viewer.service.d.ts +0 -97
  201. package/lib/document/services/document-zoom.service.d.ts +0 -81
  202. package/lib/document/services/document.service.d.ts +0 -161
  203. package/lib/document/services/eml-parser.service.d.ts +0 -116
  204. package/lib/document/services/excel-parser.service.d.ts +0 -169
  205. package/lib/document/services/file-format.service.d.ts +0 -34
  206. package/lib/document/services/status-calculator.service.d.ts +0 -20
  207. package/lib/document/services/user-list.service.d.ts +0 -29
  208. package/lib/document/state/document.query.d.ts +0 -243
  209. package/lib/document/state/document.state.d.ts +0 -61
  210. package/lib/document/state/document.store.d.ts +0 -56
@@ -0,0 +1,235 @@
1
+ .flex {
2
+ display: flex;
3
+ }
4
+ .items-center {
5
+ align-items: center;
6
+ }
7
+ .justify-center {
8
+ justify-content: center;
9
+ }
10
+ .flex-col {
11
+ flex-direction: column;
12
+ }
13
+ .text-muted-color {
14
+ color: #6c757d; // Adjust to match your theme
15
+ }
16
+ .p-fileupload-buttonbar {
17
+ padding: 0px;
18
+ }
19
+ .p-fileupload-content {
20
+ background-color: #0f8bfd1a;
21
+ }
22
+ .p-fileupload {
23
+ .p-fileupload-content {
24
+ padding: 1rem 1rem;
25
+ }
26
+
27
+ }
28
+ .docHeader{
29
+ .p-button-icon{
30
+ padding: 0.5rem;
31
+ }
32
+ }
33
+
34
+ .document-upload-container {
35
+ padding: 1rem;
36
+ max-height: 90vh;
37
+ }
38
+
39
+ .assignment-section,
40
+ .applicant-section,
41
+ .category-section,
42
+ .document-type-section,
43
+ .file-upload-section {
44
+ margin-bottom: 1.5rem;
45
+ }
46
+
47
+ .assignment-section h4,
48
+ .applicant-section h4,
49
+ .category-section h4,
50
+ .document-type-section h4,
51
+ .file-upload-section h4 {
52
+ margin: 0 0 0.75rem 0;
53
+ font-size: 1rem;
54
+ font-weight: 600;
55
+ color: #212529;
56
+ }
57
+
58
+ .radio-group {
59
+ display: flex;
60
+ gap: 0.75rem;
61
+ }
62
+
63
+ .radio-item {
64
+ display: flex;
65
+ align-items: center;
66
+ gap: 0.5rem;
67
+ cursor: pointer;
68
+ transition: all 0.2s ease;
69
+
70
+ // Style for selected state - just change text color, no box styling
71
+ &:has(.p-radiobutton-box.p-highlight) {
72
+ .radio-label {
73
+ color: #0F8BFD;
74
+ font-weight: 600;
75
+ }
76
+ }
77
+ }
78
+
79
+ .radio-label {
80
+ font-size: 0.9rem;
81
+ color: #495057;
82
+ cursor: pointer;
83
+ user-select: none;
84
+ transition: color 0.2s ease;
85
+ }
86
+
87
+ // PrimeNG Dropdown styling
88
+ ::ng-deep {
89
+ .p-dropdown {
90
+ width: 100%;
91
+
92
+ .p-dropdown-label {
93
+ font-size: 0.9rem;
94
+ color: #495057;
95
+ }
96
+
97
+ .p-dropdown-trigger {
98
+ color: #6c757d;
99
+ }
100
+ }
101
+
102
+ .p-dropdown:not(.p-disabled):hover {
103
+ border-color: #0F8BFD;
104
+ }
105
+
106
+ .p-dropdown:not(.p-disabled).p-focus {
107
+ border-color: #0F8BFD;
108
+ box-shadow: 0 0 0 2px rgba(15, 139, 253, 0.2);
109
+ }
110
+ }
111
+
112
+ // PrimeNG RadioButton styling
113
+ ::ng-deep {
114
+ .p-radiobutton {
115
+ .p-radiobutton-box {
116
+ border-color: #ced4da;
117
+ border-radius: 4px;
118
+ width: 18px;
119
+ height: 18px;
120
+
121
+ &:hover {
122
+ border-color: #0F8BFD;
123
+ }
124
+
125
+ &.p-highlight {
126
+ border-color: #0F8BFD;
127
+ background-color: transparent; // Remove blue background
128
+ }
129
+ }
130
+
131
+ .p-radiobutton-icon {
132
+ background-color: #0F8BFD; // Keep the blue dot for selected state
133
+ width: 8px;
134
+ height: 8px;
135
+ border-radius: 2px;
136
+ }
137
+ }
138
+ }
139
+
140
+ // Applicant list styling improvements for grid-like layout
141
+ .applicant-section {
142
+ .grid {
143
+ margin: 0;
144
+ padding: 0;
145
+ }
146
+
147
+ .applicant-item {
148
+ display: flex;
149
+ align-items: center;
150
+ gap: 0.75rem;
151
+ border-radius: 0.5rem;
152
+ background-color: #ffffff;
153
+ transition: all 0.2s ease;
154
+ cursor: pointer;
155
+ margin-bottom: 0.75rem;
156
+
157
+ // Style for selected state - just change text color, no box styling
158
+ &:has(.p-radiobutton-box.p-highlight) {
159
+ .applicant-label {
160
+ color: #0F8BFD;
161
+ font-weight: 600;
162
+ }
163
+ }
164
+ }
165
+
166
+ .applicant-label {
167
+ font-size: 0.95rem;
168
+ color: #495057;
169
+ cursor: pointer;
170
+ user-select: none;
171
+ flex: 1;
172
+ font-weight: 500;
173
+ margin: 0;
174
+ transition: color 0.2s ease;
175
+ }
176
+ }
177
+
178
+ // Responsive grid adjustments
179
+ @media (max-width: 768px) {
180
+ .applicant-section {
181
+ .applicant-item {
182
+ margin-bottom: 0.5rem;
183
+ padding: 0.75rem;
184
+ min-height: 50px;
185
+ }
186
+
187
+ .applicant-label {
188
+ font-size: 0.9rem;
189
+ }
190
+ }
191
+
192
+ .document-upload-container {
193
+ padding: 0.75rem;
194
+ }
195
+
196
+ .assignment-section,
197
+ .applicant-section,
198
+ .category-section,
199
+ .document-type-section,
200
+ .file-upload-section {
201
+ margin-bottom: 1rem;
202
+ }
203
+ }
204
+ // ... existing code ...
205
+
206
+ // Fix dropdown width issues
207
+ .category-section,
208
+ .document-type-section {
209
+ .p-dropdown {
210
+ width: 100% !important;
211
+ min-width: 100% !important;
212
+ }
213
+
214
+ // Ensure the dropdown container takes full width
215
+ .p-dropdown-panel {
216
+ width: 100% !important;
217
+ }
218
+ }
219
+
220
+ // Alternative approach - target the dropdown wrapper
221
+ :host ::ng-deep {
222
+ .p-dropdown {
223
+ width: 100% !important;
224
+ }
225
+
226
+ .p-dropdown-panel {
227
+ width: 100% !important;
228
+ }
229
+ }
230
+
231
+ // ... existing code ...
232
+ // Remove the old applicant-list styling since we're using grid now
233
+ .applicant-list {
234
+ display: none;
235
+ }
@@ -0,0 +1,95 @@
1
+ import { ComponentFixture, TestBed } from '@angular/core/testing';
2
+ import { DocumentUploadComponent } from './document-upload.component';
3
+ import { FileUploadModule } from 'primeng/fileupload';
4
+ import { HttpClientTestingModule } from '@angular/common/http/testing';
5
+ import { MessageService, PrimeNGConfig } from 'primeng/api';
6
+ import { ChangeDetectorRef } from '@angular/core';
7
+ import { FileFormatService } from '../../services/file-format.service';
8
+ import { DocumentService } from '../../state/document.service';
9
+ import { DocumentUploadService } from '../../services/document-upload.service';
10
+
11
+ describe('DocumentUploadComponent', () => {
12
+ let component: DocumentUploadComponent;
13
+ let fixture: ComponentFixture<DocumentUploadComponent>;
14
+ let mockFileFormatService: jasmine.SpyObj<FileFormatService>;
15
+ let mockDocumentService: jasmine.SpyObj<DocumentService>;
16
+ let mockDocumentUploadService: jasmine.SpyObj<DocumentUploadService>;
17
+
18
+ beforeEach(async () => {
19
+ mockFileFormatService = jasmine.createSpyObj('FileFormatService', ['formatFileSize']);
20
+ mockDocumentService = jasmine.createSpyObj('DocumentService', ['uploadDocument']);
21
+ mockDocumentUploadService = jasmine.createSpyObj('DocumentUploadService', ['getUploadFileData']);
22
+
23
+ await TestBed.configureTestingModule({
24
+ declarations: [DocumentUploadComponent],
25
+ imports: [FileUploadModule, HttpClientTestingModule],
26
+ providers: [
27
+ MessageService,
28
+ PrimeNGConfig,
29
+ ChangeDetectorRef,
30
+ { provide: FileFormatService, useValue: mockFileFormatService },
31
+ { provide: DocumentService, useValue: mockDocumentService },
32
+ { provide: DocumentUploadService, useValue: mockDocumentUploadService },
33
+ ],
34
+ }).compileComponents();
35
+
36
+ fixture = TestBed.createComponent(DocumentUploadComponent);
37
+ component = fixture.componentInstance;
38
+ fixture.detectChanges();
39
+ });
40
+
41
+ it('should create', () => {
42
+ expect(component).toBeTruthy();
43
+ });
44
+
45
+ it('should trigger file upload dialog when triggerFileUpload is called', () => {
46
+ spyOn(component.fileUploader, 'choose');
47
+ component.triggerFileUpload();
48
+ expect(component.fileUploader.choose).toHaveBeenCalled();
49
+ });
50
+
51
+ it('should handle file selection and upload', () => {
52
+ const mockFile = new File(['content'], 'test.pdf', { type: 'application/pdf' });
53
+ const event = { currentFiles: [mockFile] };
54
+ mockFileFormatService.formatFileSize.and.returnValue('10 KB');
55
+ component.onSelectedFiles(event);
56
+ expect(mockDocumentUploadService.getUploadFileData).toHaveBeenCalledWith(mockFile, component.contextId);
57
+ expect(component.uploadedFiles.length).toBe(1);
58
+ expect(component.uploadedFiles[0].file).toBe(mockFile);
59
+ expect(component.uploadedFiles[0].formattedSize).toBe('10 KB');
60
+ expect(component.uploadedFiles[0].progress).toBe(100);
61
+ });
62
+
63
+ it('should remove a file from the uploaded files list', () => {
64
+ const mockFile = new File(['content'], 'test.pdf', { type: 'application/pdf' });
65
+ component.uploadedFiles = [
66
+ { file: mockFile, formattedSize: '10 KB', progress: 100, uploadResponse: null, url: undefined, contentType: undefined },
67
+ ];
68
+ const fileProgressSpy = spyOn(component.fileProgress, 'delete');
69
+ component.handleDocumentRemove(mockFile, 0);
70
+ expect(component.uploadedFiles.length).toBe(0);
71
+ expect(fileProgressSpy).toHaveBeenCalledWith(mockFile);
72
+ });
73
+
74
+ it('should calculate and return file progress', () => {
75
+ const mockFile = new File(['content'], 'test.pdf', { type: 'application/pdf' });
76
+ component.fileProgress.set(mockFile, 75);
77
+ const progress = component.getProgress(mockFile);
78
+ expect(progress).toBe(75);
79
+ });
80
+
81
+ it('should format file size correctly', () => {
82
+ mockFileFormatService.formatFileSize.and.returnValue('10 KB');
83
+ component.formatSize(10240);
84
+ expect(component.fileSize).toBe('10 KB');
85
+ expect(mockFileFormatService.formatFileSize).toHaveBeenCalledWith(10240, jasmine.any(PrimeNGConfig));
86
+ });
87
+
88
+ it('should clear files after selection', () => {
89
+ spyOn(component.fileUploader, 'clear');
90
+ const mockFile = new File(['content'], 'test.pdf', { type: 'application/pdf' });
91
+ const event = { currentFiles: [mockFile] };
92
+ component.onSelectedFiles(event);
93
+ expect(component.fileUploader.clear).toHaveBeenCalled();
94
+ });
95
+ });