Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit cd91702

Browse files
committed
🎨 FilePatchView tests - use getSelectedHunks() instead of checking view.props.isSelected
1 parent 41204c3 commit cd91702

File tree

1 file changed

+38
-39
lines changed

1 file changed

+38
-39
lines changed

test/views/file-patch-view.test.js

Lines changed: 38 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,26 @@
11
/** @babel */
22

3-
import etch from 'etch'
4-
53
import FilePatchView from '../../lib/views/file-patch-view'
64
import Hunk from '../../lib/models/hunk'
75
import HunkLine from '../../lib/models/hunk-line'
86

97
describe('FilePatchView', () => {
8+
it('displays selected hunks and lines as selected', async () => {
9+
const line1 = new HunkLine('line-1', 'removed', 5, -1)
10+
const line2 = new HunkLine('line-2', 'removed', 6, -1)
11+
const line3 = new HunkLine('line-3', 'removed', 7, -1)
12+
const line4 = new HunkLine('line-4', 'added', -1, 6)
13+
const line5 = new HunkLine('line-5', 'removed', 8, -1)
14+
const line6 = new HunkLine('line-6', 'added', -1, 8)
15+
const hunk1 = new Hunk(5, 5, 3, 1, [line1, line2, line3, line4])
16+
const hunk2 = new Hunk(8, 8, 1, 1, [line5, line6])
17+
const hunkViewsByHunk = new Map()
18+
const view = new FilePatchView({hunks: [hunk1, hunk2], registerHunkView: (hunk, view) => hunkViewsByHunk.set(hunk, view)})
19+
20+
const selectedHunks = view.getSelectedHunks()
21+
// TODO: write test to ensure that hunks and lines have correct isSelected props
22+
})
23+
1024
describe('selectLineForHunk(hunk, selectedLine) when selection is enabled', () => {
1125
it('sets the lines between selectedLine and first line selected', async () => {
1226
const line1 = new HunkLine('line-1', 'removed', 5, -1)
@@ -17,8 +31,7 @@ describe('FilePatchView', () => {
1731
const line6 = new HunkLine('line-6', 'added', -1, 8)
1832
const hunk1 = new Hunk(5, 5, 3, 1, [line1, line2, line3, line4])
1933
const hunk2 = new Hunk(8, 8, 1, 1, [line5, line6])
20-
const hunkViewsByHunk = new Map()
21-
const view = new FilePatchView({hunks: [hunk1, hunk2], registerHunkView: (hunk, view) => hunkViewsByHunk.set(hunk, view)})
34+
const view = new FilePatchView({hunks: [hunk1, hunk2]})
2235
view.togglePatchSelectionMode()
2336
assertSelectedLines(view, [line1])
2437
view.enableSelections()
@@ -64,33 +77,22 @@ describe('FilePatchView', () => {
6477
it('selects the new hunk in it\'s place', async () => {
6578
const hunk1 = new Hunk(5, 5, 2, 1, [new HunkLine('line-1', 'added', -1, 5)])
6679
const hunk2 = new Hunk(8, 8, 1, 1, [new HunkLine('line-5', 'removed', 8, -1)])
67-
68-
const hunkViewsByHunk = new Map()
69-
const view = new FilePatchView({hunks: [hunk1, hunk2], registerHunkView: (hunk, view) => hunkViewsByHunk.set(hunk, view)})
70-
71-
assert.isTrue(hunkViewsByHunk.get(hunk1).props.isSelected)
72-
hunkViewsByHunk.clear()
73-
await view.update({hunks: [hunk2], registerHunkView: (hunk, view) => hunkViewsByHunk.set(hunk, view)})
74-
assert.isTrue(!hunkViewsByHunk.get(hunk1))
75-
assert.isTrue(hunkViewsByHunk.get(hunk2).props.isSelected)
80+
const view = new FilePatchView({hunks: [hunk1, hunk2]})
81+
assertSelectedHunks(view, [hunk1])
82+
await view.update({hunks: [hunk2]})
83+
assertSelectedHunks(view, [hunk2])
7684
})
7785
})
7886

7987
describe('when there is no hunk at it\'s index', () => {
8088
it('selects the last hunk', async () => {
8189
const hunk1 = new Hunk(5, 5, 2, 1, [new HunkLine('line-1', 'added', -1, 5)])
8290
const hunk2 = new Hunk(8, 8, 1, 1, [new HunkLine('line-5', 'removed', 8, -1)])
83-
84-
const hunkViewsByHunk = new Map()
85-
const view = new FilePatchView({hunks: [hunk1, hunk2], registerHunkView: (hunk, view) => hunkViewsByHunk.set(hunk, view)})
86-
91+
const view = new FilePatchView({hunks: [hunk1, hunk2]})
8792
await view.focusNextHunk()
88-
assert.isTrue(hunkViewsByHunk.get(hunk2).props.isSelected)
89-
90-
hunkViewsByHunk.clear()
91-
await view.update({hunks: [hunk1], registerHunkView: (hunk, view) => hunkViewsByHunk.set(hunk, view)})
92-
assert.isTrue(!hunkViewsByHunk.get(hunk2))
93-
assert.isTrue(hunkViewsByHunk.get(hunk1).props.isSelected)
93+
assertSelectedHunks(view, [hunk2])
94+
await view.update({hunks: [hunk1]})
95+
assertSelectedHunks(view, [hunk1])
9496
})
9597
})
9698
})
@@ -103,19 +105,17 @@ describe('FilePatchView', () => {
103105
new HunkLine('line-3', 'removed', 7, -1),
104106
new HunkLine('line-4', 'added', -1, 6)
105107
])
106-
const hunkViewsByHunk = new Map()
107-
const view = new FilePatchView({hunks: [hunk], registerHunkView: (hunk, view) => hunkViewsByHunk.set(hunk, view)})
108-
const element = view.element
108+
const view = new FilePatchView({hunks: [hunk]})
109109

110110
assert.equal(view.getPatchSelectionMode(), 'hunk')
111111

112112
await view.togglePatchSelectionMode()
113113
assert.equal(view.getPatchSelectionMode(), 'hunkLine')
114-
assert.equal(element.querySelectorAll('.git-HunkView-line.is-selected').length, 1)
114+
assertSelectedLines(view, [hunk.getLines()[1]]) // first non-context line
115115

116116
await view.togglePatchSelectionMode()
117117
assert.equal(view.getPatchSelectionMode(), 'hunk')
118-
assert.equal(element.querySelectorAll('.git-HunkView-line.is-selected').length, hunk.getLines().filter(l => l.isChanged()).length)
118+
assertSelectedLines(view, hunk.getLines().filter(l => l.isChanged()))
119119
})
120120
})
121121

@@ -124,34 +124,33 @@ describe('FilePatchView', () => {
124124
const hunk1 = new Hunk(5, 5, 2, 1, [new HunkLine('line-1', 'added', -1, 5)])
125125
const hunk2 = new Hunk(8, 8, 1, 1, [new HunkLine('line-5', 'removed', 8, -1)])
126126
const hunk3 = new Hunk(8, 8, 1, 1, [new HunkLine('line-10', 'added', -1, 10)])
127-
const hunkViewsByHunk = new Map()
128-
const view = new FilePatchView({hunks: [hunk1, hunk2, hunk3], registerHunkView: (hunk, view) => hunkViewsByHunk.set(hunk, view)})
127+
const view = new FilePatchView({hunks: [hunk1, hunk2, hunk3]})
129128

130-
assert.isTrue(hunkViewsByHunk.get(hunk1).props.isSelected)
129+
assertSelectedHunks(view, [hunk1])
131130

132131
await view.focusNextHunk()
133-
assert.isTrue(hunkViewsByHunk.get(hunk2).props.isSelected)
132+
assertSelectedHunks(view, [hunk2])
134133

135134
await view.focusNextHunk()
136-
assert.isTrue(hunkViewsByHunk.get(hunk3).props.isSelected)
135+
assertSelectedHunks(view, [hunk3])
137136

138137
await view.focusNextHunk()
139-
assert.isTrue(hunkViewsByHunk.get(hunk3).props.isSelected)
138+
assertSelectedHunks(view, [hunk3])
140139

141140
await view.focusNextHunk({wrap: true})
142-
assert.isTrue(hunkViewsByHunk.get(hunk1).props.isSelected)
141+
assertSelectedHunks(view, [hunk1])
143142

144143
await view.focusPreviousHunk()
145-
assert.isTrue(hunkViewsByHunk.get(hunk1).props.isSelected)
144+
assertSelectedHunks(view, [hunk1])
146145

147146
await view.focusPreviousHunk({wrap: true})
148-
assert.isTrue(hunkViewsByHunk.get(hunk3).props.isSelected)
147+
assertSelectedHunks(view, [hunk3])
149148

150149
await view.focusPreviousHunk()
151-
assert.isTrue(hunkViewsByHunk.get(hunk2).props.isSelected)
150+
assertSelectedHunks(view, [hunk2])
152151

153152
await view.focusPreviousHunk()
154-
assert.isTrue(hunkViewsByHunk.get(hunk1).props.isSelected)
153+
assertSelectedHunks(view, [hunk1])
155154
})
156155
})
157156

0 commit comments

Comments
 (0)