Skip to content

Commit

Permalink
Roll out domain model language for an evaluation digest #3239
Browse files Browse the repository at this point in the history
  • Loading branch information
erkannt committed May 14, 2024
1 parent 407cdf0 commit bdd7dc7
Show file tree
Hide file tree
Showing 7 changed files with 34 additions and 34 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -34,31 +34,31 @@ export const toEvaluationPublishedFeedItem = (dependencies: Dependencies) => (
dependencies.fetchEvaluationHumanReadableOriginalUrl,
T.map(O.fromEither),
),
review: pipe(
evaluationDigest: pipe(
evaluation.evaluationLocator,
dependencies.fetchEvaluationDigest,
TE.match(
() => ({
fullText: O.none,
fullTextLanguageCode: O.none,
digest: O.none,
digestLanguageCode: O.none,
}),
(digest) => ({
fullText: O.some(digest),
fullTextLanguageCode: detectLanguage(digest),
digest: O.some(digest),
digestLanguageCode: detectLanguage(digest),
}),
),
),
},
sequenceS(T.ApplyPar),
T.map(({
groupDetails, review, sourceHref,
groupDetails, evaluationDigest, sourceHref,
}) => ({
type: 'evaluation-published' as const,
id: evaluation.evaluationLocator,
sourceHref,
publishedAt: evaluation.publishedAt,
...groupDetails,
fullText: O.map(sanitise)(review.fullText),
fullTextLanguageCode: review.fullTextLanguageCode,
digest: O.map(sanitise)(evaluationDigest.digest),
digestLanguageCode: evaluationDigest.digestLanguageCode,
})),
);
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { htmlEscape } from 'escape-goat';
import * as O from 'fp-ts/Option';
import { constant, flow, pipe } from 'fp-ts/function';
import clip from 'text-clipper';
import { missingFullTextAndSourceLink } from './static-messages';
import { missingDigestAndSourceLink } from './static-messages';
import * as EL from '../../../../types/evaluation-locator';
import { HtmlFragment, toHtmlFragment } from '../../../../types/html-fragment';
import { templateDate } from '../../shared-components/date';
Expand Down Expand Up @@ -38,28 +38,28 @@ const appendSourceLink = flow(
)),
);

const renderWithText = (teaserChars: number, review: EvaluationPublishedFeedItem, fullText: string) => {
const teaserText = clip(fullText, teaserChars, { html: true });
const fulltextAndSourceLink = `
<div${renderLangAttribute(review.fullTextLanguageCode)}>${fullText}</div>
const renderWhenDigestAvailable = (teaserChars: number, review: EvaluationPublishedFeedItem, digest: string) => {
const teaserText = clip(digest, teaserChars, { html: true });
const digestAndSourceLink = `
<div${renderLangAttribute(review.digestLanguageCode)}>${digest}</div>
${pipe(review, appendSourceLink, O.getOrElse(constant('')))}
`;
let feedItemBody = `
<div class="activity-feed__item__body" data-behaviour="collapse_to_teaser">
<div class="hidden" data-teaser${renderLangAttribute(review.fullTextLanguageCode)}>
<div class="hidden" data-teaser${renderLangAttribute(review.digestLanguageCode)}>
${teaserText}
</div>
<div data-full-text>
${fulltextAndSourceLink}
${digestAndSourceLink}
</div>
</div>
`;

if (teaserText === fullText) {
if (teaserText === digest) {
feedItemBody = `
<div class="activity-feed__item__body">
<div>
${fulltextAndSourceLink}
${digestAndSourceLink}
</div>
</div>
`;
Expand All @@ -75,17 +75,17 @@ const renderWithText = (teaserChars: number, review: EvaluationPublishedFeedItem
`;
};

const renderSourceLinkWhenFulltextMissing = (review: EvaluationPublishedFeedItem) => pipe(
const renderSourceLinkWhenDigestMissing = (review: EvaluationPublishedFeedItem) => pipe(
review,
appendSourceLink,
O.getOrElse(constant(missingFullTextAndSourceLink)),
O.getOrElse(constant(missingDigestAndSourceLink)),
);

export const renderEvaluationPublishedFeedItem = (
feedItem: EvaluationPublishedFeedItem,
teaserChars: number,
): HtmlFragment => pipe(
feedItem.fullText,
feedItem.digest,
O.match(
() => `
<article class="activity-feed__item__contents" id="${EL.evaluationLocatorCodec.encode(feedItem.id)}">
Expand All @@ -95,12 +95,12 @@ export const renderEvaluationPublishedFeedItem = (
</header>
<div class="activity-feed__item__body">
<div>
${renderSourceLinkWhenFulltextMissing(feedItem)}
${renderSourceLinkWhenDigestMissing(feedItem)}
</div>
</div>
</article>
`,
(fullText) => renderWithText(teaserChars, feedItem, fullText),
(digest) => renderWhenDigestAvailable(teaserChars, feedItem, digest),
),
toHtmlFragment,
);
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@ import { toHtmlFragment } from '../../../../types/html-fragment';

const retryLater = toHtmlFragment('Please try refreshing this page, or try again later.');

export const missingFullTextAndSourceLink = toHtmlFragment(`We are unable to display this evaluation right now. ${retryLater}`);
export const missingDigestAndSourceLink = toHtmlFragment(`We are unable to display this evaluation right now. ${retryLater}`);
4 changes: 2 additions & 2 deletions src/read-side/html-pages/paper-activity-page/view-model.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ export type EvaluationPublishedFeedItem = {
groupName: string,
groupHref: string,
groupAvatarSrc: string,
fullText: O.Option<SanitisedHtmlFragment>,
fullTextLanguageCode: O.Option<LanguageCode>,
digest: O.Option<SanitisedHtmlFragment>,
digestLanguageCode: O.Option<LanguageCode>,
};

export type ExpressionPublishedFeedItem = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import { arbitraryRecordedEvaluation } from '../../../../types/recorded-evaluati
describe('to-evaluation-published-feed-item', () => {
let framework: TestFramework;
let sourceHref: EvaluationPublishedFeedItem['sourceHref'];
let fullText: EvaluationPublishedFeedItem['fullText'];
let fullText: EvaluationPublishedFeedItem['digest'];

beforeEach(async () => {
framework = createTestFramework();
Expand Down Expand Up @@ -64,7 +64,7 @@ describe('to-evaluation-published-feed-item', () => {
...framework.dependenciesForViews,
fetchEvaluationDigest: () => TE.right(digest),
}),
T.map((feedItem) => feedItem.fullText),
T.map((feedItem) => feedItem.digest),
)();
});

Expand All @@ -81,7 +81,7 @@ describe('to-evaluation-published-feed-item', () => {
...framework.dependenciesForViews,
fetchEvaluationDigest: () => TE.left(arbitraryDataError()),
}),
T.map((feedItem) => feedItem.fullText),
T.map((feedItem) => feedItem.digest),
)();
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,18 +17,18 @@ export const arbitrary = (): EvaluationPublishedFeedItem => ({
groupHref: arbitraryWord(),
groupName: 'group 1',
groupAvatarSrc: '/avatar',
fullText: pipe(arbitraryString(), toHtmlFragment, sanitise, O.some),
fullTextLanguageCode: O.none,
digest: pipe(arbitraryString(), toHtmlFragment, sanitise, O.some),
digestLanguageCode: O.none,
});

export const withFullText = (fullText: string) => (rfi: EvaluationPublishedFeedItem): EvaluationPublishedFeedItem => ({
...rfi,
fullText: pipe(fullText, toHtmlFragment, sanitise, O.some),
digest: pipe(fullText, toHtmlFragment, sanitise, O.some),
});

export const withNoFullText = (rfi: EvaluationPublishedFeedItem): EvaluationPublishedFeedItem => ({
...rfi,
fullText: O.none,
digest: O.none,
});

export const withSource = (uri: string) => (rfi: EvaluationPublishedFeedItem): EvaluationPublishedFeedItem => ({
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { load } from 'cheerio';
import { pipe } from 'fp-ts/function';
import { renderEvaluationPublishedFeedItem } from '../../../../../src/read-side/html-pages/paper-activity-page/render-as-html/render-evaluation-published-feed-item';
import { missingFullTextAndSourceLink } from '../../../../../src/read-side/html-pages/paper-activity-page/render-as-html/static-messages';
import { missingDigestAndSourceLink } from '../../../../../src/read-side/html-pages/paper-activity-page/render-as-html/static-messages';
import { EvaluationLocator, evaluationLocatorCodec } from '../../../../../src/types/evaluation-locator';
import { arbitraryNumber, arbitraryWord } from '../../../../helpers';
import * as RFI from '../evaluation-feed-item.helper';
Expand Down Expand Up @@ -92,7 +92,7 @@ describe('render-evaluation-feed-item', () => {
const result = renderEvaluationPublishedFeedItem(item, arbitraryNumber(6, 10));

it('displays a message that the evaluation is unavailable', () => {
expect(result).toContain(missingFullTextAndSourceLink);
expect(result).toContain(missingDigestAndSourceLink);
});
});
});
Expand Down

0 comments on commit bdd7dc7

Please sign in to comment.