mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-30 18:12:39 +00:00
Merge pull request #949 from LucasXu0/fix/948
test: add more test cases to toolbar_service
This commit is contained in:
commit
462a0e4c01
@ -162,23 +162,34 @@ extension TextNodesExtension on List<TextNode> {
|
|||||||
final node = this[i];
|
final node = this[i];
|
||||||
final Selection newSelection;
|
final Selection newSelection;
|
||||||
if (i == 0 && pathEquals(node.path, selection.start.path)) {
|
if (i == 0 && pathEquals(node.path, selection.start.path)) {
|
||||||
|
if (selection.isBackward) {
|
||||||
newSelection = selection.copyWith(
|
newSelection = selection.copyWith(
|
||||||
end: Position(path: node.path, offset: node.toRawString().length),
|
end: Position(path: node.path, offset: node.toRawString().length),
|
||||||
);
|
);
|
||||||
|
} else {
|
||||||
|
newSelection = selection.copyWith(
|
||||||
|
end: Position(path: node.path, offset: 0),
|
||||||
|
);
|
||||||
|
}
|
||||||
} else if (i == length - 1 &&
|
} else if (i == length - 1 &&
|
||||||
pathEquals(node.path, selection.end.path)) {
|
pathEquals(node.path, selection.end.path)) {
|
||||||
|
if (selection.isBackward) {
|
||||||
newSelection = selection.copyWith(
|
newSelection = selection.copyWith(
|
||||||
start: Position(path: node.path, offset: 0),
|
start: Position(path: node.path, offset: 0),
|
||||||
);
|
);
|
||||||
|
} else {
|
||||||
|
newSelection = selection.copyWith(
|
||||||
|
start:
|
||||||
|
Position(path: node.path, offset: node.toRawString().length),
|
||||||
|
);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
newSelection = Selection(
|
newSelection = Selection(
|
||||||
start: Position(path: node.path, offset: 0),
|
start: Position(path: node.path, offset: 0),
|
||||||
end: Position(path: node.path, offset: node.toRawString().length),
|
end: Position(path: node.path, offset: node.toRawString().length),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
if (!node.allSatisfyInSelection(newSelection, styleKey, (value) {
|
if (!node.allSatisfyInSelection(newSelection, styleKey, test)) {
|
||||||
return test(value);
|
|
||||||
})) {
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -154,6 +154,67 @@ void main() async {
|
|||||||
itemWidget = _itemWidgetForId(tester, 'appflowy.toolbar.bulleted_list');
|
itemWidget = _itemWidgetForId(tester, 'appflowy.toolbar.bulleted_list');
|
||||||
expect(itemWidget.isHighlight, true);
|
expect(itemWidget.isHighlight, true);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
testWidgets('Test toolbar service in multi text selection', (tester) async {
|
||||||
|
const text = 'Welcome to Appflowy 😁';
|
||||||
|
|
||||||
|
/// [h1][bold] Welcome to Appflowy 😁
|
||||||
|
/// [EmptyLine]
|
||||||
|
/// Welcome to Appflowy 😁
|
||||||
|
final editor = tester.editor
|
||||||
|
..insertTextNode(
|
||||||
|
null,
|
||||||
|
attributes: {
|
||||||
|
StyleKey.subtype: StyleKey.heading,
|
||||||
|
StyleKey.heading: StyleKey.h1,
|
||||||
|
},
|
||||||
|
delta: Delta([
|
||||||
|
TextInsert(text, {
|
||||||
|
StyleKey.bold: true,
|
||||||
|
})
|
||||||
|
]),
|
||||||
|
)
|
||||||
|
..insertTextNode(null)
|
||||||
|
..insertTextNode(text);
|
||||||
|
await editor.startTesting();
|
||||||
|
|
||||||
|
await editor.updateSelection(
|
||||||
|
Selection.single(path: [2], startOffset: text.length, endOffset: 0),
|
||||||
|
);
|
||||||
|
expect(find.byType(ToolbarWidget), findsOneWidget);
|
||||||
|
expect(
|
||||||
|
_itemWidgetForId(tester, 'appflowy.toolbar.h1').isHighlight,
|
||||||
|
false,
|
||||||
|
);
|
||||||
|
expect(
|
||||||
|
_itemWidgetForId(tester, 'appflowy.toolbar.bold').isHighlight,
|
||||||
|
false,
|
||||||
|
);
|
||||||
|
|
||||||
|
await editor.updateSelection(
|
||||||
|
Selection(
|
||||||
|
start: Position(path: [2], offset: text.length),
|
||||||
|
end: Position(path: [1], offset: 0),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
expect(find.byType(ToolbarWidget), findsOneWidget);
|
||||||
|
expect(
|
||||||
|
_itemWidgetForId(tester, 'appflowy.toolbar.bold').isHighlight,
|
||||||
|
false,
|
||||||
|
);
|
||||||
|
|
||||||
|
await editor.updateSelection(
|
||||||
|
Selection(
|
||||||
|
start: Position(path: [2], offset: text.length),
|
||||||
|
end: Position(path: [0], offset: 0),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
expect(find.byType(ToolbarWidget), findsOneWidget);
|
||||||
|
expect(
|
||||||
|
_itemWidgetForId(tester, 'appflowy.toolbar.bold').isHighlight,
|
||||||
|
false,
|
||||||
|
);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user