diff --git a/lib/parse/__tests__/news.test.ts b/lib/parse/__tests__/news.test.ts
index 29648fc0..6da88eec 100644
--- a/lib/parse/__tests__/news.test.ts
+++ b/lib/parse/__tests__/news.test.ts
@@ -4,92 +4,182 @@ import { news, newsItemDetails } from '../news'
let response: EtjanstResponse
describe('news', () => {
- beforeEach(() => {
- response = {
- Success: true,
- Error: null,
- Data: {
- CurrentChild: null,
- NewsItems: [
- {
- NewsId: 'news id',
- SiteId:
- 'elevstockholm.sharepoint.com,27892ACC-BA2E-4DEC-97B8-25F7098C3BF6,A239466A-9A52-42FF-8A3F-D94C342F2700',
- NewsListId: '3EC323A1-EA16-4D24-84C8-DAA49E76F9F4',
- NewsItemId:
- 'elevstockholm.sharepoint.com,27892ACC-BA2E-4DEC-97B8-25F7098C3BF6,A239466A-9A52-42FF-8A3F-D94C342F2700_99',
- Header: 'Problemet med att se betyg i bild, slöjd och teknik löst!',
- PublicationDate: '/Date(1608304542000)/',
- PubDateSE: '18 december 2020 16:15',
- ModifiedDate: '/Date(1608304680000)/',
- ModDateSE: '18 december 2020 16:18',
- Source: 'Livets hårda skolklasser',
- Preamble:
- 'Hej,Nu är problemet löst! Alla betyg syns som de ska.God jul!...',
- BannerImageUrl: 'A703552D-DBF3-45B0-8E67-6E062105A0C5.jpeg',
- BannerImageGuid: 'A703552D-DBF3-45B0-8E67-6E062105A0C5',
- BannerImageListId: 'FFBE49E9-BDE1-4C75-BA0E-D98D4E2FCF21',
- Body:
- '
Hej,
Nu är problemet löst! Alla betyg syns som de ska.
God jul!
',
- BodyNoHtml: null,
- AuthorDisplayName: 'Eva-Lotta Rönnberg',
- altText: 'Nyhetsbild. Bildtext ej tillgänglig.',
- },
- ],
- ViewGlobalTranslations: {},
- ViewLocalTranslations: {},
- Children: null,
- Status: null,
- GlobalTranslationIds: [
- 'InformationalHeader',
- 'ContactUsMessageLabel',
- 'Send',
- 'RequiredFieldMessageInfo',
- 'Sex',
- 'Male',
- 'Female',
- 'SSN',
- 'FirstName',
- 'LastName',
- 'Email',
- 'Zip',
- 'Address',
- 'ValidationRequiredFieldMessage',
- 'ValidationErrorMessage',
- ],
- LocalTranslationIds: ['IndexPageHeading1'],
- },
- }
- })
- it(' news items (except body) correctly', () => {
- const [item] = news(response)
+ describe('parsing', () => {
+ beforeEach(() => {
+ response = {
+ Success: true,
+ Error: null,
+ Data: {
+ CurrentChild: null,
+ NewsItems: [
+ {
+ NewsId: 'news id',
+ SiteId:
+ 'elevstockholm.sharepoint.com,27892ACC-BA2E-4DEC-97B8-25F7098C3BF6,A239466A-9A52-42FF-8A3F-D94C342F2700',
+ NewsListId: '3EC323A1-EA16-4D24-84C8-DAA49E76F9F4',
+ NewsItemId:
+ 'elevstockholm.sharepoint.com,27892ACC-BA2E-4DEC-97B8-25F7098C3BF6,A239466A-9A52-42FF-8A3F-D94C342F2700_99',
+ Header: 'Problemet med att se betyg i bild, slöjd och teknik löst!',
+ PublicationDate: '/Date(1608304542000)/',
+ PubDateSE: '18 december 2020 16:15',
+ ModifiedDate: '/Date(1608304680000)/',
+ ModDateSE: '18 december 2020 16:18',
+ Source: 'Livets hårda skolklasser',
+ Preamble:
+ 'Hej,Nu är problemet löst! Alla betyg syns som de ska.God jul!...',
+ BannerImageUrl: 'A703552D-DBF3-45B0-8E67-6E062105A0C5.jpeg',
+ BannerImageGuid: 'A703552D-DBF3-45B0-8E67-6E062105A0C5',
+ BannerImageListId: 'FFBE49E9-BDE1-4C75-BA0E-D98D4E2FCF21',
+ Body:
+ 'Hej,
Nu är problemet löst! Alla betyg syns som de ska.
God jul!
',
+ BodyNoHtml: null,
+ AuthorDisplayName: 'Eva-Lotta Rönnberg',
+ altText: 'Nyhetsbild. Bildtext ej tillgänglig.',
+ },
+ ],
+ ViewGlobalTranslations: {},
+ ViewLocalTranslations: {},
+ Children: null,
+ Status: null,
+ GlobalTranslationIds: [
+ 'InformationalHeader',
+ 'ContactUsMessageLabel',
+ 'Send',
+ 'RequiredFieldMessageInfo',
+ 'Sex',
+ 'Male',
+ 'Female',
+ 'SSN',
+ 'FirstName',
+ 'LastName',
+ 'Email',
+ 'Zip',
+ 'Address',
+ 'ValidationRequiredFieldMessage',
+ 'ValidationErrorMessage',
+ ],
+ LocalTranslationIds: ['IndexPageHeading1'],
+ },
+ }
+ })
+ it(' news items (except body) correctly', () => {
+ const [item] = news(response)
- expect(item.id).toEqual('news id')
- expect(item.author).toEqual('Eva-Lotta Rönnberg')
- expect(item.header).toEqual(
- 'Problemet med att se betyg i bild, slöjd och teknik löst!'
- )
- expect(item.imageUrl).toEqual('A703552D-DBF3-45B0-8E67-6E062105A0C5.jpeg')
- expect(item.fullImageUrl).toEqual(
- 'https://etjanst.stockholm.se/Vardnadshavare/inloggad2/NewsBanner?url=A703552D-DBF3-45B0-8E67-6E062105A0C5.jpeg'
- )
- expect(item.imageAltText).toEqual('Nyhetsbild. Bildtext ej tillgänglig.')
- expect(item.intro).toEqual(
- 'Hej, Nu är problemet löst! Alla betyg syns som de ska. God jul!...'
- )
- expect(item.modified).toEqual('2020-12-18T15:18:00.000Z')
- expect(item.published).toEqual('2020-12-18T15:15:42.000Z')
- })
- it(' body correctly', () => {
- const [item] = news(response)
+ expect(item.id).toEqual('news id')
+ expect(item.author).toEqual('Eva-Lotta Rönnberg')
+ expect(item.header).toEqual(
+ 'Problemet med att se betyg i bild, slöjd och teknik löst!'
+ )
+ expect(item.imageUrl).toEqual('A703552D-DBF3-45B0-8E67-6E062105A0C5.jpeg')
+ expect(item.fullImageUrl).toEqual(
+ 'https://etjanst.stockholm.se/Vardnadshavare/inloggad2/NewsBanner?url=A703552D-DBF3-45B0-8E67-6E062105A0C5.jpeg'
+ )
+ expect(item.imageAltText).toEqual('Nyhetsbild. Bildtext ej tillgänglig.')
+ expect(item.intro).toEqual(
+ 'Hej, Nu är problemet löst! Alla betyg syns som de ska. God jul!...'
+ )
+ expect(item.modified).toEqual('2020-12-18T15:18:00.000Z')
+ expect(item.published).toEqual('2020-12-18T15:15:42.000Z')
+ })
+ it(' body correctly', () => {
+ const [item] = news(response)
- const expected =
- 'Hej, Nu är problemet löst! Alla betyg syns som de ska. God jul!'
- const trimmed = (item.body || '')
- .split('\n')
- .map((t) => t.trim())
- .join(' ')
- expect(trimmed).toEqual(expected)
+ const expected =
+ 'Hej, Nu är problemet löst! Alla betyg syns som de ska. God jul!'
+ const trimmed = (item.body || '')
+ .split('\n')
+ .map((t) => t.trim())
+ .join(' ')
+ expect(trimmed).toEqual(expected)
+ })
+ })
+ describe('sorting', () => {
+ beforeEach(() => {
+ response = {
+ Success: true,
+ Error: null,
+ Data: {
+ CurrentChild: null,
+ NewsItems: [
+ {
+ NewsId: 'news id',
+ SiteId:
+ 'elevstockholm.sharepoint.com,27892ACC-BA2E-4DEC-97B8-25F7098C3BF6,A239466A-9A52-42FF-8A3F-D94C342F2700',
+ NewsListId: '3EC323A1-EA16-4D24-84C8-DAA49E76F9F4',
+ NewsItemId:
+ 'elevstockholm.sharepoint.com,27892ACC-BA2E-4DEC-97B8-25F7098C3BF6,A239466A-9A52-42FF-8A3F-D94C342F2700_99',
+ Header: 'Problemet med att se betyg i bild, slöjd och teknik löst!',
+ PublicationDate: '/Date(1608304542000)/',
+ PubDateSE: '18 december 2020 16:15',
+ ModifiedDate: '/Date(1608304680000)/',
+ ModDateSE: '18 december 2020 16:18',
+ Source: 'Livets hårda skolklasser',
+ Preamble:
+ 'Hej,Nu är problemet löst! Alla betyg syns som de ska.God jul!...',
+ BannerImageUrl: 'A703552D-DBF3-45B0-8E67-6E062105A0C5.jpeg',
+ BannerImageGuid: 'A703552D-DBF3-45B0-8E67-6E062105A0C5',
+ BannerImageListId: 'FFBE49E9-BDE1-4C75-BA0E-D98D4E2FCF21',
+ Body:
+ 'Hej,
Nu är problemet löst! Alla betyg syns som de ska.
God jul!
',
+ BodyNoHtml: null,
+ AuthorDisplayName: 'Eva-Lotta Rönnberg',
+ altText: 'Nyhetsbild. Bildtext ej tillgänglig.',
+ },
+ {
+ NewsId: 'news id updated',
+ SiteId:
+ 'elevstockholm.sharepoint.com,27892ACC-BA2E-4DEC-97B8-25F7098C3BF6,A239466A-9A52-42FF-8A3F-D94C342F2700',
+ NewsListId: '3EC323A1-EA16-4D24-84C8-DAA49E76F9F4',
+ NewsItemId:
+ 'elevstockholm.sharepoint.com,27892ACC-BA2E-4DEC-97B8-25F7098C3BF6,A239466A-9A52-42FF-8A3F-D94C342F2700_99',
+ Header: 'Problemet med att se betyg i bild, slöjd och teknik löst!',
+ PublicationDate: '/Date(1608304542000)/',
+ PubDateSE: '18 november 2021 16:15',
+ ModifiedDate: '/Date(1608304680000)/',
+ ModDateSE: '18 december 2020 16:18',
+ Source: 'Livets hårda skolklasser',
+ Preamble:
+ 'Hej,Nu är problemet löst! Alla betyg syns som de ska.God jul!...',
+ BannerImageUrl: 'A703552D-DBF3-45B0-8E67-6E062105A0C5.jpeg',
+ BannerImageGuid: 'A703552D-DBF3-45B0-8E67-6E062105A0C5',
+ BannerImageListId: 'FFBE49E9-BDE1-4C75-BA0E-D98D4E2FCF21',
+ Body:
+ 'Hej,
Nu är problemet löst! Alla betyg syns som de ska.
God jul!
',
+ BodyNoHtml: null,
+ AuthorDisplayName: 'Eva-Lotta Rönnberg',
+ altText: 'Nyhetsbild. Bildtext ej tillgänglig.',
+ },
+ ],
+ ViewGlobalTranslations: {},
+ ViewLocalTranslations: {},
+ Children: null,
+ Status: null,
+ GlobalTranslationIds: [
+ 'InformationalHeader',
+ 'ContactUsMessageLabel',
+ 'Send',
+ 'RequiredFieldMessageInfo',
+ 'Sex',
+ 'Male',
+ 'Female',
+ 'SSN',
+ 'FirstName',
+ 'LastName',
+ 'Email',
+ 'Zip',
+ 'Address',
+ 'ValidationRequiredFieldMessage',
+ 'ValidationErrorMessage',
+ ],
+ LocalTranslationIds: ['IndexPageHeading1'],
+ },
+ }
+ })
+ it('sorts by modified date desc', () => {
+ const [item] = news(response)
+
+ expect(item.id).toEqual('news id updated')
+ })
})
})
diff --git a/lib/parse/news.ts b/lib/parse/news.ts
index 505e9911..5bbbd05c 100644
--- a/lib/parse/news.ts
+++ b/lib/parse/news.ts
@@ -29,8 +29,14 @@ export const newsItem = ({
body: toMarkdown(body),
})
+const newsSort = (item1: NewsItem, item2: NewsItem): number => {
+ const m1 = item1.modified || item1.published
+ const m2 = item2.modified || item2.published
+ return m1 < m2 ? 1 : -1
+}
+
export const news = (data: any): NewsItem[] =>
- etjanst(data).newsItems.map(newsItem)
+ etjanst(data).newsItems.map(newsItem).sort(newsSort)
export const newsItemDetails = (data: any): NewsItem =>
newsItem(etjanst(data).currentNewsItem)