feat: Search rooms by cyrillic characters in channel names (#36861)

pull/36661/head^2
Yash Rajpal 8 months ago committed by GitHub
parent 68764092ec
commit c102712222
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 6
      .changeset/angry-apes-double.md
  2. 27
      apps/meteor/tests/end-to-end/api/rooms.ts
  3. 3
      packages/models/src/models/Rooms.ts

@ -0,0 +1,6 @@
---
'@rocket.chat/models': patch
'@rocket.chat/meteor': patch
---
Enable room search by Cyrillic characters in channel names (e.g. "тест").

@ -2120,6 +2120,18 @@ describe('[Rooms]', () => {
});
describe('[/rooms.autocomplete.channelAndPrivate]', () => {
let testChannel: IRoom;
before(async () => {
await updateSetting('UI_Allow_room_names_with_special_chars', true);
testChannel = (await createRoom({ type: 'c', name: 'тест' })).body.channel;
});
after(async () => {
await updateSetting('UI_Allow_room_names_with_special_chars', true);
await deleteRoom({ type: 'c', roomId: testChannel._id });
});
it('should return an error when the required parameter "selector" is not provided', (done) => {
void request
.get(api('rooms.autocomplete.channelAndPrivate'))
@ -2146,6 +2158,21 @@ describe('[Rooms]', () => {
})
.end(done);
});
it('should return the rooms with cyrillic characters in channel name', (done) => {
void request
.get(api('rooms.autocomplete.channelAndPrivate'))
.query({ selector: '{ "name": "тест" }' })
.set(credentials)
.expect('Content-Type', 'application/json')
.expect(200)
.expect((res) => {
expect(res.body).to.have.property('success', true);
expect(res.body).to.have.property('items').and.to.be.an('array');
expect(res.body.items).to.have.lengthOf(1);
expect(res.body.items[0].fname).to.be.equal('тест');
})
.end(done);
});
});
describe('[/rooms.autocomplete.channelAndPrivate.withPagination]', () => {

@ -301,7 +301,7 @@ export class RoomsRaw extends BaseRaw<IRoom> implements IRoomsModel {
t: {
$in: ['c', 'p'],
},
name: nameRegex,
$and: [{ $or: [{ name: nameRegex }, { fname: nameRegex }] }, { federated: { $ne: true } }, { archived: { $ne: true } }],
$or: [
{
teamId: {
@ -318,7 +318,6 @@ export class RoomsRaw extends BaseRaw<IRoom> implements IRoomsModel {
},
],
prid: { $exists: false },
$and: [{ federated: { $ne: true } }, { archived: { $ne: true } }],
};
return this.find(query, options);

Loading…
Cancel
Save