• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2015 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.messaging.ui.conversation;
18 
19 import android.view.View;
20 import android.widget.TextView;
21 
22 import androidx.test.filters.MediumTest;
23 
24 import com.android.messaging.FakeFactory;
25 import com.android.messaging.R;
26 import com.android.messaging.datamodel.FakeCursor;
27 import com.android.messaging.datamodel.data.TestDataFactory;
28 import com.android.messaging.ui.ViewTest;
29 import com.android.messaging.ui.conversation.ConversationMessageView.ConversationMessageViewHost;
30 import com.android.messaging.util.Dates;
31 
32 import org.mockito.Mock;
33 
34 @MediumTest
35 public class ConversationMessageViewTest extends ViewTest<ConversationMessageView> {
36     @Mock ConversationMessageViewHost mockHost;
37 
38     @Override
setUp()39     protected void setUp() throws Exception {
40         super.setUp();
41         FakeFactory.register(getInstrumentation().getTargetContext());
42     }
43 
44     @Override
getView()45     protected ConversationMessageView getView() {
46         final ConversationMessageView view = super.getView();
47         view.setHost(mockHost);
48         return view;
49     }
50 
verifyContent(final ConversationMessageView view, final String messageText, final boolean showTimestamp, final String timestampText)51     protected void verifyContent(final ConversationMessageView view, final String messageText,
52             final boolean showTimestamp, final String timestampText) {
53 
54         final TextView messageTextView = (TextView) view.findViewById(R.id.message_text);
55         final TextView statusTextView = (TextView) view.findViewById(R.id.message_status);
56 
57         assertNotNull(messageTextView);
58         assertEquals(messageText, messageTextView.getText());
59 
60         if (showTimestamp) {
61             assertEquals(View.VISIBLE, statusTextView.getVisibility());
62             assertEquals(timestampText, statusTextView.getText());
63         } else {
64             assertEquals(View.GONE, statusTextView.getVisibility());
65         }
66     }
67 
testBind()68     public void testBind() {
69         final ConversationMessageView view = getView();
70 
71         final FakeCursor cursor = TestDataFactory.getConversationMessageCursor();
72         cursor.moveToFirst();
73 
74         view.bind(cursor);
75         verifyContent(view, TestDataFactory.getMessageText(cursor, 0), true, Dates
76                 .getMessageTimeString((Long) cursor.getAt("received_timestamp", 0)).toString());
77     }
78 
testBindTwice()79     public void testBindTwice() {
80         final ConversationMessageView view = getView();
81 
82         final FakeCursor cursor = TestDataFactory.getConversationMessageCursor();
83         cursor.moveToFirst();
84         view.bind(cursor);
85 
86         cursor.moveToNext();
87         view.bind(cursor);
88         verifyContent(view, TestDataFactory.getMessageText(cursor, 1), true, Dates
89                 .getMessageTimeString((Long) cursor.getAt("received_timestamp", 1)).toString());
90     }
91 
testBindLast()92     public void testBindLast() {
93         final ConversationMessageView view = getView();
94 
95         final FakeCursor cursor = TestDataFactory.getConversationMessageCursor();
96         final int lastPos = cursor.getCount() - 1;
97         cursor.moveToPosition(lastPos);
98 
99         view.bind(cursor);
100         verifyContent(view, TestDataFactory.getMessageText(cursor, lastPos), true, Dates
101                 .getMessageTimeString((Long) cursor.getAt("received_timestamp", lastPos))
102                 .toString());
103     }
104 
105     @Override
getLayoutIdForView()106     protected int getLayoutIdForView() {
107         return R.layout.conversation_message_view;
108     }
109 }
110