1
0
mirror of https://github.com/laurent22/joplin.git synced 2025-03-29 21:21:15 +02:00

All: Fixes : Ensure that note revision markup type is set correctly

This commit is contained in:
Laurent Cozic 2022-03-12 16:23:30 +00:00
parent f4ec73ab0e
commit addcfb0129
2 changed files with 53 additions and 3 deletions

@ -4,10 +4,11 @@ import Setting from '../models/Setting';
import Note from '../models/Note';
import ItemChange from '../models/ItemChange';
import Revision from '../models/Revision';
import BaseModel from '../BaseModel';
import BaseModel, { ModelType } from '../BaseModel';
import RevisionService from '../services/RevisionService';
import { MarkupLanguage } from '../../renderer';
describe('services_Revision', function() {
describe('services/RevisionService', function() {
beforeEach(async (done) => {
await setupDatabaseAndSynchronizer(1);
@ -503,4 +504,51 @@ describe('services_Revision', function() {
expect(error.message).toContain(corruptedMetadata);
});
it('note revisions should include certain required properties', async () => {
const revisions = [
{
id: '2b7d7aa51f944aa5b63b8453e1182cb0',
parent_id: '',
item_type: 1,
item_id: 'cc333327a8d64456a73773b13f22a1ce',
item_updated_time: 1647101206511,
title_diff: '[{"diffs":[[1,"hello"]],"start1":0,"start2":0,"length1":0,"length2":5}]',
body_diff: '[]',
metadata_diff: '{"new":{},"deleted":[]}',
encryption_applied: 0,
type_: 13,
},
{
id: 'd2e1cd8433364bcba8e689aaa20dfef2',
parent_id: '2b7d7aa51f944aa5b63b8453e1182cb0',
item_type: 1,
item_id: 'cc333327a8d64456a73773b13f22a1ce',
item_updated_time: 1647101206622,
title_diff: '[{"diffs":[[0,"hello"],[1," welcome"]],"start1":0,"start2":0,"length1":5,"length2":13}]',
body_diff: '[]',
metadata_diff: '{"new":{},"deleted":[]}',
encryption_applied: 0,
type_: 13,
},
];
const note1 = await revisionService().revisionNote(revisions, 1);
expect(note1.title).toBe('hello welcome');
expect(note1.body).toBe('');
expect(note1.markup_language).toBe(MarkupLanguage.Markdown);
expect(note1.type_).toBe(ModelType.Note);
// Check that it's not overidding the property if it's already set
const revisions2 = revisions.slice();
revisions2[0] = {
...revisions2[0],
metadata_diff: '{"new":{"markup_language":2},"deleted":[]}',
};
const note2 = await revisionService().revisionNote(revisions2, 1);
expect(note2.markup_language).toBe(MarkupLanguage.Html);
});
});

@ -10,6 +10,7 @@ import BaseService from './BaseService';
import { _ } from '../locale';
import { ItemChangeEntity, NoteEntity, RevisionEntity } from './database/types';
import Logger from '../Logger';
import { MarkupLanguage } from '../../renderer';
const { substrWithEllipsis } = require('../string-utils');
const { sprintf } = require('sprintf-js');
const { wrapError } = require('../errorUtils');
@ -217,7 +218,7 @@ export default class RevisionService extends BaseService {
return Revision.deleteOldRevisions(ttl);
}
async revisionNote(revisions: RevisionEntity[], index: number) {
public async revisionNote(revisions: RevisionEntity[], index: number) {
if (index < 0 || index >= revisions.length) throw new Error(`Invalid revision index: ${index}`);
const rev = revisions[index];
@ -233,6 +234,7 @@ export default class RevisionService extends BaseService {
output.updated_time = output.user_updated_time;
output.created_time = output.user_created_time;
(output as any).type_ = BaseModel.TYPE_NOTE;
if (!('markup_language' in output)) output.markup_language = MarkupLanguage.Markdown;
return output;
}