Search in sources :

Example 1 with MessageSubject

use of com.kickstarter.ui.data.MessageSubject in project android-oss by kickstarter.

the class MessagesViewModelTest method testSendMessage_Error.

@Test
public void testSendMessage_Error() {
    final MockApiClient apiClient = new MockApiClient() {

        @Override
        @NonNull
        public Observable<Message> sendMessage(@NonNull final MessageSubject messageSubject, @NonNull final String body) {
            return Observable.error(ApiExceptionFactory.badRequestException());
        }
    };
    setUpEnvironment(environment().toBuilder().apiClient(apiClient).currentUser(new MockCurrentUser(UserFactory.user())).build());
    // Start the view model with a message thread.
    this.vm.intent(messagesContextIntent(MessageThreadFactory.messageThread()));
    // Send a message unsuccessfully.
    this.vm.inputs.messageEditTextChanged("Hello there");
    this.vm.inputs.sendMessageButtonClicked();
    // Error toast is displayed, errored message body remains in edit text, no new message is emitted.
    this.showMessageErrorToast.assertValueCount(1);
    this.setMessageEditText.assertNoValues();
}
Also used : MessageSubject(com.kickstarter.ui.data.MessageSubject) Message(com.kickstarter.models.Message) MockApiClient(com.kickstarter.mock.services.MockApiClient) NonNull(androidx.annotation.NonNull) MockCurrentUser(com.kickstarter.libs.MockCurrentUser) Test(org.junit.Test)

Example 2 with MessageSubject

use of com.kickstarter.ui.data.MessageSubject in project android-oss by kickstarter.

the class MessagesViewModelTest method testSendMessage_Success.

@Test
public void testSendMessage_Success() {
    final Message sentMessage = MessageFactory.message();
    final MockApiClient apiClient = new MockApiClient() {

        @Override
        @NonNull
        public Observable<Message> sendMessage(@NonNull final MessageSubject messageSubject, @NonNull final String body) {
            return Observable.just(sentMessage);
        }
    };
    setUpEnvironment(environment().toBuilder().apiClient(apiClient).currentUser(new MockCurrentUser(UserFactory.user())).build());
    // Start the view model with a message thread.
    this.vm.intent(messagesContextIntent(MessageThreadFactory.messageThread()));
    // Initial messages emit.
    this.messageList.assertValueCount(1);
    // Send a message successfully.
    this.vm.inputs.messageEditTextChanged("Salutations friend!");
    this.vm.inputs.sendMessageButtonClicked();
    // New message list emits.
    this.messageList.assertValueCount(2);
    // Reply edit text should be cleared and view should be scrolled to new message.
    this.setMessageEditText.assertValues("");
    this.scrollRecyclerViewToBottom.assertValueCount(1);
}
Also used : MessageSubject(com.kickstarter.ui.data.MessageSubject) Message(com.kickstarter.models.Message) MockApiClient(com.kickstarter.mock.services.MockApiClient) NonNull(androidx.annotation.NonNull) MockCurrentUser(com.kickstarter.libs.MockCurrentUser) Test(org.junit.Test)

Aggregations

NonNull (androidx.annotation.NonNull)2 MockCurrentUser (com.kickstarter.libs.MockCurrentUser)2 MockApiClient (com.kickstarter.mock.services.MockApiClient)2 Message (com.kickstarter.models.Message)2 MessageSubject (com.kickstarter.ui.data.MessageSubject)2 Test (org.junit.Test)2