mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-02 21:33:26 +00:00
Initial integration of RTE (#1464)
* Initial integration of RTE * Fix `clipped`, `focused` and composer view type * Remove horizontal padding * Add `ComposerToolbar` mock * Restore `composerFocusedSubject` * Allow using HTML from RTE on message sent * Fix new message content API * Add feature flag for Rich Text Editor
This commit is contained in:
@@ -15,12 +15,14 @@
|
||||
//
|
||||
|
||||
@testable import ElementX
|
||||
import WysiwygComposer
|
||||
import XCTest
|
||||
|
||||
@MainActor
|
||||
class ComposerToolbarViewModelTests: XCTestCase {
|
||||
func testComposerFocus() {
|
||||
let viewModel = ComposerToolbarViewModel()
|
||||
let wysiwygViewModel = WysiwygComposerViewModel()
|
||||
let viewModel = ComposerToolbarViewModel(wysiwygViewModel: wysiwygViewModel)
|
||||
viewModel.process(roomAction: .setMode(mode: .edit(originalItemId: TimelineItemIdentifier(timelineID: "mock"))))
|
||||
XCTAssertTrue(viewModel.state.bindings.composerFocused)
|
||||
viewModel.process(roomAction: .removeFocus)
|
||||
@@ -28,7 +30,8 @@ class ComposerToolbarViewModelTests: XCTestCase {
|
||||
}
|
||||
|
||||
func testComposerMode() {
|
||||
let viewModel = ComposerToolbarViewModel()
|
||||
let wysiwygViewModel = WysiwygComposerViewModel()
|
||||
let viewModel = ComposerToolbarViewModel(wysiwygViewModel: wysiwygViewModel)
|
||||
let mode: RoomScreenComposerMode = .edit(originalItemId: TimelineItemIdentifier(timelineID: "mock"))
|
||||
viewModel.process(roomAction: .setMode(mode: mode))
|
||||
XCTAssertEqual(viewModel.state.composerMode, mode)
|
||||
@@ -37,7 +40,8 @@ class ComposerToolbarViewModelTests: XCTestCase {
|
||||
}
|
||||
|
||||
func testComposerModeIsPublished() {
|
||||
let viewModel = ComposerToolbarViewModel()
|
||||
let wysiwygViewModel = WysiwygComposerViewModel()
|
||||
let viewModel = ComposerToolbarViewModel(wysiwygViewModel: wysiwygViewModel)
|
||||
let mode: RoomScreenComposerMode = .edit(originalItemId: TimelineItemIdentifier(timelineID: "mock"))
|
||||
let expectation = expectation(description: "Composer mode is published")
|
||||
let cancellable = viewModel
|
||||
@@ -56,4 +60,11 @@ class ComposerToolbarViewModelTests: XCTestCase {
|
||||
wait(for: [expectation], timeout: 2.0)
|
||||
cancellable.cancel()
|
||||
}
|
||||
|
||||
func testHandleKeyCommand() {
|
||||
let wysiwygViewModel = WysiwygComposerViewModel()
|
||||
let viewModel = ComposerToolbarViewModel(wysiwygViewModel: wysiwygViewModel)
|
||||
XCTAssertTrue(viewModel.handleKeyCommand(.enter))
|
||||
XCTAssertFalse(viewModel.handleKeyCommand(.shiftEnter))
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user