TF-4282 Fix sort of web search suggestion (#4289)
This commit is contained in:
@@ -57,9 +57,9 @@ void main() {
|
||||
final dioAdapterHeaders = <String, dynamic>{
|
||||
'accept': 'application/json;jmapVersion=rfc-8621',
|
||||
};
|
||||
final dioAdapter = DioAdapter(dio: dio);
|
||||
final httpClient = HttpClient(dio);
|
||||
final threadApi = ThreadAPI(httpClient);
|
||||
late DioAdapter dioAdapter;
|
||||
late HttpClient httpClient;
|
||||
late ThreadAPI threadApi;
|
||||
|
||||
final sessionState = State('some-session-state');
|
||||
final state = State('some-state');
|
||||
@@ -68,9 +68,15 @@ void main() {
|
||||
final filter = EmailFilterCondition(text: 'some-text');
|
||||
final queryState = State('some-query-state');
|
||||
|
||||
setUp(() {
|
||||
dioAdapter = DioAdapter(dio: dio);
|
||||
httpClient = HttpClient(dio);
|
||||
threadApi = ThreadAPI(httpClient);
|
||||
});
|
||||
|
||||
group('thread api test:', () {
|
||||
group('searchEmails:', () {
|
||||
Map<String, dynamic> generateRequest({required Filter filter}) => {
|
||||
Map<String, dynamic> generateRequest({required Filter filter, int? position}) => {
|
||||
"using": [
|
||||
"urn:ietf:params:jmap:core",
|
||||
"urn:ietf:params:jmap:mail",
|
||||
@@ -81,6 +87,7 @@ void main() {
|
||||
"Email/query",
|
||||
{
|
||||
"accountId": AccountFixtures.aliceAccountId.id.value,
|
||||
if (position != null) "position": position,
|
||||
"filter": filter.toJson(),
|
||||
},
|
||||
"c0"
|
||||
@@ -267,6 +274,128 @@ void main() {
|
||||
),
|
||||
);
|
||||
});
|
||||
|
||||
test(
|
||||
'should not add position to request '
|
||||
'when position is null',
|
||||
() async {
|
||||
// arrange
|
||||
final searchEmail = SearchEmail(
|
||||
id: EmailId(Id('someEmailId')),
|
||||
searchSnippetSubject: 'searchSnippetSubject',
|
||||
searchSnippetPreview: 'searchSnippetPreview',
|
||||
);
|
||||
dioAdapter.onPost(
|
||||
'',
|
||||
(server) => server.reply(
|
||||
200,
|
||||
generateResponse(
|
||||
foundSearchEmails: [searchEmail],
|
||||
notFoundEmailIds: [],
|
||||
searchSnippetError: UnknownMethodResponse(),
|
||||
),
|
||||
),
|
||||
data: generateRequest(filter: filter),
|
||||
);
|
||||
|
||||
// act
|
||||
final result = await threadApi.searchEmails(
|
||||
SessionFixtures.aliceSession,
|
||||
AccountFixtures.aliceAccountId,
|
||||
filter: filter,
|
||||
);
|
||||
|
||||
// assert
|
||||
expect(
|
||||
result,
|
||||
equals(
|
||||
SearchEmailsResponse(
|
||||
searchSnippets: null,
|
||||
emailList: [Email(id: searchEmail.id)],
|
||||
state: state
|
||||
),
|
||||
),
|
||||
);
|
||||
});
|
||||
|
||||
test(
|
||||
'should not add position to request '
|
||||
'when position is 0',
|
||||
() async {
|
||||
// arrange
|
||||
final searchEmail = SearchEmail(
|
||||
id: EmailId(Id('someEmailId')),
|
||||
searchSnippetSubject: 'searchSnippetSubject',
|
||||
searchSnippetPreview: 'searchSnippetPreview',
|
||||
);
|
||||
dioAdapter.onPost(
|
||||
'',
|
||||
(server) => server.reply(
|
||||
403,
|
||||
generateResponse(
|
||||
foundSearchEmails: [searchEmail],
|
||||
notFoundEmailIds: [],
|
||||
searchSnippetError: UnknownMethodResponse(),
|
||||
),
|
||||
),
|
||||
data: generateRequest(filter: filter, position: 0),
|
||||
);
|
||||
|
||||
// act & assert
|
||||
expect(
|
||||
() => threadApi.searchEmails(
|
||||
SessionFixtures.aliceSession,
|
||||
AccountFixtures.aliceAccountId,
|
||||
filter: filter,
|
||||
position: 0,
|
||||
),
|
||||
throwsA(isA<DioException>()),
|
||||
);
|
||||
});
|
||||
|
||||
test(
|
||||
'should add position to request '
|
||||
'when position > 0',
|
||||
() async {
|
||||
// arrange
|
||||
final searchEmail = SearchEmail(
|
||||
id: EmailId(Id('someEmailId')),
|
||||
searchSnippetSubject: 'searchSnippetSubject',
|
||||
searchSnippetPreview: 'searchSnippetPreview',
|
||||
);
|
||||
dioAdapter.onPost(
|
||||
'',
|
||||
(server) => server.reply(
|
||||
200,
|
||||
generateResponse(
|
||||
foundSearchEmails: [searchEmail],
|
||||
notFoundEmailIds: [],
|
||||
searchSnippetError: UnknownMethodResponse(),
|
||||
),
|
||||
),
|
||||
data: generateRequest(filter: filter, position: 1),
|
||||
);
|
||||
|
||||
// act
|
||||
final result = await threadApi.searchEmails(
|
||||
SessionFixtures.aliceSession,
|
||||
AccountFixtures.aliceAccountId,
|
||||
filter: filter,
|
||||
position: 1,
|
||||
);
|
||||
|
||||
// assert
|
||||
expect(
|
||||
result,
|
||||
equals(
|
||||
SearchEmailsResponse(
|
||||
searchSnippets: null,
|
||||
emailList: [Email(id: searchEmail.id)],
|
||||
state: state
|
||||
),
|
||||
),
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
group('sortEmails::test', () {
|
||||
|
||||
Reference in New Issue
Block a user