mirror of https://git.lenooby09.tech/LeNooby09/social-app.git
1import {RichText} from '../../../src/lib/strings/rich-text'
2
3describe('richText.insert', () => {
4 const input = new RichText('hello world', [
5 {index: {start: 2, end: 7}, type: '', value: ''},
6 ])
7
8 it('correctly adjusts entities (scenario A - before)', () => {
9 const output = input.clone().insert(0, 'test')
10 expect(output.text).toEqual('testhello world')
11 expect(output.entities?.[0].index.start).toEqual(6)
12 expect(output.entities?.[0].index.end).toEqual(11)
13 expect(
14 output.text.slice(
15 output.entities?.[0].index.start,
16 output.entities?.[0].index.end,
17 ),
18 ).toEqual('llo w')
19 })
20
21 it('correctly adjusts entities (scenario B - inner)', () => {
22 const output = input.clone().insert(4, 'test')
23 expect(output.text).toEqual('helltesto world')
24 expect(output.entities?.[0].index.start).toEqual(2)
25 expect(output.entities?.[0].index.end).toEqual(11)
26 expect(
27 output.text.slice(
28 output.entities?.[0].index.start,
29 output.entities?.[0].index.end,
30 ),
31 ).toEqual('lltesto w')
32 })
33
34 it('correctly adjusts entities (scenario C - after)', () => {
35 const output = input.clone().insert(8, 'test')
36 expect(output.text).toEqual('hello wotestrld')
37 expect(output.entities?.[0].index.start).toEqual(2)
38 expect(output.entities?.[0].index.end).toEqual(7)
39 expect(
40 output.text.slice(
41 output.entities?.[0].index.start,
42 output.entities?.[0].index.end,
43 ),
44 ).toEqual('llo w')
45 })
46})
47
48describe('richText.delete', () => {
49 const input = new RichText('hello world', [
50 {index: {start: 2, end: 7}, type: '', value: ''},
51 ])
52
53 it('correctly adjusts entities (scenario A - entirely outer)', () => {
54 const output = input.clone().delete(0, 9)
55 expect(output.text).toEqual('ld')
56 expect(output.entities?.length).toEqual(0)
57 })
58
59 it('correctly adjusts entities (scenario B - entirely after)', () => {
60 const output = input.clone().delete(7, 11)
61 expect(output.text).toEqual('hello w')
62 expect(output.entities?.[0].index.start).toEqual(2)
63 expect(output.entities?.[0].index.end).toEqual(7)
64 expect(
65 output.text.slice(
66 output.entities?.[0].index.start,
67 output.entities?.[0].index.end,
68 ),
69 ).toEqual('llo w')
70 })
71
72 it('correctly adjusts entities (scenario C - partially after)', () => {
73 const output = input.clone().delete(4, 11)
74 expect(output.text).toEqual('hell')
75 expect(output.entities?.[0].index.start).toEqual(2)
76 expect(output.entities?.[0].index.end).toEqual(4)
77 expect(
78 output.text.slice(
79 output.entities?.[0].index.start,
80 output.entities?.[0].index.end,
81 ),
82 ).toEqual('ll')
83 })
84
85 it('correctly adjusts entities (scenario D - entirely inner)', () => {
86 const output = input.clone().delete(3, 5)
87 expect(output.text).toEqual('hel world')
88 expect(output.entities?.[0].index.start).toEqual(2)
89 expect(output.entities?.[0].index.end).toEqual(5)
90 expect(
91 output.text.slice(
92 output.entities?.[0].index.start,
93 output.entities?.[0].index.end,
94 ),
95 ).toEqual('l w')
96 })
97
98 it('correctly adjusts entities (scenario E - partially before)', () => {
99 const output = input.clone().delete(1, 5)
100 expect(output.text).toEqual('h world')
101 expect(output.entities?.[0].index.start).toEqual(1)
102 expect(output.entities?.[0].index.end).toEqual(3)
103 expect(
104 output.text.slice(
105 output.entities?.[0].index.start,
106 output.entities?.[0].index.end,
107 ),
108 ).toEqual(' w')
109 })
110
111 it('correctly adjusts entities (scenario F - entirely before)', () => {
112 const output = input.clone().delete(0, 2)
113 expect(output.text).toEqual('llo world')
114 expect(output.entities?.[0].index.start).toEqual(0)
115 expect(output.entities?.[0].index.end).toEqual(5)
116 expect(
117 output.text.slice(
118 output.entities?.[0].index.start,
119 output.entities?.[0].index.end,
120 ),
121 ).toEqual('llo w')
122 })
123})