asset_grid_data_structure_test.dart 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  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. deviceAssetId: '$i',
  13. deviceId: '',
  14. ownerId: '',
  15. createdAt: date,
  16. modifiedAt: date,
  17. durationInSeconds: 0,
  18. fileName: '',
  19. ),
  20. );
  21. }
  22. final Map<String, List<Asset>> groups = {
  23. '2022-01-05': testAssets.sublist(0, 5).map((e) {
  24. e.createdAt = DateTime(2022, 1, 5);
  25. return e;
  26. }).toList(),
  27. '2022-01-10': testAssets.sublist(5, 10).map((e) {
  28. e.createdAt = DateTime(2022, 1, 10);
  29. return e;
  30. }).toList(),
  31. '2022-02-17': testAssets.sublist(10, 15).map((e) {
  32. e.createdAt = DateTime(2022, 2, 17);
  33. return e;
  34. }).toList(),
  35. '2022-10-15': testAssets.sublist(15, 30).map((e) {
  36. e.createdAt = DateTime(2022, 10, 15);
  37. return e;
  38. }).toList()
  39. };
  40. group('Test grouped', () {
  41. test('test grouped check months', () async {
  42. final renderList = await RenderList.fromAssetGroups(groups, 3);
  43. // Jan
  44. // Day 1
  45. // 5 Assets => 2 Rows
  46. // Day 2
  47. // 5 Assets => 2 Rows
  48. // Feb
  49. // Day 1
  50. // 5 Assets => 2 Rows
  51. // Oct
  52. // Day 1
  53. // 15 Assets => 5 Rows
  54. expect(renderList.elements.length, 18);
  55. expect(
  56. renderList.elements[0].type,
  57. RenderAssetGridElementType.monthTitle,
  58. );
  59. expect(renderList.elements[0].date.month, 1);
  60. expect(
  61. renderList.elements[7].type,
  62. RenderAssetGridElementType.monthTitle,
  63. );
  64. expect(renderList.elements[7].date.month, 2);
  65. expect(
  66. renderList.elements[11].type,
  67. RenderAssetGridElementType.monthTitle,
  68. );
  69. expect(renderList.elements[11].date.month, 10);
  70. });
  71. test('test grouped check types', () async {
  72. final renderList = await RenderList.fromAssetGroups(groups, 5);
  73. // Jan
  74. // Day 1
  75. // 5 Assets
  76. // Day 2
  77. // 5 Assets
  78. // Feb
  79. // Day 1
  80. // 5 Assets
  81. // Oct
  82. // Day 1
  83. // 15 Assets => 3 Rows
  84. final types = [
  85. RenderAssetGridElementType.monthTitle,
  86. RenderAssetGridElementType.dayTitle,
  87. RenderAssetGridElementType.assetRow,
  88. RenderAssetGridElementType.dayTitle,
  89. RenderAssetGridElementType.assetRow,
  90. RenderAssetGridElementType.monthTitle,
  91. RenderAssetGridElementType.dayTitle,
  92. RenderAssetGridElementType.assetRow,
  93. RenderAssetGridElementType.monthTitle,
  94. RenderAssetGridElementType.dayTitle,
  95. RenderAssetGridElementType.assetRow,
  96. RenderAssetGridElementType.assetRow,
  97. RenderAssetGridElementType.assetRow
  98. ];
  99. expect(renderList.elements.length, types.length);
  100. for (int i = 0; i < renderList.elements.length; i++) {
  101. expect(renderList.elements[i].type, types[i]);
  102. }
  103. });
  104. });
  105. }