Changeset View
Changeset View
Standalone View
Standalone View
lib/types/validation.test.js
// @flow | // @flow | ||||
import _findKey from 'lodash/fp/findKey.js'; | import _findKey from 'lodash/fp/findKey.js'; | ||||
import { | import { | ||||
imageValidator, | imageValidator, | ||||
videoValidator, | videoValidator, | ||||
mediaValidator, | mediaValidator, | ||||
} from './media-types.js'; | } from './media-types.js'; | ||||
import { messageTypes } from './message-types-enum.js'; | import { messageTypes } from './message-types-enum.js'; | ||||
import { rawSidebarSourceMessageInfoValidator } from './message-types.js'; | import { messageSpecs } from '../shared/messages/message-specs.js'; | ||||
import { rawAddMembersMessageInfoValidator } from './messages/add-members.js'; | |||||
import { rawChangeRoleMessageInfoValidator } from './messages/change-role.js'; | |||||
import { rawChangeSettingsMessageInfoValidator } from './messages/change-settings.js'; | |||||
import { rawCreateEntryMessageInfoValidator } from './messages/create-entry.js'; | |||||
import { rawCreateSidebarMessageInfoValidator } from './messages/create-sidebar.js'; | |||||
import { rawCreateSubthreadMessageInfoValidator } from './messages/create-subthread.js'; | |||||
import { rawCreateThreadMessageInfoValidator } from './messages/create-thread.js'; | |||||
import { rawDeleteEntryMessageInfoValidator } from './messages/delete-entry.js'; | |||||
import { rawEditEntryMessageInfoValidator } from './messages/edit-entry.js'; | |||||
import { rawEditMessageInfoValidator } from './messages/edit.js'; | |||||
import { rawImagesMessageInfoValidator } from './messages/images.js'; | |||||
import { rawJoinThreadMessageInfoValidator } from './messages/join-thread.js'; | |||||
import { rawLeaveThreadMessageInfoValidator } from './messages/leave-thread.js'; | |||||
import { rawMediaMessageInfoValidator } from './messages/media.js'; | |||||
import { rawReactionMessageInfoValidator } from './messages/reaction.js'; | |||||
import { rawRemoveMembersMessageInfoValidator } from './messages/remove-members.js'; | |||||
import { rawRestoreEntryMessageInfoValidator } from './messages/restore-entry.js'; | |||||
import { rawTextMessageInfoValidator } from './messages/text.js'; | |||||
import { rawTogglePinMessageInfoValidator } from './messages/toggle-pin.js'; | |||||
import { rawUnsupportedMessageInfoValidator } from './messages/unsupported.js'; | |||||
import { rawUpdateRelationshipMessageInfoValidator } from './messages/update-relationship.js'; | |||||
describe('media validation', () => { | describe('media validation', () => { | ||||
const photo = { | const photo = { | ||||
id: '92696', | id: '92696', | ||||
type: 'photo', | type: 'photo', | ||||
uri: 'http://0.0.0.0:3000/comm/upload/92696/0fb272bd1c75d976', | uri: 'http://0.0.0.0:3000/comm/upload/92696/0fb272bd1c75d976', | ||||
dimensions: { | dimensions: { | ||||
width: 340, | width: 340, | ||||
▲ Show 20 Lines • Show All 268 Lines • ▼ Show 20 Lines | const messages = [ | ||||
action: 'pin', | action: 'pin', | ||||
pinnedContent: 'text', | pinnedContent: 'text', | ||||
creatorID: '83928', | creatorID: '83928', | ||||
time: 1682083295820, | time: 1682083295820, | ||||
id: '92943', | id: '92943', | ||||
}, | }, | ||||
]; | ]; | ||||
const validatorByMessageType = { | for (const validatorMessageTypeName in messageTypes) { | ||||
'0': rawTextMessageInfoValidator, | const validatorMessageType = messageTypes[validatorMessageTypeName]; | ||||
'1': rawCreateThreadMessageInfoValidator, | const validator = messageSpecs[validatorMessageType].validator; | ||||
'2': rawAddMembersMessageInfoValidator, | |||||
'3': rawCreateSubthreadMessageInfoValidator, | |||||
'4': rawChangeSettingsMessageInfoValidator, | |||||
'5': rawRemoveMembersMessageInfoValidator, | |||||
'6': rawChangeRoleMessageInfoValidator, | |||||
'7': rawLeaveThreadMessageInfoValidator, | |||||
'8': rawJoinThreadMessageInfoValidator, | |||||
'9': rawCreateEntryMessageInfoValidator, | |||||
'10': rawEditEntryMessageInfoValidator, | |||||
'11': rawDeleteEntryMessageInfoValidator, | |||||
'12': rawRestoreEntryMessageInfoValidator, | |||||
'13': rawUnsupportedMessageInfoValidator, | |||||
'14': rawImagesMessageInfoValidator, | |||||
'15': rawMediaMessageInfoValidator, | |||||
'16': rawUpdateRelationshipMessageInfoValidator, | |||||
'17': rawSidebarSourceMessageInfoValidator, | |||||
'18': rawCreateSidebarMessageInfoValidator, | |||||
'19': rawReactionMessageInfoValidator, | |||||
'20': rawEditMessageInfoValidator, | |||||
'21': rawTogglePinMessageInfoValidator, | |||||
}; | |||||
for (const validatorMessageType in validatorByMessageType) { | |||||
const validator = validatorByMessageType[validatorMessageType]; | |||||
const validatorMessageTypeName = _findKey( | |||||
e => e === Number(validatorMessageType), | |||||
)(messageTypes); | |||||
for (const message of messages) { | for (const message of messages) { | ||||
const messageTypeName = _findKey(e => e === message.type)(messageTypes); | const messageTypeName = _findKey(e => e === message.type)(messageTypes); | ||||
if (Number(validatorMessageType) === message.type) { | if (validatorMessageType === message.type) { | ||||
it(`${validatorMessageTypeName} should validate ${messageTypeName}`, () => { | it(`${validatorMessageTypeName} should validate ${messageTypeName}`, () => { | ||||
expect(validator.is(message)).toBe(true); | expect(validator.is(message)).toBe(true); | ||||
}); | }); | ||||
} else { | } else if ( | ||||
!( | |||||
(validatorMessageType === messageTypes.IMAGES && | |||||
message.type === messageTypes.MULTIMEDIA) || | |||||
(validatorMessageType === messageTypes.MULTIMEDIA && | |||||
message.type === messageTypes.IMAGES) | |||||
) | |||||
) { | |||||
it(`${validatorMessageTypeName} shouldn't validate ${messageTypeName}`, () => { | it(`${validatorMessageTypeName} shouldn't validate ${messageTypeName}`, () => { | ||||
expect(validator.is(message)).toBe(false); | expect(validator.is(message)).toBe(false); | ||||
}); | }); | ||||
} | } | ||||
} | } | ||||
} | } | ||||
}); | }); |