mirror of
				https://codeberg.org/yeentown/barkey.git
				synced 2025-10-29 04:24:14 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			226 lines
		
	
	
	
		
			6.8 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			226 lines
		
	
	
	
		
			6.8 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import PleromaAPI from '@/pleroma/api_client'
 | |
| import MegalodonEntity from '@/entity'
 | |
| import PleromaEntity from '@/pleroma/entity'
 | |
| import MegalodonNotificationType from '@/notification'
 | |
| import PleromaNotificationType from '@/pleroma/notification'
 | |
| 
 | |
| const account: PleromaEntity.Account = {
 | |
|   id: '1',
 | |
|   username: 'h3poteto',
 | |
|   acct: 'h3poteto@pleroma.io',
 | |
|   display_name: 'h3poteto',
 | |
|   locked: false,
 | |
|   noindex: null,
 | |
|   suspended: null,
 | |
|   limited: null,
 | |
|   created_at: '2019-03-26T21:30:32',
 | |
|   followers_count: 10,
 | |
|   following_count: 10,
 | |
|   statuses_count: 100,
 | |
|   note: 'engineer',
 | |
|   url: 'https://pleroma.io',
 | |
|   avatar: '',
 | |
|   avatar_static: '',
 | |
|   header: '',
 | |
|   header_static: '',
 | |
|   emojis: [],
 | |
|   moved: null,
 | |
|   fields: [],
 | |
|   bot: false,
 | |
|   source: {
 | |
|     privacy: null,
 | |
|     sensitive: false,
 | |
|     language: null,
 | |
|     note: 'test',
 | |
|     fields: []
 | |
|   }
 | |
| }
 | |
| 
 | |
| describe('api_client', () => {
 | |
|   describe('notification', () => {
 | |
|     describe('encode', () => {
 | |
|       it('megalodon notification type should be encoded to pleroma notification type', () => {
 | |
|         const cases: Array<{ src: MegalodonEntity.NotificationType; dist: PleromaEntity.NotificationType }> = [
 | |
|           {
 | |
|             src: MegalodonNotificationType.Follow,
 | |
|             dist: PleromaNotificationType.Follow
 | |
|           },
 | |
|           {
 | |
|             src: MegalodonNotificationType.Favourite,
 | |
|             dist: PleromaNotificationType.Favourite
 | |
|           },
 | |
|           {
 | |
|             src: MegalodonNotificationType.Reblog,
 | |
|             dist: PleromaNotificationType.Reblog
 | |
|           },
 | |
|           {
 | |
|             src: MegalodonNotificationType.Mention,
 | |
|             dist: PleromaNotificationType.Mention
 | |
|           },
 | |
|           {
 | |
|             src: MegalodonNotificationType.PollExpired,
 | |
|             dist: PleromaNotificationType.Poll
 | |
|           },
 | |
|           {
 | |
|             src: MegalodonNotificationType.EmojiReaction,
 | |
|             dist: PleromaNotificationType.PleromaEmojiReaction
 | |
|           },
 | |
|           {
 | |
|             src: MegalodonNotificationType.FollowRequest,
 | |
|             dist: PleromaNotificationType.FollowRequest
 | |
|           },
 | |
|           {
 | |
|             src: MegalodonNotificationType.Update,
 | |
|             dist: PleromaNotificationType.Update
 | |
|           },
 | |
|           {
 | |
|             src: MegalodonNotificationType.Move,
 | |
|             dist: PleromaNotificationType.Move
 | |
|           }
 | |
|         ]
 | |
|         cases.forEach(c => {
 | |
|           expect(PleromaAPI.Converter.encodeNotificationType(c.src)).toEqual(c.dist)
 | |
|         })
 | |
|       })
 | |
|     })
 | |
|     describe('decode', () => {
 | |
|       it('pleroma notification type should be decoded to megalodon notification type', () => {
 | |
|         const cases: Array<{ src: PleromaEntity.NotificationType; dist: MegalodonEntity.NotificationType }> = [
 | |
|           {
 | |
|             src: PleromaNotificationType.Follow,
 | |
|             dist: MegalodonNotificationType.Follow
 | |
|           },
 | |
|           {
 | |
|             src: PleromaNotificationType.Favourite,
 | |
|             dist: MegalodonNotificationType.Favourite
 | |
|           },
 | |
|           {
 | |
|             src: PleromaNotificationType.Mention,
 | |
|             dist: MegalodonNotificationType.Mention
 | |
|           },
 | |
|           {
 | |
|             src: PleromaNotificationType.Reblog,
 | |
|             dist: MegalodonNotificationType.Reblog
 | |
|           },
 | |
|           {
 | |
|             src: PleromaNotificationType.Poll,
 | |
|             dist: MegalodonNotificationType.PollExpired
 | |
|           },
 | |
|           {
 | |
|             src: PleromaNotificationType.PleromaEmojiReaction,
 | |
|             dist: MegalodonNotificationType.EmojiReaction
 | |
|           },
 | |
|           {
 | |
|             src: PleromaNotificationType.FollowRequest,
 | |
|             dist: MegalodonNotificationType.FollowRequest
 | |
|           },
 | |
|           {
 | |
|             src: PleromaNotificationType.Update,
 | |
|             dist: MegalodonNotificationType.Update
 | |
|           },
 | |
|           {
 | |
|             src: PleromaNotificationType.Move,
 | |
|             dist: MegalodonNotificationType.Move
 | |
|           }
 | |
|         ]
 | |
|         cases.forEach(c => {
 | |
|           expect(PleromaAPI.Converter.decodeNotificationType(c.src)).toEqual(c.dist)
 | |
|         })
 | |
|       })
 | |
|     })
 | |
|   })
 | |
| 
 | |
|   describe('status', () => {
 | |
|     describe('plain content is included', () => {
 | |
|       it('plain content in pleroma entity should be exported in plain_content column', () => {
 | |
|         const plainContent = 'hoge\nfuga\nfuga'
 | |
|         const content = '<p>hoge<br>fuga<br>fuga</p>'
 | |
|         const pleromaStatus: PleromaEntity.Status = {
 | |
|           id: '1',
 | |
|           uri: 'https://pleroma.io/notice/1',
 | |
|           url: 'https://pleroma.io/notice/1',
 | |
|           account: account,
 | |
|           in_reply_to_id: null,
 | |
|           in_reply_to_account_id: null,
 | |
|           reblog: null,
 | |
|           content: content,
 | |
|           created_at: '2019-03-26T21:40:32',
 | |
|           emojis: [],
 | |
|           replies_count: 0,
 | |
|           reblogs_count: 0,
 | |
|           favourites_count: 0,
 | |
|           reblogged: null,
 | |
|           favourited: null,
 | |
|           muted: null,
 | |
|           sensitive: false,
 | |
|           spoiler_text: '',
 | |
|           visibility: 'public',
 | |
|           media_attachments: [],
 | |
|           mentions: [],
 | |
|           tags: [],
 | |
|           card: null,
 | |
|           poll: null,
 | |
|           application: {
 | |
|             name: 'Web'
 | |
|           } as MastodonEntity.Application,
 | |
|           language: null,
 | |
|           pinned: null,
 | |
|           bookmarked: false,
 | |
|           pleroma: {
 | |
|             content: {
 | |
|               'text/plain': plainContent
 | |
|             },
 | |
|             local: false
 | |
|           }
 | |
|         }
 | |
|         const megalodonStatus = PleromaAPI.Converter.status(pleromaStatus)
 | |
|         expect(megalodonStatus.plain_content).toEqual(plainContent)
 | |
|         expect(megalodonStatus.content).toEqual(content)
 | |
|       })
 | |
|     })
 | |
| 
 | |
|     describe('plain content is not included', () => {
 | |
|       it('plain_content should be null', () => {
 | |
|         const content = '<p>hoge<br>fuga<br>fuga</p>'
 | |
|         const pleromaStatus: PleromaEntity.Status = {
 | |
|           id: '1',
 | |
|           uri: 'https://pleroma.io/notice/1',
 | |
|           url: 'https://pleroma.io/notice/1',
 | |
|           account: account,
 | |
|           in_reply_to_id: null,
 | |
|           in_reply_to_account_id: null,
 | |
|           reblog: null,
 | |
|           content: content,
 | |
|           created_at: '2019-03-26T21:40:32',
 | |
|           emojis: [],
 | |
|           replies_count: 0,
 | |
|           reblogs_count: 0,
 | |
|           favourites_count: 0,
 | |
|           reblogged: null,
 | |
|           favourited: null,
 | |
|           muted: null,
 | |
|           sensitive: false,
 | |
|           spoiler_text: '',
 | |
|           visibility: 'public',
 | |
|           media_attachments: [],
 | |
|           mentions: [],
 | |
|           tags: [],
 | |
|           card: null,
 | |
|           poll: null,
 | |
|           application: {
 | |
|             name: 'Web'
 | |
|           } as MastodonEntity.Application,
 | |
|           language: null,
 | |
|           pinned: null,
 | |
|           bookmarked: false,
 | |
|           pleroma: {
 | |
|             local: false
 | |
|           }
 | |
|         }
 | |
|         const megalodonStatus = PleromaAPI.Converter.status(pleromaStatus)
 | |
|         expect(megalodonStatus.plain_content).toBeNull()
 | |
|         expect(megalodonStatus.content).toEqual(content)
 | |
|       })
 | |
|     })
 | |
|   })
 | |
| })
 |