asset_grid_data_structure_test.dart 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. import 'package:flutter_test/flutter_test.dart';
  2. import 'package:immich_mobile/modules/home/ui/asset_grid/asset_grid_data_structure.dart';
  3. import 'package:immich_mobile/shared/models/asset.dart';
  4. void main() {
  5. final List<Asset> testAssets = [];
  6. for (int i = 0; i < 150; i++) {
  7. int month = i ~/ 31;
  8. int day = (i % 31).toInt();
  9. DateTime date = DateTime(2022, month, day);
  10. testAssets.add(
  11. Asset(
  12. checksum: "",
  13. localId: '$i',
  14. ownerId: 1,
  15. fileCreatedAt: date,
  16. fileModifiedAt: date,
  17. updatedAt: date,
  18. durationInSeconds: 0,
  19. type: AssetType.image,
  20. fileName: '',
  21. isFavorite: false,
  22. isArchived: false,
  23. thumbhash: null,
  24. ),
  25. );
  26. }
  27. final List<Asset> assets = [];
  28. assets.addAll(
  29. testAssets.sublist(0, 5).map((e) {
  30. e.fileCreatedAt = DateTime(2022, 1, 5);
  31. return e;
  32. }).toList(),
  33. );
  34. assets.addAll(
  35. testAssets.sublist(5, 10).map((e) {
  36. e.fileCreatedAt = DateTime(2022, 1, 10);
  37. return e;
  38. }).toList(),
  39. );
  40. assets.addAll(
  41. testAssets.sublist(10, 15).map((e) {
  42. e.fileCreatedAt = DateTime(2022, 2, 17);
  43. return e;
  44. }).toList(),
  45. );
  46. assets.addAll(
  47. testAssets.sublist(15, 30).map((e) {
  48. e.fileCreatedAt = DateTime(2022, 10, 15);
  49. return e;
  50. }).toList(),
  51. );
  52. group('Test grouped', () {
  53. test('test grouped check months', () async {
  54. final renderList = await RenderList.fromAssets(
  55. assets,
  56. GroupAssetsBy.day,
  57. );
  58. // Oct
  59. // Day 1
  60. // 15 Assets => 5 Rows
  61. // Feb
  62. // Day 1
  63. // 5 Assets => 2 Rows
  64. // Jan
  65. // Day 2
  66. // 5 Assets => 2 Rows
  67. // Day 1
  68. // 5 Assets => 2 Rows
  69. expect(renderList.elements.length, 4);
  70. expect(
  71. renderList.elements[0].type,
  72. RenderAssetGridElementType.monthTitle,
  73. );
  74. expect(renderList.elements[0].date.month, 1);
  75. expect(
  76. renderList.elements[1].type,
  77. RenderAssetGridElementType.groupDividerTitle,
  78. );
  79. expect(renderList.elements[1].date.month, 1);
  80. expect(
  81. renderList.elements[2].type,
  82. RenderAssetGridElementType.monthTitle,
  83. );
  84. expect(renderList.elements[2].date.month, 2);
  85. expect(
  86. renderList.elements[3].type,
  87. RenderAssetGridElementType.monthTitle,
  88. );
  89. expect(renderList.elements[3].date.month, 10);
  90. });
  91. test('test grouped check types', () async {
  92. final renderList = await RenderList.fromAssets(
  93. assets,
  94. GroupAssetsBy.day,
  95. );
  96. // Oct
  97. // Day 1
  98. // 15 Assets => 3 Rows
  99. // Feb
  100. // Day 1
  101. // 5 Assets => 1 Row
  102. // Jan
  103. // Day 2
  104. // 5 Assets => 1 Row
  105. // Day 1
  106. // 5 Assets => 1 Row
  107. final types = [
  108. RenderAssetGridElementType.monthTitle,
  109. RenderAssetGridElementType.groupDividerTitle,
  110. RenderAssetGridElementType.monthTitle,
  111. RenderAssetGridElementType.monthTitle,
  112. ];
  113. expect(renderList.elements.length, types.length);
  114. for (int i = 0; i < renderList.elements.length; i++) {
  115. expect(renderList.elements[i].type, types[i]);
  116. }
  117. });
  118. });
  119. }