@internetarchive/collection-browser 0.4.16-alpha.9 → 0.4.17

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 (74) hide show
  1. package/dist/src/app-root.js +12 -0
  2. package/dist/src/app-root.js.map +1 -1
  3. package/dist/src/collection-browser.d.ts +53 -14
  4. package/dist/src/collection-browser.js +279 -113
  5. package/dist/src/collection-browser.js.map +1 -1
  6. package/dist/src/collection-facets/facets-template.d.ts +3 -0
  7. package/dist/src/collection-facets/facets-template.js +20 -1
  8. package/dist/src/collection-facets/facets-template.js.map +1 -1
  9. package/dist/src/collection-facets/more-facets-content.js +7 -4
  10. package/dist/src/collection-facets/more-facets-content.js.map +1 -1
  11. package/dist/src/collection-facets.d.ts +0 -2
  12. package/dist/src/collection-facets.js +1 -4
  13. package/dist/src/collection-facets.js.map +1 -1
  14. package/dist/src/empty-placeholder.js +1 -0
  15. package/dist/src/empty-placeholder.js.map +1 -1
  16. package/dist/src/models.d.ts +5 -0
  17. package/dist/src/models.js.map +1 -1
  18. package/dist/src/tiles/grid/item-tile.js +10 -3
  19. package/dist/src/tiles/grid/item-tile.js.map +1 -1
  20. package/dist/src/tiles/list/tile-list-compact.d.ts +1 -0
  21. package/dist/src/tiles/list/tile-list-compact.js +13 -1
  22. package/dist/src/tiles/list/tile-list-compact.js.map +1 -1
  23. package/dist/src/tiles/list/tile-list.js +10 -1
  24. package/dist/src/tiles/list/tile-list.js.map +1 -1
  25. package/dist/src/utils/format-date.d.ts +1 -1
  26. package/dist/src/utils/format-date.js +3 -0
  27. package/dist/src/utils/format-date.js.map +1 -1
  28. package/dist/src/utils/local-date-from-utc.d.ts +9 -0
  29. package/dist/src/utils/local-date-from-utc.js +16 -0
  30. package/dist/src/utils/local-date-from-utc.js.map +1 -0
  31. package/dist/test/collection-browser.test.js +73 -10
  32. package/dist/test/collection-browser.test.js.map +1 -1
  33. package/dist/test/collection-facets/facets-template.test.js +80 -0
  34. package/dist/test/collection-facets/facets-template.test.js.map +1 -1
  35. package/dist/test/mocks/mock-collection-name-cache.d.ts +2 -0
  36. package/dist/test/mocks/mock-collection-name-cache.js +4 -0
  37. package/dist/test/mocks/mock-collection-name-cache.js.map +1 -1
  38. package/dist/test/mocks/mock-search-responses.d.ts +2 -0
  39. package/dist/test/mocks/mock-search-responses.js +81 -0
  40. package/dist/test/mocks/mock-search-responses.js.map +1 -1
  41. package/dist/test/mocks/mock-search-service.js +3 -1
  42. package/dist/test/mocks/mock-search-service.js.map +1 -1
  43. package/dist/test/tiles/grid/item-tile.test.js +124 -3
  44. package/dist/test/tiles/grid/item-tile.test.js.map +1 -1
  45. package/dist/test/tiles/list/tile-list-compact.test.js +65 -20
  46. package/dist/test/tiles/list/tile-list-compact.test.js.map +1 -1
  47. package/dist/test/tiles/list/tile-list.test.js +106 -4
  48. package/dist/test/tiles/list/tile-list.test.js.map +1 -1
  49. package/dist/test/utils/local-date-from-utc.test.d.ts +1 -0
  50. package/dist/test/utils/local-date-from-utc.test.js +27 -0
  51. package/dist/test/utils/local-date-from-utc.test.js.map +1 -0
  52. package/index.html +1 -0
  53. package/package.json +3 -3
  54. package/src/app-root.ts +12 -0
  55. package/src/collection-browser.ts +311 -114
  56. package/src/collection-facets/facets-template.ts +32 -1
  57. package/src/collection-facets/more-facets-content.ts +4 -1
  58. package/src/collection-facets.ts +1 -8
  59. package/src/empty-placeholder.ts +1 -0
  60. package/src/models.ts +6 -0
  61. package/src/tiles/grid/item-tile.ts +11 -4
  62. package/src/tiles/list/tile-list-compact.ts +16 -2
  63. package/src/tiles/list/tile-list.ts +12 -5
  64. package/src/utils/format-date.ts +4 -0
  65. package/src/utils/local-date-from-utc.ts +15 -0
  66. package/test/collection-browser.test.ts +101 -12
  67. package/test/collection-facets/facets-template.test.ts +98 -0
  68. package/test/mocks/mock-collection-name-cache.ts +8 -0
  69. package/test/mocks/mock-search-responses.ts +89 -0
  70. package/test/mocks/mock-search-service.ts +4 -0
  71. package/test/tiles/grid/item-tile.test.ts +145 -3
  72. package/test/tiles/list/tile-list-compact.test.ts +70 -19
  73. package/test/tiles/list/tile-list.test.ts +118 -4
  74. package/test/utils/local-date-from-utc.test.ts +37 -0
@@ -1 +1 @@
1
- {"version":3,"file":"mock-search-responses.js","sourceRoot":"","sources":["../../../test/mocks/mock-search-responses.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Result } from '@internetarchive/result-type';\nimport {\n Aggregation,\n ItemHit,\n SearchResponse,\n SearchServiceError,\n} from '@internetarchive/search-service';\nimport { SearchServiceErrorType } from '@internetarchive/search-service/dist/src/search-service-error';\n\nexport const getMockSuccessSingleResult: () => Result<\n SearchResponse,\n SearchServiceError\n> = () => ({\n success: {\n request: {\n clientParameters: {\n user_query: 'collection:foo',\n sort: [],\n },\n finalizedParameters: {\n user_query: 'collection:foo',\n sort: [],\n },\n },\n rawResponse: {},\n response: {\n totalResults: 1,\n returnedCount: 1,\n results: [\n new ItemHit({\n fields: {\n identifier: 'foo',\n collection: ['foo', 'bar'],\n },\n }),\n ],\n },\n responseHeader: {\n succeeded: true,\n query_time: 0,\n },\n },\n});\n\nexport const getMockSuccessWithYearHistogramAggs: () => Result<\n SearchResponse,\n SearchServiceError\n> = () => ({\n success: {\n request: {\n clientParameters: {\n user_query: 'years',\n sort: [],\n },\n finalizedParameters: {\n user_query: 'years',\n sort: [],\n },\n },\n rawResponse: {},\n response: {\n totalResults: 1,\n returnedCount: 1,\n aggregations: {\n subject: new Aggregation({\n buckets: [\n {\n key: 'foo',\n doc_count: 3,\n },\n ],\n }),\n year_histogram: new Aggregation({\n buckets: [1, 2, 3, 3, 2, 1],\n first_bucket_key: 1950,\n last_bucket_key: 2000,\n interval: 10,\n number_buckets: 6,\n }),\n },\n results: [],\n },\n responseHeader: {\n succeeded: true,\n query_time: 0,\n },\n },\n});\n\nexport const getMockSuccessLoggedInResult: () => Result<\n SearchResponse,\n SearchServiceError\n> = () => ({\n success: {\n request: {\n clientParameters: {\n user_query: 'loggedin',\n sort: [],\n },\n finalizedParameters: {\n user_query: 'loggedin',\n sort: [],\n },\n },\n rawResponse: {},\n response: {\n totalResults: 1,\n returnedCount: 1,\n results: [\n new ItemHit({\n fields: {\n identifier: 'foo',\n collection: ['foo', 'loggedin', 'bar'],\n title: 'foo',\n mediatype: 'data',\n },\n }),\n ],\n },\n responseHeader: {\n succeeded: true,\n query_time: 0,\n },\n },\n});\n\nexport const getMockSuccessNoPreviewResult: () => Result<\n SearchResponse,\n SearchServiceError\n> = () => ({\n success: {\n request: {\n clientParameters: {\n user_query: 'no-preview',\n sort: [],\n },\n finalizedParameters: {\n user_query: 'no-preview',\n sort: [],\n },\n },\n rawResponse: {},\n response: {\n totalResults: 1,\n returnedCount: 1,\n results: [\n new ItemHit({\n fields: {\n identifier: 'foo',\n collection: ['foo', 'no-preview', 'bar'],\n },\n }),\n ],\n },\n responseHeader: {\n succeeded: true,\n query_time: 0,\n },\n },\n});\n\nexport const getMockSuccessLoggedInAndNoPreviewResult: () => Result<\n SearchResponse,\n SearchServiceError\n> = () => ({\n success: {\n request: {\n clientParameters: {\n user_query: 'loggedin-no-preview',\n sort: [],\n },\n finalizedParameters: {\n user_query: 'loggedin-no-preview',\n sort: [],\n },\n },\n rawResponse: {},\n response: {\n totalResults: 1,\n returnedCount: 1,\n results: [\n new ItemHit({\n fields: {\n identifier: 'foo',\n collection: ['foo', 'loggedin', 'no-preview', 'bar'],\n },\n }),\n ],\n },\n responseHeader: {\n succeeded: true,\n query_time: 0,\n },\n },\n});\n\nexport const getMockSuccessFirstTitleResult: () => Result<\n SearchResponse,\n SearchServiceError\n> = () => ({\n success: {\n request: {\n clientParameters: {\n user_query: 'first-title',\n sort: ['title', 'asc'],\n },\n finalizedParameters: {\n user_query: 'first-title',\n sort: ['title', 'asc'],\n },\n },\n rawResponse: {},\n response: {\n totalResults: 1,\n returnedCount: 1,\n aggregations: {\n firstTitle: new Aggregation({\n buckets: [{ key: 'X', doc_count: 1 }],\n }),\n },\n results: [\n new ItemHit({\n fields: {\n identifier: 'foo',\n },\n }),\n ],\n },\n responseHeader: {\n succeeded: true,\n query_time: 0,\n },\n },\n});\n\nexport const getMockSuccessFirstCreatorResult: () => Result<\n SearchResponse,\n SearchServiceError\n> = () => ({\n success: {\n request: {\n clientParameters: {\n user_query: 'first-creator',\n sort: ['creator', 'asc'],\n },\n finalizedParameters: {\n user_query: 'first-creator',\n sort: ['creator', 'asc'],\n },\n },\n rawResponse: {},\n response: {\n totalResults: 1,\n returnedCount: 1,\n aggregations: {\n firstCreator: new Aggregation({\n buckets: [{ key: 'X', doc_count: 1 }],\n }),\n },\n results: [\n new ItemHit({\n fields: {\n identifier: 'foo',\n },\n }),\n ],\n },\n responseHeader: {\n succeeded: true,\n query_time: 0,\n },\n },\n});\n\nexport const getMockSuccessSingleResultWithSort: (\n resultsSpy: Function\n) => Result<SearchResponse, SearchServiceError> = (resultsSpy: Function) => ({\n success: {\n request: {\n clientParameters: {\n user_query: 'with-sort',\n sort: ['foo:asc'],\n },\n finalizedParameters: {\n user_query: 'with-sort',\n sort: ['foo:asc'],\n },\n },\n rawResponse: {},\n response: {\n totalResults: 1,\n returnedCount: 1,\n get results() {\n resultsSpy();\n return [\n new ItemHit({\n fields: {\n identifier: 'foo',\n collection: ['foo', 'bar'],\n },\n }),\n ];\n },\n },\n responseHeader: {\n succeeded: true,\n query_time: 0,\n },\n },\n});\n\nexport const getMockSuccessMultipleResults: () => Result<\n SearchResponse,\n SearchServiceError\n> = () => ({\n success: {\n request: {\n clientParameters: {\n user_query: 'collection:foo',\n sort: [],\n },\n finalizedParameters: {\n user_query: 'collection:foo',\n sort: [],\n },\n },\n rawResponse: {},\n response: {\n totalResults: 2,\n returnedCount: 2,\n results: [\n new ItemHit({\n fields: {\n identifier: 'foo',\n collection: ['foo', 'bar'],\n },\n }),\n new ItemHit({\n fields: {\n identifier: 'bar',\n collection: ['baz', 'boop'],\n },\n }),\n ],\n },\n responseHeader: {\n succeeded: true,\n query_time: 0,\n },\n },\n});\n\nexport const getMockSuccessMultiLineDescription: () => Result<\n SearchResponse,\n SearchServiceError\n> = () => ({\n success: {\n request: {\n clientParameters: {\n user_query: 'multi-line-description',\n sort: [],\n },\n finalizedParameters: {\n user_query: 'multi-line-description',\n sort: [],\n },\n },\n rawResponse: {},\n response: {\n totalResults: 1,\n returnedCount: 1,\n results: [\n new ItemHit({\n fields: {\n identifier: 'foo',\n collection: ['foo', 'bar'],\n description: ['line1', 'line2'],\n },\n }),\n ],\n },\n responseHeader: {\n succeeded: true,\n query_time: 0,\n },\n },\n});\n\nexport const getMockErrorResult: () => Result<\n SearchResponse,\n SearchServiceError\n> = () => ({\n error: new SearchServiceError(SearchServiceErrorType.networkError, 'foo', {\n message: 'bar',\n }),\n});\n\nexport const getMockMalformedResult: () => Result<\n SearchResponse,\n SearchServiceError\n> = () => ({});\n"]}
1
+ {"version":3,"file":"mock-search-responses.js","sourceRoot":"","sources":["../../../test/mocks/mock-search-responses.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Result } from '@internetarchive/result-type';\nimport {\n Aggregation,\n ItemHit,\n SearchResponse,\n SearchServiceError,\n} from '@internetarchive/search-service';\nimport { SearchServiceErrorType } from '@internetarchive/search-service/dist/src/search-service-error';\n\nexport const getMockSuccessSingleResult: () => Result<\n SearchResponse,\n SearchServiceError\n> = () => ({\n success: {\n request: {\n clientParameters: {\n user_query: 'collection:foo',\n sort: [],\n },\n finalizedParameters: {\n user_query: 'collection:foo',\n sort: [],\n },\n },\n rawResponse: {},\n response: {\n totalResults: 1,\n returnedCount: 1,\n results: [\n new ItemHit({\n fields: {\n identifier: 'foo',\n collection: ['foo', 'bar'],\n },\n }),\n ],\n },\n responseHeader: {\n succeeded: true,\n query_time: 0,\n },\n },\n});\n\nexport const getMockSuccessWithYearHistogramAggs: () => Result<\n SearchResponse,\n SearchServiceError\n> = () => ({\n success: {\n request: {\n clientParameters: {\n user_query: 'years',\n sort: [],\n },\n finalizedParameters: {\n user_query: 'years',\n sort: [],\n },\n },\n rawResponse: {},\n response: {\n totalResults: 1,\n returnedCount: 1,\n aggregations: {\n subject: new Aggregation({\n buckets: [\n {\n key: 'foo',\n doc_count: 3,\n },\n ],\n }),\n year_histogram: new Aggregation({\n buckets: [1, 2, 3, 3, 2, 1],\n first_bucket_key: 1950,\n last_bucket_key: 2000,\n interval: 10,\n number_buckets: 6,\n }),\n },\n results: [],\n },\n responseHeader: {\n succeeded: true,\n query_time: 0,\n },\n },\n});\n\nexport const getMockSuccessLoggedInResult: () => Result<\n SearchResponse,\n SearchServiceError\n> = () => ({\n success: {\n request: {\n clientParameters: {\n user_query: 'loggedin',\n sort: [],\n },\n finalizedParameters: {\n user_query: 'loggedin',\n sort: [],\n },\n },\n rawResponse: {},\n response: {\n totalResults: 1,\n returnedCount: 1,\n results: [\n new ItemHit({\n fields: {\n identifier: 'foo',\n collection: ['foo', 'loggedin', 'bar'],\n title: 'foo',\n mediatype: 'data',\n },\n }),\n ],\n },\n responseHeader: {\n succeeded: true,\n query_time: 0,\n },\n },\n});\n\nexport const getMockSuccessNoPreviewResult: () => Result<\n SearchResponse,\n SearchServiceError\n> = () => ({\n success: {\n request: {\n clientParameters: {\n user_query: 'no-preview',\n sort: [],\n },\n finalizedParameters: {\n user_query: 'no-preview',\n sort: [],\n },\n },\n rawResponse: {},\n response: {\n totalResults: 1,\n returnedCount: 1,\n results: [\n new ItemHit({\n fields: {\n identifier: 'foo',\n collection: ['foo', 'no-preview', 'bar'],\n },\n }),\n ],\n },\n responseHeader: {\n succeeded: true,\n query_time: 0,\n },\n },\n});\n\nexport const getMockSuccessLoggedInAndNoPreviewResult: () => Result<\n SearchResponse,\n SearchServiceError\n> = () => ({\n success: {\n request: {\n clientParameters: {\n user_query: 'loggedin-no-preview',\n sort: [],\n },\n finalizedParameters: {\n user_query: 'loggedin-no-preview',\n sort: [],\n },\n },\n rawResponse: {},\n response: {\n totalResults: 1,\n returnedCount: 1,\n results: [\n new ItemHit({\n fields: {\n identifier: 'foo',\n collection: ['foo', 'loggedin', 'no-preview', 'bar'],\n },\n }),\n ],\n },\n responseHeader: {\n succeeded: true,\n query_time: 0,\n },\n },\n});\n\nexport const getMockSuccessFirstTitleResult: () => Result<\n SearchResponse,\n SearchServiceError\n> = () => ({\n success: {\n request: {\n clientParameters: {\n user_query: 'first-title',\n sort: ['title', 'asc'],\n },\n finalizedParameters: {\n user_query: 'first-title',\n sort: ['title', 'asc'],\n },\n },\n rawResponse: {},\n response: {\n totalResults: 1,\n returnedCount: 1,\n aggregations: {\n firstTitle: new Aggregation({\n buckets: [{ key: 'X', doc_count: 1 }],\n }),\n },\n results: [\n new ItemHit({\n fields: {\n identifier: 'foo',\n },\n }),\n ],\n },\n responseHeader: {\n succeeded: true,\n query_time: 0,\n },\n },\n});\n\nexport const getMockSuccessFirstCreatorResult: () => Result<\n SearchResponse,\n SearchServiceError\n> = () => ({\n success: {\n request: {\n clientParameters: {\n user_query: 'first-creator',\n sort: ['creator', 'asc'],\n },\n finalizedParameters: {\n user_query: 'first-creator',\n sort: ['creator', 'asc'],\n },\n },\n rawResponse: {},\n response: {\n totalResults: 1,\n returnedCount: 1,\n aggregations: {\n firstCreator: new Aggregation({\n buckets: [{ key: 'X', doc_count: 1 }],\n }),\n },\n results: [\n new ItemHit({\n fields: {\n identifier: 'foo',\n },\n }),\n ],\n },\n responseHeader: {\n succeeded: true,\n query_time: 0,\n },\n },\n});\n\nexport const getMockSuccessWithCollectionTitles: () => Result<\n SearchResponse,\n SearchServiceError\n> = () => ({\n success: {\n request: {\n clientParameters: {\n user_query: 'collection:foo',\n sort: [],\n },\n finalizedParameters: {\n user_query: 'collection:foo',\n sort: [],\n },\n },\n rawResponse: {},\n response: {\n totalResults: 2,\n returnedCount: 2,\n results: [\n new ItemHit({\n fields: {\n identifier: 'foo',\n collection: ['foo', 'bar'],\n },\n }),\n new ItemHit({\n fields: {\n identifier: 'bar',\n collection: ['baz', 'boop'],\n },\n }),\n ],\n collectionTitles: {\n foo: 'Foo Collection',\n bar: 'Bar Collection',\n baz: 'Baz Collection',\n boop: 'Boop Collection',\n },\n },\n responseHeader: {\n succeeded: true,\n query_time: 0,\n },\n },\n});\n\nexport const getMockSuccessWithCollectionAggregations: () => Result<\n SearchResponse,\n SearchServiceError\n> = () => ({\n success: {\n request: {\n clientParameters: {\n user_query: 'collection:foo',\n sort: [],\n },\n finalizedParameters: {\n user_query: 'collection:foo',\n sort: [],\n },\n },\n rawResponse: {},\n response: {\n totalResults: 0,\n returnedCount: 0,\n results: [],\n aggregations: {\n collection: new Aggregation({\n buckets: [\n {\n key: 'foo',\n doc_count: 10,\n },\n {\n key: 'bar',\n doc_count: 10,\n },\n ],\n }),\n },\n },\n responseHeader: {\n succeeded: true,\n query_time: 0,\n },\n },\n});\n\nexport const getMockSuccessSingleResultWithSort: (\n resultsSpy: Function\n) => Result<SearchResponse, SearchServiceError> = (resultsSpy: Function) => ({\n success: {\n request: {\n clientParameters: {\n user_query: 'with-sort',\n sort: ['foo:asc'],\n },\n finalizedParameters: {\n user_query: 'with-sort',\n sort: ['foo:asc'],\n },\n },\n rawResponse: {},\n response: {\n totalResults: 1,\n returnedCount: 1,\n get results() {\n resultsSpy();\n return [\n new ItemHit({\n fields: {\n identifier: 'foo',\n collection: ['foo', 'bar'],\n },\n }),\n ];\n },\n },\n responseHeader: {\n succeeded: true,\n query_time: 0,\n },\n },\n});\n\nexport const getMockSuccessMultipleResults: () => Result<\n SearchResponse,\n SearchServiceError\n> = () => ({\n success: {\n request: {\n clientParameters: {\n user_query: 'collection:foo',\n sort: [],\n },\n finalizedParameters: {\n user_query: 'collection:foo',\n sort: [],\n },\n },\n rawResponse: {},\n response: {\n totalResults: 2,\n returnedCount: 2,\n results: [\n new ItemHit({\n fields: {\n identifier: 'foo',\n collection: ['foo', 'bar'],\n },\n }),\n new ItemHit({\n fields: {\n identifier: 'bar',\n collection: ['baz', 'boop'],\n },\n }),\n ],\n },\n responseHeader: {\n succeeded: true,\n query_time: 0,\n },\n },\n});\n\nexport const getMockSuccessMultiLineDescription: () => Result<\n SearchResponse,\n SearchServiceError\n> = () => ({\n success: {\n request: {\n clientParameters: {\n user_query: 'multi-line-description',\n sort: [],\n },\n finalizedParameters: {\n user_query: 'multi-line-description',\n sort: [],\n },\n },\n rawResponse: {},\n response: {\n totalResults: 1,\n returnedCount: 1,\n results: [\n new ItemHit({\n fields: {\n identifier: 'foo',\n collection: ['foo', 'bar'],\n description: ['line1', 'line2'],\n },\n }),\n ],\n },\n responseHeader: {\n succeeded: true,\n query_time: 0,\n },\n },\n});\n\nexport const getMockErrorResult: () => Result<\n SearchResponse,\n SearchServiceError\n> = () => ({\n error: new SearchServiceError(SearchServiceErrorType.networkError, 'foo', {\n message: 'bar',\n }),\n});\n\nexport const getMockMalformedResult: () => Result<\n SearchResponse,\n SearchServiceError\n> = () => ({});\n"]}
@@ -1,4 +1,4 @@
1
- import { getMockSuccessSingleResult, getMockSuccessMultipleResults, getMockSuccessSingleResultWithSort, getMockSuccessLoggedInResult, getMockSuccessNoPreviewResult, getMockSuccessLoggedInAndNoPreviewResult, getMockSuccessWithYearHistogramAggs, getMockSuccessMultiLineDescription, getMockSuccessFirstTitleResult, getMockSuccessFirstCreatorResult, getMockErrorResult, getMockMalformedResult, } from './mock-search-responses';
1
+ import { getMockSuccessSingleResult, getMockSuccessMultipleResults, getMockSuccessSingleResultWithSort, getMockSuccessLoggedInResult, getMockSuccessNoPreviewResult, getMockSuccessLoggedInAndNoPreviewResult, getMockSuccessWithYearHistogramAggs, getMockSuccessMultiLineDescription, getMockSuccessFirstTitleResult, getMockSuccessFirstCreatorResult, getMockErrorResult, getMockMalformedResult, getMockSuccessWithCollectionTitles, getMockSuccessWithCollectionAggregations, } from './mock-search-responses';
2
2
  const responses = {
3
3
  'single-result': getMockSuccessSingleResult,
4
4
  years: getMockSuccessWithYearHistogramAggs,
@@ -8,6 +8,8 @@ const responses = {
8
8
  'loggedin-no-preview': getMockSuccessLoggedInAndNoPreviewResult,
9
9
  'first-title': getMockSuccessFirstTitleResult,
10
10
  'first-creator': getMockSuccessFirstCreatorResult,
11
+ 'collection-titles': getMockSuccessWithCollectionTitles,
12
+ 'collection-aggregations': getMockSuccessWithCollectionAggregations,
11
13
  error: getMockErrorResult,
12
14
  malformed: getMockMalformedResult,
13
15
  };
@@ -1 +1 @@
1
- {"version":3,"file":"mock-search-service.js","sourceRoot":"","sources":["../../../test/mocks/mock-search-service.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,EAC7B,kCAAkC,EAClC,4BAA4B,EAC5B,6BAA6B,EAC7B,wCAAwC,EACxC,mCAAmC,EACnC,kCAAkC,EAClC,8BAA8B,EAC9B,gCAAgC,EAChC,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,yBAAyB,CAAC;AAEjC,MAAM,SAAS,GAGX;IACF,eAAe,EAAE,0BAA0B;IAC3C,KAAK,EAAE,mCAAmC;IAC1C,wBAAwB,EAAE,kCAAkC;IAC5D,QAAQ,EAAE,4BAA4B;IACtC,YAAY,EAAE,6BAA6B;IAC3C,qBAAqB,EAAE,wCAAwC;IAC/D,aAAa,EAAE,8BAA8B;IAC7C,eAAe,EAAE,gCAAgC;IACjD,KAAK,EAAE,kBAAkB;IACzB,SAAS,EAAE,sBAAsB;CAClC,CAAC;AAEF,MAAM,OAAO,iBAAiB;IAW5B,YAAY,EACV,aAAa,GAAG,KAAK,EACrB,kBAAkB,GAAG,CAAC,EACtB,UAAU,GAAG,GAAG,EAAE,GAAE,CAAC,GACtB,GAAG,EAAE;QACJ,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;QAC7C,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,MAAM,CACV,MAAoB,EACpB,UAAsB;;QAEtB,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAE7B,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,iCAAiC;YACjC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE;gBACtB,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAC3C,CAAC,CAAC,CAAC;SACJ;QAED,MAAM,QAAQ,GACZ,MAAA,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,mCAAI,6BAA6B,CAAC;QACtE,IAAI,MAAM,GAAG,QAAQ,EAAE,CAAC;QAExB,uCAAuC;QACvC,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,KAAK,WAAW,EAAE;YAC3C,MAAM,GAAG,kCAAkC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SAC9D;QAED,uCAAuC;QACvC,IAAI,MAAM,CAAC,OAAO,EAAE;YACjB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAwB,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;SACnE;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF","sourcesContent":["import type { Result } from '@internetarchive/result-type';\nimport type {\n SearchParams,\n SearchResponse,\n SearchServiceInterface,\n SearchServiceError,\n SearchType,\n} from '@internetarchive/search-service';\nimport {\n getMockSuccessSingleResult,\n getMockSuccessMultipleResults,\n getMockSuccessSingleResultWithSort,\n getMockSuccessLoggedInResult,\n getMockSuccessNoPreviewResult,\n getMockSuccessLoggedInAndNoPreviewResult,\n getMockSuccessWithYearHistogramAggs,\n getMockSuccessMultiLineDescription,\n getMockSuccessFirstTitleResult,\n getMockSuccessFirstCreatorResult,\n getMockErrorResult,\n getMockMalformedResult,\n} from './mock-search-responses';\n\nconst responses: Record<\n string,\n () => Result<SearchResponse, SearchServiceError>\n> = {\n 'single-result': getMockSuccessSingleResult,\n years: getMockSuccessWithYearHistogramAggs,\n 'multi-line-description': getMockSuccessMultiLineDescription,\n loggedin: getMockSuccessLoggedInResult,\n 'no-preview': getMockSuccessNoPreviewResult,\n 'loggedin-no-preview': getMockSuccessLoggedInAndNoPreviewResult,\n 'first-title': getMockSuccessFirstTitleResult,\n 'first-creator': getMockSuccessFirstCreatorResult,\n error: getMockErrorResult,\n malformed: getMockMalformedResult,\n};\n\nexport class MockSearchService implements SearchServiceInterface {\n searchParams?: SearchParams;\n\n searchType?: SearchType;\n\n asyncResponse: boolean;\n\n asyncResponseDelay: number;\n\n resultsSpy: Function;\n\n constructor({\n asyncResponse = false,\n asyncResponseDelay = 0,\n resultsSpy = () => {},\n } = {}) {\n this.asyncResponse = asyncResponse;\n this.asyncResponseDelay = asyncResponseDelay;\n this.resultsSpy = resultsSpy;\n }\n\n async search(\n params: SearchParams,\n searchType: SearchType\n ): Promise<Result<SearchResponse, SearchServiceError>> {\n this.searchParams = params;\n this.searchType = searchType;\n\n if (this.asyncResponse) {\n // Add an artificial 1-tick delay\n await new Promise(res => {\n setTimeout(res, this.asyncResponseDelay);\n });\n }\n\n const resultFn: () => Result<SearchResponse, SearchServiceError> =\n responses[this.searchParams.query] ?? getMockSuccessMultipleResults;\n let result = resultFn();\n\n // with-sort query has special handling\n if (this.searchParams.query === 'with-sort') {\n result = getMockSuccessSingleResultWithSort(this.resultsSpy);\n }\n\n // Apply any uid param from the request\n if (result.success) {\n (result.success.request.clientParameters as any).uid = params.uid;\n }\n\n return result;\n }\n}\n"]}
1
+ {"version":3,"file":"mock-search-service.js","sourceRoot":"","sources":["../../../test/mocks/mock-search-service.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,EAC7B,kCAAkC,EAClC,4BAA4B,EAC5B,6BAA6B,EAC7B,wCAAwC,EACxC,mCAAmC,EACnC,kCAAkC,EAClC,8BAA8B,EAC9B,gCAAgC,EAChC,kBAAkB,EAClB,sBAAsB,EACtB,kCAAkC,EAClC,wCAAwC,GACzC,MAAM,yBAAyB,CAAC;AAEjC,MAAM,SAAS,GAGX;IACF,eAAe,EAAE,0BAA0B;IAC3C,KAAK,EAAE,mCAAmC;IAC1C,wBAAwB,EAAE,kCAAkC;IAC5D,QAAQ,EAAE,4BAA4B;IACtC,YAAY,EAAE,6BAA6B;IAC3C,qBAAqB,EAAE,wCAAwC;IAC/D,aAAa,EAAE,8BAA8B;IAC7C,eAAe,EAAE,gCAAgC;IACjD,mBAAmB,EAAE,kCAAkC;IACvD,yBAAyB,EAAE,wCAAwC;IACnE,KAAK,EAAE,kBAAkB;IACzB,SAAS,EAAE,sBAAsB;CAClC,CAAC;AAEF,MAAM,OAAO,iBAAiB;IAW5B,YAAY,EACV,aAAa,GAAG,KAAK,EACrB,kBAAkB,GAAG,CAAC,EACtB,UAAU,GAAG,GAAG,EAAE,GAAE,CAAC,GACtB,GAAG,EAAE;QACJ,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;QAC7C,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,MAAM,CACV,MAAoB,EACpB,UAAsB;;QAEtB,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAE7B,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,iCAAiC;YACjC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE;gBACtB,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAC3C,CAAC,CAAC,CAAC;SACJ;QAED,MAAM,QAAQ,GACZ,MAAA,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,mCAAI,6BAA6B,CAAC;QACtE,IAAI,MAAM,GAAG,QAAQ,EAAE,CAAC;QAExB,uCAAuC;QACvC,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,KAAK,WAAW,EAAE;YAC3C,MAAM,GAAG,kCAAkC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SAC9D;QAED,uCAAuC;QACvC,IAAI,MAAM,CAAC,OAAO,EAAE;YACjB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAwB,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;SACnE;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF","sourcesContent":["import type { Result } from '@internetarchive/result-type';\nimport type {\n SearchParams,\n SearchResponse,\n SearchServiceInterface,\n SearchServiceError,\n SearchType,\n} from '@internetarchive/search-service';\nimport {\n getMockSuccessSingleResult,\n getMockSuccessMultipleResults,\n getMockSuccessSingleResultWithSort,\n getMockSuccessLoggedInResult,\n getMockSuccessNoPreviewResult,\n getMockSuccessLoggedInAndNoPreviewResult,\n getMockSuccessWithYearHistogramAggs,\n getMockSuccessMultiLineDescription,\n getMockSuccessFirstTitleResult,\n getMockSuccessFirstCreatorResult,\n getMockErrorResult,\n getMockMalformedResult,\n getMockSuccessWithCollectionTitles,\n getMockSuccessWithCollectionAggregations,\n} from './mock-search-responses';\n\nconst responses: Record<\n string,\n () => Result<SearchResponse, SearchServiceError>\n> = {\n 'single-result': getMockSuccessSingleResult,\n years: getMockSuccessWithYearHistogramAggs,\n 'multi-line-description': getMockSuccessMultiLineDescription,\n loggedin: getMockSuccessLoggedInResult,\n 'no-preview': getMockSuccessNoPreviewResult,\n 'loggedin-no-preview': getMockSuccessLoggedInAndNoPreviewResult,\n 'first-title': getMockSuccessFirstTitleResult,\n 'first-creator': getMockSuccessFirstCreatorResult,\n 'collection-titles': getMockSuccessWithCollectionTitles,\n 'collection-aggregations': getMockSuccessWithCollectionAggregations,\n error: getMockErrorResult,\n malformed: getMockMalformedResult,\n};\n\nexport class MockSearchService implements SearchServiceInterface {\n searchParams?: SearchParams;\n\n searchType?: SearchType;\n\n asyncResponse: boolean;\n\n asyncResponseDelay: number;\n\n resultsSpy: Function;\n\n constructor({\n asyncResponse = false,\n asyncResponseDelay = 0,\n resultsSpy = () => {},\n } = {}) {\n this.asyncResponse = asyncResponse;\n this.asyncResponseDelay = asyncResponseDelay;\n this.resultsSpy = resultsSpy;\n }\n\n async search(\n params: SearchParams,\n searchType: SearchType\n ): Promise<Result<SearchResponse, SearchServiceError>> {\n this.searchParams = params;\n this.searchType = searchType;\n\n if (this.asyncResponse) {\n // Add an artificial 1-tick delay\n await new Promise(res => {\n setTimeout(res, this.asyncResponseDelay);\n });\n }\n\n const resultFn: () => Result<SearchResponse, SearchServiceError> =\n responses[this.searchParams.query] ?? getMockSuccessMultipleResults;\n let result = resultFn();\n\n // with-sort query has special handling\n if (this.searchParams.query === 'with-sort') {\n result = getMockSuccessSingleResultWithSort(this.resultsSpy);\n }\n\n // Apply any uid param from the request\n if (result.success) {\n (result.success.request.clientParameters as any).uid = params.uid;\n }\n\n return result;\n }\n}\n"]}
@@ -86,7 +86,7 @@ describe('Item Tile', () => {
86
86
  expect(createdBy).to.not.exist;
87
87
  expect(dateSortedBy).to.not.exist;
88
88
  });
89
- it('should render with created-by when sorting not related to date', async () => {
89
+ it('should render without created-by when sorting by a date field', async () => {
90
90
  var _a, _b, _c;
91
91
  const el = await fixture(html `<item-tile .model=${{ dateAdded: new Date() }}></item-tile>`);
92
92
  el.sortParam = {
@@ -101,7 +101,7 @@ describe('Item Tile', () => {
101
101
  expect(createdBy).to.not.exist;
102
102
  expect(dateSortedBy).to.exist;
103
103
  });
104
- it('should render with created-by when sort field id not like date', async () => {
104
+ it('should render with created-by when sort field is not a date', async () => {
105
105
  var _a, _b, _c;
106
106
  const el = await fixture(html `<item-tile .model=${{ creator: 'someone' }}></item-tile>`);
107
107
  el.sortParam = {
@@ -113,9 +113,130 @@ describe('Item Tile', () => {
113
113
  const createdBy = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('.created-by');
114
114
  const dateSortedBy = (_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('.date-sorted-by');
115
115
  expect(itemInfo).to.exist;
116
- expect(dateSortedBy).to.not.exist; // it should be exist because this is not related to date sort
116
+ expect(dateSortedBy).to.not.exist; // it should not exist because this is not a date sort
117
117
  expect(createdBy).to.exist;
118
118
  });
119
+ it('should render published date when sorting by it', async () => {
120
+ var _a, _b;
121
+ const model = {
122
+ dateAdded: new Date('2010-01-02'),
123
+ dateArchived: new Date('2011-01-02'),
124
+ datePublished: new Date('2012-01-02'),
125
+ dateReviewed: new Date('2013-01-02'),
126
+ };
127
+ const el = await fixture(html `
128
+ <item-tile
129
+ .model=${model}
130
+ .sortParam=${{ field: 'date', direction: 'desc' }}
131
+ >
132
+ </item-tile>
133
+ `);
134
+ const dateSortedBy = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.date-sorted-by');
135
+ expect(dateSortedBy).to.exist;
136
+ expect((_b = dateSortedBy === null || dateSortedBy === void 0 ? void 0 : dateSortedBy.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.contain('published Jan 02, 2012');
137
+ });
138
+ it('should render added date when sorting by it', async () => {
139
+ var _a, _b;
140
+ const model = {
141
+ dateAdded: new Date('2010-01-02'),
142
+ dateArchived: new Date('2011-01-02'),
143
+ datePublished: new Date('2012-01-02'),
144
+ dateReviewed: new Date('2013-01-02'),
145
+ };
146
+ const el = await fixture(html `
147
+ <item-tile
148
+ .model=${model}
149
+ .sortParam=${{ field: 'addeddate', direction: 'desc' }}
150
+ >
151
+ </item-tile>
152
+ `);
153
+ const dateSortedBy = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.date-sorted-by');
154
+ expect(dateSortedBy).to.exist;
155
+ expect((_b = dateSortedBy === null || dateSortedBy === void 0 ? void 0 : dateSortedBy.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.contain('added Jan 02, 2010');
156
+ });
157
+ it('should render archived date when sorting by it', async () => {
158
+ var _a, _b;
159
+ const model = {
160
+ dateAdded: new Date('2010-01-02'),
161
+ dateArchived: new Date('2011-01-02'),
162
+ datePublished: new Date('2012-01-02'),
163
+ dateReviewed: new Date('2013-01-02'),
164
+ };
165
+ const el = await fixture(html `
166
+ <item-tile
167
+ .model=${model}
168
+ .sortParam=${{ field: 'publicdate', direction: 'desc' }}
169
+ >
170
+ </item-tile>
171
+ `);
172
+ const dateSortedBy = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.date-sorted-by');
173
+ expect(dateSortedBy).to.exist;
174
+ expect((_b = dateSortedBy === null || dateSortedBy === void 0 ? void 0 : dateSortedBy.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.contain('archived Jan 02, 2011');
175
+ });
176
+ it('should render reviewed date when sorting by it', async () => {
177
+ var _a, _b;
178
+ const model = {
179
+ dateAdded: new Date('2010-01-02'),
180
+ dateArchived: new Date('2011-01-02'),
181
+ datePublished: new Date('2012-01-02'),
182
+ dateReviewed: new Date('2013-01-02'),
183
+ };
184
+ const el = await fixture(html `
185
+ <item-tile
186
+ .model=${model}
187
+ .sortParam=${{ field: 'reviewdate', direction: 'desc' }}
188
+ >
189
+ </item-tile>
190
+ `);
191
+ const dateSortedBy = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.date-sorted-by');
192
+ expect(dateSortedBy).to.exist;
193
+ expect((_b = dateSortedBy === null || dateSortedBy === void 0 ? void 0 : dateSortedBy.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.contain('reviewed Jan 02, 2013');
194
+ });
195
+ it('should only show the year for a date published of Jan 1 at midnight UTC', async () => {
196
+ var _a, _b;
197
+ const model = {
198
+ datePublished: new Date(2012, 0, 1, 0, 0, 0, 0),
199
+ };
200
+ const el = await fixture(html `
201
+ <item-tile
202
+ .model=${model}
203
+ .sortParam=${{ field: 'date', direction: 'desc' }}
204
+ >
205
+ </item-tile>
206
+ `);
207
+ const dateSortedBy = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.date-sorted-by');
208
+ expect(dateSortedBy).to.exist;
209
+ expect((_b = dateSortedBy === null || dateSortedBy === void 0 ? void 0 : dateSortedBy.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.equal('published 2012');
210
+ });
211
+ it('should show full date added/archived/reviewed, even on Jan 1 at midnight UTC', async () => {
212
+ var _a, _b, _c, _d, _e, _f;
213
+ const model = {
214
+ dateAdded: new Date(2010, 0, 1, 0, 0, 0, 0),
215
+ dateArchived: new Date(2011, 0, 1, 0, 0, 0, 0),
216
+ datePublished: new Date(2012, 0, 1, 0, 0, 0, 0),
217
+ dateReviewed: new Date(2013, 0, 1, 0, 0, 0, 0),
218
+ };
219
+ const el = await fixture(html `
220
+ <item-tile
221
+ .model=${model}
222
+ .sortParam=${{ field: 'addeddate', direction: 'desc' }}
223
+ >
224
+ </item-tile>
225
+ `);
226
+ let dateSortedBy = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.date-sorted-by');
227
+ expect(dateSortedBy).to.exist;
228
+ expect((_b = dateSortedBy === null || dateSortedBy === void 0 ? void 0 : dateSortedBy.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.equal('added Jan 01, 2010');
229
+ el.sortParam = { field: 'publicdate', direction: 'desc' };
230
+ await el.updateComplete;
231
+ dateSortedBy = (_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('.date-sorted-by');
232
+ expect(dateSortedBy).to.exist;
233
+ expect((_d = dateSortedBy === null || dateSortedBy === void 0 ? void 0 : dateSortedBy.textContent) === null || _d === void 0 ? void 0 : _d.trim()).to.equal('archived Jan 01, 2011');
234
+ el.sortParam = { field: 'reviewdate', direction: 'desc' };
235
+ await el.updateComplete;
236
+ dateSortedBy = (_e = el.shadowRoot) === null || _e === void 0 ? void 0 : _e.querySelector('.date-sorted-by');
237
+ expect(dateSortedBy).to.exist;
238
+ expect((_f = dateSortedBy === null || dateSortedBy === void 0 ? void 0 : dateSortedBy.textContent) === null || _f === void 0 ? void 0 : _f.trim()).to.equal('reviewed Jan 01, 2013');
239
+ });
119
240
  it('should render with snippet block when it has snippets', async () => {
120
241
  var _a;
121
242
  const el = await fixture(html `
@@ -1 +1 @@
1
- {"version":3,"file":"item-tile.test.js","sourceRoot":"","sources":["../../../../test/tiles/grid/item-tile.test.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable import/no-duplicates */\nimport { expect, fixture } from '@open-wc/testing';\nimport sinon from 'sinon';\nimport { html } from 'lit';\nimport type { ItemTile } from '../../../src/tiles/grid/item-tile';\n\nimport '../../../src/tiles/grid/item-tile';\n\ndescribe('Item Tile', () => {\n it('should render initial component', async () => {\n const el = await fixture<ItemTile>(html`<item-tile></item-tile>`);\n\n const container = el.shadowRoot?.querySelector('.container');\n const tileDetails = el.shadowRoot?.querySelector('.tile-details');\n const itemInfo = el.shadowRoot?.querySelector('.item-info');\n const itemTitle = el.shadowRoot?.querySelector('#title');\n const imageBlock = el.shadowRoot?.querySelector('image-block');\n\n expect(container).to.exist;\n expect(tileDetails).to.exist;\n expect(itemInfo).to.exist;\n expect(imageBlock).to.exist;\n expect(itemTitle).to.exist;\n });\n\n it('should render with created-by element', async () => {\n const el = await fixture<ItemTile>(\n html`<item-tile .model=${{ creator: 'someone' }}></item-tile>`\n );\n\n const container = el.shadowRoot?.querySelector('.container');\n const tileDetails = el.shadowRoot?.querySelector('.tile-details');\n const itemInfo = el.shadowRoot?.querySelector('.item-info');\n const createdBy = el.shadowRoot?.querySelector('.created-by');\n const truncatedCreatorText = createdBy?.querySelector('.truncated');\n const dateSortedBy = el.shadowRoot?.querySelector('.date-sorted-by');\n\n expect(container).to.exist;\n expect(tileDetails).to.exist;\n expect(itemInfo).to.exist;\n expect(createdBy).to.exist;\n expect(truncatedCreatorText).to.exist;\n expect(dateSortedBy).to.not.exist;\n });\n\n it('should not render with created-by but date element', async () => {\n const el = await fixture<ItemTile>(\n html`<item-tile .model=${{ datePublished: new Date() }}></item-tile>`\n );\n\n el.sortParam = {\n field: 'date',\n direction: 'desc',\n };\n await el.updateComplete;\n\n const createdBy = el.shadowRoot?.querySelector('.created-by');\n const dateSortedBy = el.shadowRoot?.querySelector('.date-sorted-by');\n\n expect(createdBy).to.not.exist;\n expect(dateSortedBy).to.exist;\n });\n\n it('should not render with created-by but reviewdate element', async () => {\n const el = await fixture<ItemTile>(\n html`<item-tile .model=${{ dateReviewed: new Date() }}></item-tile>`\n );\n\n el.sortParam = {\n field: 'reviewdate',\n direction: 'desc',\n };\n await el.updateComplete;\n\n const createdBy = el.shadowRoot?.querySelector('.created-by');\n const dateSortedBy = el.shadowRoot?.querySelector('.date-sorted-by');\n\n expect(createdBy).to.not.exist;\n expect(dateSortedBy).to.exist;\n });\n\n it('should not render with created-by but publicdate element', async () => {\n const el = await fixture<ItemTile>(\n html`<item-tile .model=${{ dateArchived: new Date() }}></item-tile>`\n );\n\n el.sortParam = {\n field: 'publicdate',\n direction: 'desc',\n };\n await el.updateComplete;\n\n const createdBy = el.shadowRoot?.querySelector('.created-by');\n const dateSortedBy = el.shadowRoot?.querySelector('.date-sorted-by');\n\n expect(createdBy).to.not.exist;\n expect(dateSortedBy).to.exist;\n });\n\n it('should not render date-sorted-by element if date is not provided', async () => {\n const el = await fixture<ItemTile>(\n html`<item-tile .model=${{ dateArchived: undefined }}></item-tile>`\n );\n\n el.sortParam = {\n field: 'publicdate',\n direction: 'desc',\n };\n await el.updateComplete;\n\n const createdBy = el.shadowRoot?.querySelector('.created-by');\n const dateSortedBy = el.shadowRoot?.querySelector('.date-sorted-by');\n\n expect(createdBy).to.not.exist;\n expect(dateSortedBy).to.not.exist;\n });\n\n it('should render with created-by when sorting not related to date', async () => {\n const el = await fixture<ItemTile>(\n html`<item-tile .model=${{ dateAdded: new Date() }}></item-tile>`\n );\n\n el.sortParam = {\n field: 'addeddate',\n direction: 'asc',\n };\n await el.updateComplete;\n\n const itemInfo = el.shadowRoot?.querySelector('.item-info');\n const createdBy = el.shadowRoot?.querySelector('.created-by');\n const dateSortedBy = el.shadowRoot?.querySelector('.date-sorted-by');\n\n expect(itemInfo).to.exist;\n expect(createdBy).to.not.exist;\n expect(dateSortedBy).to.exist;\n });\n\n it('should render with created-by when sort field id not like date', async () => {\n const el = await fixture<ItemTile>(\n html`<item-tile .model=${{ creator: 'someone' }}></item-tile>`\n );\n\n el.sortParam = {\n field: 'week',\n direction: 'asc',\n };\n await el.updateComplete;\n\n const itemInfo = el.shadowRoot?.querySelector('.item-info');\n const createdBy = el.shadowRoot?.querySelector('.created-by');\n const dateSortedBy = el.shadowRoot?.querySelector('.date-sorted-by');\n\n expect(itemInfo).to.exist;\n expect(dateSortedBy).to.not.exist; // it should be exist because this is not related to date sort\n expect(createdBy).to.exist;\n });\n\n it('should render with snippet block when it has snippets', async () => {\n const el = await fixture<ItemTile>(html`\n <item-tile .model=${{ snippets: ['some {{{snippet}}} text'] }}>\n </item-tile>\n `);\n\n const snippetBlock = el.shadowRoot?.querySelector('text-snippet-block');\n\n expect(snippetBlock).to.exist;\n });\n\n it('should not render snippet block when no snippets are present', async () => {\n const el = await fixture<ItemTile>(html`<item-tile></item-tile>`);\n\n const snippetBlock = el.shadowRoot?.querySelector('text-snippet-block');\n\n expect(snippetBlock).to.not.exist;\n });\n\n it('should render info button when showInfoButton flag is set', async () => {\n const el = await fixture<ItemTile>(html`\n <item-tile ?showInfoButton=${true}> </item-tile>\n `);\n\n const infoButton = el.shadowRoot?.querySelector('.info-button');\n\n expect(infoButton).to.exist;\n });\n\n it('should dispatch event when info button tapped', async () => {\n const infoButtonSpy = sinon.spy();\n const el = await fixture<ItemTile>(html`\n <item-tile ?showInfoButton=${true} @infoButtonPressed=${infoButtonSpy}>\n </item-tile>\n `);\n\n const infoButton = el.shadowRoot?.querySelector(\n '.info-button'\n ) as HTMLButtonElement;\n infoButton.click();\n await el.updateComplete;\n\n expect(infoButtonSpy.callCount).to.equal(1);\n });\n\n it('should render with volume/issue view', async () => {\n const el = await fixture<ItemTile>(html`\n <item-tile .model=${{ volume: '1', issue: 'Index' }}></item-tile>\n `);\n\n const volumeIssueBlock = el.shadowRoot?.querySelector('.volume-issue');\n\n expect(volumeIssueBlock).to.exist;\n });\n\n it('should render with volume/issue view to not render', async () => {\n const el = await fixture<ItemTile>(html`<item-tile></item-tile>`);\n\n const volumeIssueBlock = el.shadowRoot?.querySelector('.volume-issue');\n\n expect(volumeIssueBlock).to.not.exist;\n });\n});\n"]}
1
+ {"version":3,"file":"item-tile.test.js","sourceRoot":"","sources":["../../../../test/tiles/grid/item-tile.test.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable import/no-duplicates */\nimport { expect, fixture } from '@open-wc/testing';\nimport sinon from 'sinon';\nimport { html } from 'lit';\nimport type { ItemTile } from '../../../src/tiles/grid/item-tile';\n\nimport '../../../src/tiles/grid/item-tile';\nimport type { TileModel } from '../../../src/models';\n\ndescribe('Item Tile', () => {\n it('should render initial component', async () => {\n const el = await fixture<ItemTile>(html`<item-tile></item-tile>`);\n\n const container = el.shadowRoot?.querySelector('.container');\n const tileDetails = el.shadowRoot?.querySelector('.tile-details');\n const itemInfo = el.shadowRoot?.querySelector('.item-info');\n const itemTitle = el.shadowRoot?.querySelector('#title');\n const imageBlock = el.shadowRoot?.querySelector('image-block');\n\n expect(container).to.exist;\n expect(tileDetails).to.exist;\n expect(itemInfo).to.exist;\n expect(imageBlock).to.exist;\n expect(itemTitle).to.exist;\n });\n\n it('should render with created-by element', async () => {\n const el = await fixture<ItemTile>(\n html`<item-tile .model=${{ creator: 'someone' }}></item-tile>`\n );\n\n const container = el.shadowRoot?.querySelector('.container');\n const tileDetails = el.shadowRoot?.querySelector('.tile-details');\n const itemInfo = el.shadowRoot?.querySelector('.item-info');\n const createdBy = el.shadowRoot?.querySelector('.created-by');\n const truncatedCreatorText = createdBy?.querySelector('.truncated');\n const dateSortedBy = el.shadowRoot?.querySelector('.date-sorted-by');\n\n expect(container).to.exist;\n expect(tileDetails).to.exist;\n expect(itemInfo).to.exist;\n expect(createdBy).to.exist;\n expect(truncatedCreatorText).to.exist;\n expect(dateSortedBy).to.not.exist;\n });\n\n it('should not render with created-by but date element', async () => {\n const el = await fixture<ItemTile>(\n html`<item-tile .model=${{ datePublished: new Date() }}></item-tile>`\n );\n\n el.sortParam = {\n field: 'date',\n direction: 'desc',\n };\n await el.updateComplete;\n\n const createdBy = el.shadowRoot?.querySelector('.created-by');\n const dateSortedBy = el.shadowRoot?.querySelector('.date-sorted-by');\n\n expect(createdBy).to.not.exist;\n expect(dateSortedBy).to.exist;\n });\n\n it('should not render with created-by but reviewdate element', async () => {\n const el = await fixture<ItemTile>(\n html`<item-tile .model=${{ dateReviewed: new Date() }}></item-tile>`\n );\n\n el.sortParam = {\n field: 'reviewdate',\n direction: 'desc',\n };\n await el.updateComplete;\n\n const createdBy = el.shadowRoot?.querySelector('.created-by');\n const dateSortedBy = el.shadowRoot?.querySelector('.date-sorted-by');\n\n expect(createdBy).to.not.exist;\n expect(dateSortedBy).to.exist;\n });\n\n it('should not render with created-by but publicdate element', async () => {\n const el = await fixture<ItemTile>(\n html`<item-tile .model=${{ dateArchived: new Date() }}></item-tile>`\n );\n\n el.sortParam = {\n field: 'publicdate',\n direction: 'desc',\n };\n await el.updateComplete;\n\n const createdBy = el.shadowRoot?.querySelector('.created-by');\n const dateSortedBy = el.shadowRoot?.querySelector('.date-sorted-by');\n\n expect(createdBy).to.not.exist;\n expect(dateSortedBy).to.exist;\n });\n\n it('should not render date-sorted-by element if date is not provided', async () => {\n const el = await fixture<ItemTile>(\n html`<item-tile .model=${{ dateArchived: undefined }}></item-tile>`\n );\n\n el.sortParam = {\n field: 'publicdate',\n direction: 'desc',\n };\n await el.updateComplete;\n\n const createdBy = el.shadowRoot?.querySelector('.created-by');\n const dateSortedBy = el.shadowRoot?.querySelector('.date-sorted-by');\n\n expect(createdBy).to.not.exist;\n expect(dateSortedBy).to.not.exist;\n });\n\n it('should render without created-by when sorting by a date field', async () => {\n const el = await fixture<ItemTile>(\n html`<item-tile .model=${{ dateAdded: new Date() }}></item-tile>`\n );\n\n el.sortParam = {\n field: 'addeddate',\n direction: 'asc',\n };\n await el.updateComplete;\n\n const itemInfo = el.shadowRoot?.querySelector('.item-info');\n const createdBy = el.shadowRoot?.querySelector('.created-by');\n const dateSortedBy = el.shadowRoot?.querySelector('.date-sorted-by');\n\n expect(itemInfo).to.exist;\n expect(createdBy).to.not.exist;\n expect(dateSortedBy).to.exist;\n });\n\n it('should render with created-by when sort field is not a date', async () => {\n const el = await fixture<ItemTile>(\n html`<item-tile .model=${{ creator: 'someone' }}></item-tile>`\n );\n\n el.sortParam = {\n field: 'week',\n direction: 'asc',\n };\n await el.updateComplete;\n\n const itemInfo = el.shadowRoot?.querySelector('.item-info');\n const createdBy = el.shadowRoot?.querySelector('.created-by');\n const dateSortedBy = el.shadowRoot?.querySelector('.date-sorted-by');\n\n expect(itemInfo).to.exist;\n expect(dateSortedBy).to.not.exist; // it should not exist because this is not a date sort\n expect(createdBy).to.exist;\n });\n\n it('should render published date when sorting by it', async () => {\n const model: Partial<TileModel> = {\n dateAdded: new Date('2010-01-02'),\n dateArchived: new Date('2011-01-02'),\n datePublished: new Date('2012-01-02'),\n dateReviewed: new Date('2013-01-02'),\n };\n\n const el = await fixture<ItemTile>(html`\n <item-tile\n .model=${model}\n .sortParam=${{ field: 'date', direction: 'desc' }}\n >\n </item-tile>\n `);\n\n const dateSortedBy = el.shadowRoot?.querySelector('.date-sorted-by');\n expect(dateSortedBy).to.exist;\n expect(dateSortedBy?.textContent?.trim()).to.contain(\n 'published Jan 02, 2012'\n );\n });\n\n it('should render added date when sorting by it', async () => {\n const model: Partial<TileModel> = {\n dateAdded: new Date('2010-01-02'),\n dateArchived: new Date('2011-01-02'),\n datePublished: new Date('2012-01-02'),\n dateReviewed: new Date('2013-01-02'),\n };\n\n const el = await fixture<ItemTile>(html`\n <item-tile\n .model=${model}\n .sortParam=${{ field: 'addeddate', direction: 'desc' }}\n >\n </item-tile>\n `);\n\n const dateSortedBy = el.shadowRoot?.querySelector('.date-sorted-by');\n expect(dateSortedBy).to.exist;\n expect(dateSortedBy?.textContent?.trim()).to.contain('added Jan 02, 2010');\n });\n\n it('should render archived date when sorting by it', async () => {\n const model: Partial<TileModel> = {\n dateAdded: new Date('2010-01-02'),\n dateArchived: new Date('2011-01-02'),\n datePublished: new Date('2012-01-02'),\n dateReviewed: new Date('2013-01-02'),\n };\n\n const el = await fixture<ItemTile>(html`\n <item-tile\n .model=${model}\n .sortParam=${{ field: 'publicdate', direction: 'desc' }}\n >\n </item-tile>\n `);\n\n const dateSortedBy = el.shadowRoot?.querySelector('.date-sorted-by');\n expect(dateSortedBy).to.exist;\n expect(dateSortedBy?.textContent?.trim()).to.contain(\n 'archived Jan 02, 2011'\n );\n });\n\n it('should render reviewed date when sorting by it', async () => {\n const model: Partial<TileModel> = {\n dateAdded: new Date('2010-01-02'),\n dateArchived: new Date('2011-01-02'),\n datePublished: new Date('2012-01-02'),\n dateReviewed: new Date('2013-01-02'),\n };\n\n const el = await fixture<ItemTile>(html`\n <item-tile\n .model=${model}\n .sortParam=${{ field: 'reviewdate', direction: 'desc' }}\n >\n </item-tile>\n `);\n\n const dateSortedBy = el.shadowRoot?.querySelector('.date-sorted-by');\n expect(dateSortedBy).to.exist;\n expect(dateSortedBy?.textContent?.trim()).to.contain(\n 'reviewed Jan 02, 2013'\n );\n });\n\n it('should only show the year for a date published of Jan 1 at midnight UTC', async () => {\n const model: Partial<TileModel> = {\n datePublished: new Date(2012, 0, 1, 0, 0, 0, 0),\n };\n\n const el = await fixture<ItemTile>(html`\n <item-tile\n .model=${model}\n .sortParam=${{ field: 'date', direction: 'desc' }}\n >\n </item-tile>\n `);\n\n const dateSortedBy = el.shadowRoot?.querySelector('.date-sorted-by');\n expect(dateSortedBy).to.exist;\n expect(dateSortedBy?.textContent?.trim()).to.equal('published 2012');\n });\n\n it('should show full date added/archived/reviewed, even on Jan 1 at midnight UTC', async () => {\n const model: Partial<TileModel> = {\n dateAdded: new Date(2010, 0, 1, 0, 0, 0, 0),\n dateArchived: new Date(2011, 0, 1, 0, 0, 0, 0),\n datePublished: new Date(2012, 0, 1, 0, 0, 0, 0),\n dateReviewed: new Date(2013, 0, 1, 0, 0, 0, 0),\n };\n\n const el = await fixture<ItemTile>(html`\n <item-tile\n .model=${model}\n .sortParam=${{ field: 'addeddate', direction: 'desc' }}\n >\n </item-tile>\n `);\n\n let dateSortedBy = el.shadowRoot?.querySelector('.date-sorted-by');\n expect(dateSortedBy).to.exist;\n expect(dateSortedBy?.textContent?.trim()).to.equal('added Jan 01, 2010');\n\n el.sortParam = { field: 'publicdate', direction: 'desc' };\n await el.updateComplete;\n dateSortedBy = el.shadowRoot?.querySelector('.date-sorted-by');\n expect(dateSortedBy).to.exist;\n expect(dateSortedBy?.textContent?.trim()).to.equal('archived Jan 01, 2011');\n\n el.sortParam = { field: 'reviewdate', direction: 'desc' };\n await el.updateComplete;\n dateSortedBy = el.shadowRoot?.querySelector('.date-sorted-by');\n expect(dateSortedBy).to.exist;\n expect(dateSortedBy?.textContent?.trim()).to.equal('reviewed Jan 01, 2013');\n });\n\n it('should render with snippet block when it has snippets', async () => {\n const el = await fixture<ItemTile>(html`\n <item-tile .model=${{ snippets: ['some {{{snippet}}} text'] }}>\n </item-tile>\n `);\n\n const snippetBlock = el.shadowRoot?.querySelector('text-snippet-block');\n\n expect(snippetBlock).to.exist;\n });\n\n it('should not render snippet block when no snippets are present', async () => {\n const el = await fixture<ItemTile>(html`<item-tile></item-tile>`);\n\n const snippetBlock = el.shadowRoot?.querySelector('text-snippet-block');\n\n expect(snippetBlock).to.not.exist;\n });\n\n it('should render info button when showInfoButton flag is set', async () => {\n const el = await fixture<ItemTile>(html`\n <item-tile ?showInfoButton=${true}> </item-tile>\n `);\n\n const infoButton = el.shadowRoot?.querySelector('.info-button');\n\n expect(infoButton).to.exist;\n });\n\n it('should dispatch event when info button tapped', async () => {\n const infoButtonSpy = sinon.spy();\n const el = await fixture<ItemTile>(html`\n <item-tile ?showInfoButton=${true} @infoButtonPressed=${infoButtonSpy}>\n </item-tile>\n `);\n\n const infoButton = el.shadowRoot?.querySelector(\n '.info-button'\n ) as HTMLButtonElement;\n infoButton.click();\n await el.updateComplete;\n\n expect(infoButtonSpy.callCount).to.equal(1);\n });\n\n it('should render with volume/issue view', async () => {\n const el = await fixture<ItemTile>(html`\n <item-tile .model=${{ volume: '1', issue: 'Index' }}></item-tile>\n `);\n\n const volumeIssueBlock = el.shadowRoot?.querySelector('.volume-issue');\n\n expect(volumeIssueBlock).to.exist;\n });\n\n it('should render with volume/issue view to not render', async () => {\n const el = await fixture<ItemTile>(html`<item-tile></item-tile>`);\n\n const volumeIssueBlock = el.shadowRoot?.querySelector('.volume-issue');\n\n expect(volumeIssueBlock).to.not.exist;\n });\n});\n"]}
@@ -65,10 +65,10 @@ describe('List Tile Compact', () => {
65
65
  it('should render published date when sorting by it', async () => {
66
66
  var _a, _b;
67
67
  const model = {
68
- dateAdded: new Date('2010-01-01'),
69
- dateArchived: new Date('2011-01-01'),
70
- datePublished: new Date('2012-01-01'),
71
- dateReviewed: new Date('2013-01-01'),
68
+ dateAdded: new Date('2010-01-02'),
69
+ dateArchived: new Date('2011-01-02'),
70
+ datePublished: new Date('2012-01-02'),
71
+ dateReviewed: new Date('2013-01-02'),
72
72
  };
73
73
  const el = await fixture(html `
74
74
  <tile-list-compact
@@ -79,15 +79,15 @@ describe('List Tile Compact', () => {
79
79
  `);
80
80
  const dateColumn = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('date');
81
81
  expect(dateColumn).to.exist;
82
- expect((_b = dateColumn === null || dateColumn === void 0 ? void 0 : dateColumn.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.equal('Jan 01, 2012');
82
+ expect((_b = dateColumn === null || dateColumn === void 0 ? void 0 : dateColumn.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.equal('Jan 02, 2012');
83
83
  });
84
84
  it('should render added date when sorting by it', async () => {
85
85
  var _a, _b;
86
86
  const model = {
87
- dateAdded: new Date('2010-01-01'),
88
- dateArchived: new Date('2011-01-01'),
89
- datePublished: new Date('2012-01-01'),
90
- dateReviewed: new Date('2013-01-01'),
87
+ dateAdded: new Date('2010-01-02'),
88
+ dateArchived: new Date('2011-01-02'),
89
+ datePublished: new Date('2012-01-02'),
90
+ dateReviewed: new Date('2013-01-02'),
91
91
  };
92
92
  const el = await fixture(html `
93
93
  <tile-list-compact
@@ -98,15 +98,15 @@ describe('List Tile Compact', () => {
98
98
  `);
99
99
  const dateColumn = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('date');
100
100
  expect(dateColumn).to.exist;
101
- expect((_b = dateColumn === null || dateColumn === void 0 ? void 0 : dateColumn.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.equal('Jan 01, 2010');
101
+ expect((_b = dateColumn === null || dateColumn === void 0 ? void 0 : dateColumn.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.equal('Jan 02, 2010');
102
102
  });
103
103
  it('should render archived date when sorting by it', async () => {
104
104
  var _a, _b;
105
105
  const model = {
106
- dateAdded: new Date('2010-01-01'),
107
- dateArchived: new Date('2011-01-01'),
108
- datePublished: new Date('2012-01-01'),
109
- dateReviewed: new Date('2013-01-01'),
106
+ dateAdded: new Date('2010-01-02'),
107
+ dateArchived: new Date('2011-01-02'),
108
+ datePublished: new Date('2012-01-02'),
109
+ dateReviewed: new Date('2013-01-02'),
110
110
  };
111
111
  const el = await fixture(html `
112
112
  <tile-list-compact
@@ -117,15 +117,15 @@ describe('List Tile Compact', () => {
117
117
  `);
118
118
  const dateColumn = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('date');
119
119
  expect(dateColumn).to.exist;
120
- expect((_b = dateColumn === null || dateColumn === void 0 ? void 0 : dateColumn.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.equal('Jan 01, 2011');
120
+ expect((_b = dateColumn === null || dateColumn === void 0 ? void 0 : dateColumn.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.equal('Jan 02, 2011');
121
121
  });
122
122
  it('should render reviewed date when sorting by it', async () => {
123
123
  var _a, _b;
124
124
  const model = {
125
- dateAdded: new Date('2010-01-01'),
126
- dateArchived: new Date('2011-01-01'),
127
- datePublished: new Date('2012-01-01'),
128
- dateReviewed: new Date('2013-01-01'),
125
+ dateAdded: new Date('2010-01-02'),
126
+ dateArchived: new Date('2011-01-02'),
127
+ datePublished: new Date('2012-01-02'),
128
+ dateReviewed: new Date('2013-01-02'),
129
129
  };
130
130
  const el = await fixture(html `
131
131
  <tile-list-compact
@@ -136,7 +136,52 @@ describe('List Tile Compact', () => {
136
136
  `);
137
137
  const dateColumn = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('date');
138
138
  expect(dateColumn).to.exist;
139
- expect((_b = dateColumn === null || dateColumn === void 0 ? void 0 : dateColumn.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.equal('Jan 01, 2013');
139
+ expect((_b = dateColumn === null || dateColumn === void 0 ? void 0 : dateColumn.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.equal('Jan 02, 2013');
140
+ });
141
+ it('should only show the year for a date published of Jan 1 at midnight UTC', async () => {
142
+ var _a, _b;
143
+ const model = {
144
+ datePublished: new Date(2012, 0, 1, 0, 0, 0, 0),
145
+ };
146
+ const el = await fixture(html `
147
+ <tile-list-compact
148
+ .model=${model}
149
+ .sortParam=${{ field: 'date', direction: 'desc' }}
150
+ >
151
+ </tile-list-compact>
152
+ `);
153
+ const dateColumn = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('date');
154
+ expect(dateColumn).to.exist;
155
+ expect((_b = dateColumn === null || dateColumn === void 0 ? void 0 : dateColumn.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.equal('2012');
156
+ });
157
+ it('should show full date added/archived/reviewed, even on Jan 1 at midnight UTC', async () => {
158
+ var _a, _b, _c, _d, _e, _f;
159
+ const model = {
160
+ dateAdded: new Date(2010, 0, 1, 0, 0, 0, 0),
161
+ dateArchived: new Date(2011, 0, 1, 0, 0, 0, 0),
162
+ datePublished: new Date(2012, 0, 1, 0, 0, 0, 0),
163
+ dateReviewed: new Date(2013, 0, 1, 0, 0, 0, 0),
164
+ };
165
+ const el = await fixture(html `
166
+ <tile-list-compact
167
+ .model=${model}
168
+ .sortParam=${{ field: 'addeddate', direction: 'desc' }}
169
+ >
170
+ </tile-list-compact>
171
+ `);
172
+ let dateColumn = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('date');
173
+ expect(dateColumn).to.exist;
174
+ expect((_b = dateColumn === null || dateColumn === void 0 ? void 0 : dateColumn.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.equal('Jan 01, 2010');
175
+ el.sortParam = { field: 'publicdate', direction: 'desc' };
176
+ await el.updateComplete;
177
+ dateColumn = (_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.getElementById('date');
178
+ expect(dateColumn).to.exist;
179
+ expect((_d = dateColumn === null || dateColumn === void 0 ? void 0 : dateColumn.textContent) === null || _d === void 0 ? void 0 : _d.trim()).to.equal('Jan 01, 2011');
180
+ el.sortParam = { field: 'reviewdate', direction: 'desc' };
181
+ await el.updateComplete;
182
+ dateColumn = (_e = el.shadowRoot) === null || _e === void 0 ? void 0 : _e.getElementById('date');
183
+ expect(dateColumn).to.exist;
184
+ expect((_f = dateColumn === null || dateColumn === void 0 ? void 0 : dateColumn.textContent) === null || _f === void 0 ? void 0 : _f.trim()).to.equal('Jan 01, 2013');
140
185
  });
141
186
  });
142
187
  //# sourceMappingURL=tile-list-compact.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tile-list-compact.test.js","sourceRoot":"","sources":["../../../../test/tiles/list/tile-list-compact.test.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable import/no-duplicates */\nimport { expect, fixture } from '@open-wc/testing';\nimport { html } from 'lit';\nimport type { TileListCompact } from '../../../src/tiles/list/tile-list-compact';\n\nimport '../../../src/tiles/list/tile-list-compact';\nimport type { TileModel } from '../../../src/models';\n\ndescribe('List Tile Compact', () => {\n it('should render initial component', async () => {\n const el = await fixture<TileListCompact>(\n html`<tile-list-compact></tile-list-compact>`\n );\n\n const listContainer = el.shadowRoot?.querySelector('#list-line');\n const itemTitle = el.shadowRoot?.querySelector('#title');\n const imageBlock = el.shadowRoot?.querySelector('image-block');\n const itemIcon = el.shadowRoot?.querySelector('#icon');\n const itemViews = el.shadowRoot?.querySelector('#views');\n\n expect(listContainer).to.exist;\n expect(itemTitle).to.exist;\n expect(imageBlock).to.exist;\n expect(itemIcon).to.exist;\n expect(itemViews).to.exist;\n });\n\n it('should render with creator element with title', async () => {\n const el = await fixture<TileListCompact>(html`\n <tile-list-compact\n .model=${{ creators: ['someone'] }}\n ></tile-list-compact>\n `);\n\n const creator = el.shadowRoot?.querySelector('#creator');\n\n expect(creator).to.exist;\n });\n\n it('should render title link with model href if provided', async () => {\n const el = await fixture<TileListCompact>(html`\n <tile-list-compact\n .baseNavigationUrl=${''}\n .model=${{ title: 'foo', href: '/foo/bar' }}\n ></tile-list-compact>\n `);\n\n const title = el.shadowRoot?.querySelector('#title');\n\n expect(title).to.exist;\n expect(title?.getAttribute('href')).to.equal('/foo/bar');\n });\n\n it('should render weekly views when sorting by week', async () => {\n const el = await fixture<TileListCompact>(html`\n <tile-list-compact\n .model=${{ viewCount: 50, weeklyViewCount: 10 }}\n .sortParam=${{ field: 'week', direction: 'desc' }}\n >\n </tile-list-compact>\n `);\n\n const viewsColumn = el.shadowRoot?.getElementById('views');\n expect(viewsColumn).to.exist;\n expect(viewsColumn?.textContent?.trim()).to.equal('10');\n });\n\n it('should render 0 for views if missing model', async () => {\n const el = await fixture<TileListCompact>(html`\n <tile-list-compact .sortParam=${{ field: 'week', direction: 'desc' }}>\n </tile-list-compact>\n `);\n\n const viewsColumn = el.shadowRoot?.getElementById('views');\n expect(viewsColumn).to.exist;\n expect(viewsColumn?.textContent?.trim()).to.equal('0');\n });\n\n it('should render published date when sorting by it', async () => {\n const model: Partial<TileModel> = {\n dateAdded: new Date('2010-01-01'),\n dateArchived: new Date('2011-01-01'),\n datePublished: new Date('2012-01-01'),\n dateReviewed: new Date('2013-01-01'),\n };\n\n const el = await fixture<TileListCompact>(html`\n <tile-list-compact\n .model=${model}\n .sortParam=${{ field: 'date', direction: 'desc' }}\n >\n </tile-list-compact>\n `);\n\n const dateColumn = el.shadowRoot?.getElementById('date');\n expect(dateColumn).to.exist;\n expect(dateColumn?.textContent?.trim()).to.equal('Jan 01, 2012');\n });\n\n it('should render added date when sorting by it', async () => {\n const model: Partial<TileModel> = {\n dateAdded: new Date('2010-01-01'),\n dateArchived: new Date('2011-01-01'),\n datePublished: new Date('2012-01-01'),\n dateReviewed: new Date('2013-01-01'),\n };\n\n const el = await fixture<TileListCompact>(html`\n <tile-list-compact\n .model=${model}\n .sortParam=${{ field: 'addeddate', direction: 'desc' }}\n >\n </tile-list-compact>\n `);\n\n const dateColumn = el.shadowRoot?.getElementById('date');\n expect(dateColumn).to.exist;\n expect(dateColumn?.textContent?.trim()).to.equal('Jan 01, 2010');\n });\n\n it('should render archived date when sorting by it', async () => {\n const model: Partial<TileModel> = {\n dateAdded: new Date('2010-01-01'),\n dateArchived: new Date('2011-01-01'),\n datePublished: new Date('2012-01-01'),\n dateReviewed: new Date('2013-01-01'),\n };\n\n const el = await fixture<TileListCompact>(html`\n <tile-list-compact\n .model=${model}\n .sortParam=${{ field: 'publicdate', direction: 'desc' }}\n >\n </tile-list-compact>\n `);\n\n const dateColumn = el.shadowRoot?.getElementById('date');\n expect(dateColumn).to.exist;\n expect(dateColumn?.textContent?.trim()).to.equal('Jan 01, 2011');\n });\n\n it('should render reviewed date when sorting by it', async () => {\n const model: Partial<TileModel> = {\n dateAdded: new Date('2010-01-01'),\n dateArchived: new Date('2011-01-01'),\n datePublished: new Date('2012-01-01'),\n dateReviewed: new Date('2013-01-01'),\n };\n\n const el = await fixture<TileListCompact>(html`\n <tile-list-compact\n .model=${model}\n .sortParam=${{ field: 'reviewdate', direction: 'desc' }}\n >\n </tile-list-compact>\n `);\n\n const dateColumn = el.shadowRoot?.getElementById('date');\n expect(dateColumn).to.exist;\n expect(dateColumn?.textContent?.trim()).to.equal('Jan 01, 2013');\n });\n});\n"]}
1
+ {"version":3,"file":"tile-list-compact.test.js","sourceRoot":"","sources":["../../../../test/tiles/list/tile-list-compact.test.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAG3B,OAAO,2CAA2C,CAAC;AAGnD,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;;QAC/C,MAAM,EAAE,GAAG,MAAM,OAAO,CACtB,IAAI,CAAA,yCAAyC,CAC9C,CAAC;QAEF,MAAM,aAAa,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,YAAY,CAAC,CAAC;QACjE,MAAM,SAAS,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;QACzD,MAAM,UAAU,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,aAAa,CAAC,CAAC;QAC/D,MAAM,QAAQ,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,OAAO,CAAC,CAAC;QACvD,MAAM,SAAS,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;QAEzD,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAC/B,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAC3B,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAC5B,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAC1B,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;;QAC7D,MAAM,EAAE,GAAG,MAAM,OAAO,CAAkB,IAAI,CAAA;;iBAEjC,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE;;KAErC,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,UAAU,CAAC,CAAC;QAEzD,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;;QACpE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAkB,IAAI,CAAA;;6BAErB,EAAE;iBACd,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE;;KAE9C,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;QAErD,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QACvB,MAAM,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;;QAC/D,MAAM,EAAE,GAAG,MAAM,OAAO,CAAkB,IAAI,CAAA;;iBAEjC,EAAE,SAAS,EAAE,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE;qBAClC,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE;;;KAGpD,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,cAAc,CAAC,OAAO,CAAC,CAAC;QAC3D,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAC7B,MAAM,CAAC,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,WAAW,0CAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;;QAC1D,MAAM,EAAE,GAAG,MAAM,OAAO,CAAkB,IAAI,CAAA;sCACZ,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE;;KAErE,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,cAAc,CAAC,OAAO,CAAC,CAAC;QAC3D,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAC7B,MAAM,CAAC,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,WAAW,0CAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;;QAC/D,MAAM,KAAK,GAAuB;YAChC,SAAS,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC;YACjC,YAAY,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC;YACpC,aAAa,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC;YACrC,YAAY,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC;SACrC,CAAC;QAEF,MAAM,EAAE,GAAG,MAAM,OAAO,CAAkB,IAAI,CAAA;;iBAEjC,KAAK;qBACD,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE;;;KAGpD,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,cAAc,CAAC,MAAM,CAAC,CAAC;QACzD,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAC5B,MAAM,CAAC,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,WAAW,0CAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;;QAC3D,MAAM,KAAK,GAAuB;YAChC,SAAS,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC;YACjC,YAAY,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC;YACpC,aAAa,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC;YACrC,YAAY,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC;SACrC,CAAC;QAEF,MAAM,EAAE,GAAG,MAAM,OAAO,CAAkB,IAAI,CAAA;;iBAEjC,KAAK;qBACD,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE;;;KAGzD,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,cAAc,CAAC,MAAM,CAAC,CAAC;QACzD,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAC5B,MAAM,CAAC,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,WAAW,0CAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;;QAC9D,MAAM,KAAK,GAAuB;YAChC,SAAS,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC;YACjC,YAAY,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC;YACpC,aAAa,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC;YACrC,YAAY,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC;SACrC,CAAC;QAEF,MAAM,EAAE,GAAG,MAAM,OAAO,CAAkB,IAAI,CAAA;;iBAEjC,KAAK;qBACD,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE;;;KAG1D,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,cAAc,CAAC,MAAM,CAAC,CAAC;QACzD,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAC5B,MAAM,CAAC,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,WAAW,0CAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;;QAC9D,MAAM,KAAK,GAAuB;YAChC,SAAS,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC;YACjC,YAAY,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC;YACpC,aAAa,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC;YACrC,YAAY,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC;SACrC,CAAC;QAEF,MAAM,EAAE,GAAG,MAAM,OAAO,CAAkB,IAAI,CAAA;;iBAEjC,KAAK;qBACD,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE;;;KAG1D,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,cAAc,CAAC,MAAM,CAAC,CAAC;QACzD,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAC5B,MAAM,CAAC,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,WAAW,0CAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yEAAyE,EAAE,KAAK,IAAI,EAAE;;QACvF,MAAM,KAAK,GAAuB;YAChC,aAAa,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;SAChD,CAAC;QAEF,MAAM,EAAE,GAAG,MAAM,OAAO,CAAkB,IAAI,CAAA;;iBAEjC,KAAK;qBACD,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE;;;KAGpD,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,cAAc,CAAC,MAAM,CAAC,CAAC;QACzD,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAC5B,MAAM,CAAC,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,WAAW,0CAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8EAA8E,EAAE,KAAK,IAAI,EAAE;;QAC5F,MAAM,KAAK,GAAuB;YAChC,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAC3C,YAAY,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAC9C,aAAa,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAC/C,YAAY,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;SAC/C,CAAC;QAEF,MAAM,EAAE,GAAG,MAAM,OAAO,CAAkB,IAAI,CAAA;;iBAEjC,KAAK;qBACD,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE;;;KAGzD,CAAC,CAAC;QAEH,IAAI,UAAU,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,cAAc,CAAC,MAAM,CAAC,CAAC;QACvD,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAC5B,MAAM,CAAC,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,WAAW,0CAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAEjE,EAAE,CAAC,SAAS,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;QAC1D,MAAM,EAAE,CAAC,cAAc,CAAC;QACxB,UAAU,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,cAAc,CAAC,MAAM,CAAC,CAAC;QACnD,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAC5B,MAAM,CAAC,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,WAAW,0CAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAEjE,EAAE,CAAC,SAAS,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;QAC1D,MAAM,EAAE,CAAC,cAAc,CAAC;QACxB,UAAU,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,cAAc,CAAC,MAAM,CAAC,CAAC;QACnD,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAC5B,MAAM,CAAC,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,WAAW,0CAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["/* eslint-disable import/no-duplicates */\nimport { expect, fixture } from '@open-wc/testing';\nimport { html } from 'lit';\nimport type { TileListCompact } from '../../../src/tiles/list/tile-list-compact';\n\nimport '../../../src/tiles/list/tile-list-compact';\nimport type { TileModel } from '../../../src/models';\n\ndescribe('List Tile Compact', () => {\n it('should render initial component', async () => {\n const el = await fixture<TileListCompact>(\n html`<tile-list-compact></tile-list-compact>`\n );\n\n const listContainer = el.shadowRoot?.querySelector('#list-line');\n const itemTitle = el.shadowRoot?.querySelector('#title');\n const imageBlock = el.shadowRoot?.querySelector('image-block');\n const itemIcon = el.shadowRoot?.querySelector('#icon');\n const itemViews = el.shadowRoot?.querySelector('#views');\n\n expect(listContainer).to.exist;\n expect(itemTitle).to.exist;\n expect(imageBlock).to.exist;\n expect(itemIcon).to.exist;\n expect(itemViews).to.exist;\n });\n\n it('should render with creator element with title', async () => {\n const el = await fixture<TileListCompact>(html`\n <tile-list-compact\n .model=${{ creators: ['someone'] }}\n ></tile-list-compact>\n `);\n\n const creator = el.shadowRoot?.querySelector('#creator');\n\n expect(creator).to.exist;\n });\n\n it('should render title link with model href if provided', async () => {\n const el = await fixture<TileListCompact>(html`\n <tile-list-compact\n .baseNavigationUrl=${''}\n .model=${{ title: 'foo', href: '/foo/bar' }}\n ></tile-list-compact>\n `);\n\n const title = el.shadowRoot?.querySelector('#title');\n\n expect(title).to.exist;\n expect(title?.getAttribute('href')).to.equal('/foo/bar');\n });\n\n it('should render weekly views when sorting by week', async () => {\n const el = await fixture<TileListCompact>(html`\n <tile-list-compact\n .model=${{ viewCount: 50, weeklyViewCount: 10 }}\n .sortParam=${{ field: 'week', direction: 'desc' }}\n >\n </tile-list-compact>\n `);\n\n const viewsColumn = el.shadowRoot?.getElementById('views');\n expect(viewsColumn).to.exist;\n expect(viewsColumn?.textContent?.trim()).to.equal('10');\n });\n\n it('should render 0 for views if missing model', async () => {\n const el = await fixture<TileListCompact>(html`\n <tile-list-compact .sortParam=${{ field: 'week', direction: 'desc' }}>\n </tile-list-compact>\n `);\n\n const viewsColumn = el.shadowRoot?.getElementById('views');\n expect(viewsColumn).to.exist;\n expect(viewsColumn?.textContent?.trim()).to.equal('0');\n });\n\n it('should render published date when sorting by it', async () => {\n const model: Partial<TileModel> = {\n dateAdded: new Date('2010-01-02'),\n dateArchived: new Date('2011-01-02'),\n datePublished: new Date('2012-01-02'),\n dateReviewed: new Date('2013-01-02'),\n };\n\n const el = await fixture<TileListCompact>(html`\n <tile-list-compact\n .model=${model}\n .sortParam=${{ field: 'date', direction: 'desc' }}\n >\n </tile-list-compact>\n `);\n\n const dateColumn = el.shadowRoot?.getElementById('date');\n expect(dateColumn).to.exist;\n expect(dateColumn?.textContent?.trim()).to.equal('Jan 02, 2012');\n });\n\n it('should render added date when sorting by it', async () => {\n const model: Partial<TileModel> = {\n dateAdded: new Date('2010-01-02'),\n dateArchived: new Date('2011-01-02'),\n datePublished: new Date('2012-01-02'),\n dateReviewed: new Date('2013-01-02'),\n };\n\n const el = await fixture<TileListCompact>(html`\n <tile-list-compact\n .model=${model}\n .sortParam=${{ field: 'addeddate', direction: 'desc' }}\n >\n </tile-list-compact>\n `);\n\n const dateColumn = el.shadowRoot?.getElementById('date');\n expect(dateColumn).to.exist;\n expect(dateColumn?.textContent?.trim()).to.equal('Jan 02, 2010');\n });\n\n it('should render archived date when sorting by it', async () => {\n const model: Partial<TileModel> = {\n dateAdded: new Date('2010-01-02'),\n dateArchived: new Date('2011-01-02'),\n datePublished: new Date('2012-01-02'),\n dateReviewed: new Date('2013-01-02'),\n };\n\n const el = await fixture<TileListCompact>(html`\n <tile-list-compact\n .model=${model}\n .sortParam=${{ field: 'publicdate', direction: 'desc' }}\n >\n </tile-list-compact>\n `);\n\n const dateColumn = el.shadowRoot?.getElementById('date');\n expect(dateColumn).to.exist;\n expect(dateColumn?.textContent?.trim()).to.equal('Jan 02, 2011');\n });\n\n it('should render reviewed date when sorting by it', async () => {\n const model: Partial<TileModel> = {\n dateAdded: new Date('2010-01-02'),\n dateArchived: new Date('2011-01-02'),\n datePublished: new Date('2012-01-02'),\n dateReviewed: new Date('2013-01-02'),\n };\n\n const el = await fixture<TileListCompact>(html`\n <tile-list-compact\n .model=${model}\n .sortParam=${{ field: 'reviewdate', direction: 'desc' }}\n >\n </tile-list-compact>\n `);\n\n const dateColumn = el.shadowRoot?.getElementById('date');\n expect(dateColumn).to.exist;\n expect(dateColumn?.textContent?.trim()).to.equal('Jan 02, 2013');\n });\n\n it('should only show the year for a date published of Jan 1 at midnight UTC', async () => {\n const model: Partial<TileModel> = {\n datePublished: new Date(2012, 0, 1, 0, 0, 0, 0),\n };\n\n const el = await fixture<TileListCompact>(html`\n <tile-list-compact\n .model=${model}\n .sortParam=${{ field: 'date', direction: 'desc' }}\n >\n </tile-list-compact>\n `);\n\n const dateColumn = el.shadowRoot?.getElementById('date');\n expect(dateColumn).to.exist;\n expect(dateColumn?.textContent?.trim()).to.equal('2012');\n });\n\n it('should show full date added/archived/reviewed, even on Jan 1 at midnight UTC', async () => {\n const model: Partial<TileModel> = {\n dateAdded: new Date(2010, 0, 1, 0, 0, 0, 0),\n dateArchived: new Date(2011, 0, 1, 0, 0, 0, 0),\n datePublished: new Date(2012, 0, 1, 0, 0, 0, 0),\n dateReviewed: new Date(2013, 0, 1, 0, 0, 0, 0),\n };\n\n const el = await fixture<TileListCompact>(html`\n <tile-list-compact\n .model=${model}\n .sortParam=${{ field: 'addeddate', direction: 'desc' }}\n >\n </tile-list-compact>\n `);\n\n let dateColumn = el.shadowRoot?.getElementById('date');\n expect(dateColumn).to.exist;\n expect(dateColumn?.textContent?.trim()).to.equal('Jan 01, 2010');\n\n el.sortParam = { field: 'publicdate', direction: 'desc' };\n await el.updateComplete;\n dateColumn = el.shadowRoot?.getElementById('date');\n expect(dateColumn).to.exist;\n expect(dateColumn?.textContent?.trim()).to.equal('Jan 01, 2011');\n\n el.sortParam = { field: 'reviewdate', direction: 'desc' };\n await el.updateComplete;\n dateColumn = el.shadowRoot?.getElementById('date');\n expect(dateColumn).to.exist;\n expect(dateColumn?.textContent?.trim()).to.equal('Jan 01, 2013');\n });\n});\n"]}