| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- import { provideHttpClient } from '@angular/common/http';
- import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing';
- import { TestBed } from '@angular/core/testing';
- import { API_CONFIG } from '../../core/app.constants';
- import { SessionService } from '../../core/session.service';
- import { ReadingCloudService } from './reading-cloud.service';
- describe('ReadingCloudService', () => {
- let service: ReadingCloudService;
- let http: HttpTestingController;
- let token: string;
- beforeEach(() => {
- localStorage.removeItem('NCloud/dev/User');
- localStorage.removeItem('xiaoshu.reading.user');
- localStorage.setItem('NCloud/dev/User', JSON.stringify({ objectId: 'legacy-user', sessionToken: 'r:legacy-token' }));
- token = '';
- TestBed.configureTestingModule({ providers: [
- provideHttpClient(),
- provideHttpClientTesting(),
- { provide: SessionService, useValue: { token: () => token } },
- ] });
- service = TestBed.inject(ReadingCloudService);
- http = TestBed.inject(HttpTestingController);
- });
- afterEach(() => {
- http.verify();
- localStorage.removeItem('NCloud/dev/User');
- localStorage.removeItem('xiaoshu.reading.user');
- });
- it('uses the current H5 login session to load the migrated reading profile', async () => {
- token = 'r:token-1';
- const result = service.ensureUser({ userId: 7, objectId: 'user-1', mobile: '13800000000', honeyName: '小树' });
- const request = http.expectOne(API_CONFIG.cloudFunctionUrl);
- expect(request.request.body).toEqual({ token: 'r:token-1', params: { action: 'reading/me' } });
- request.flush({ retcode: 0, result: { objectId: 'user-1', username: 'member-7', nickname: '小树' } });
- expect((await result).objectId).toBe('user-1');
- expect(JSON.parse(localStorage.getItem('xiaoshu.reading.user') || '{}').sessionToken).toBe('r:token-1');
- expect(localStorage.getItem('NCloud/dev/User')).toBeNull();
- });
- it('sends filters and the active session token only to the reading cloud gateway', async () => {
- token = 'r:token-1';
- const profile = service.ensureUser({ userId: 7, objectId: 'user-1', mobile: '13800000000' });
- http.expectOne(API_CONFIG.cloudFunctionUrl).flush({ retcode: 0, result: { objectId: 'user-1', username: 'member-7' } });
- await profile;
- const query = service.query('SurveyItem', { type: 'reading', isDeleted: { '$ne': true } }, { order: '-createdAt', limit: 3 });
- const request = http.expectOne(API_CONFIG.cloudFunctionUrl);
- expect(request.request.body).toEqual({
- token: 'r:token-1',
- params: { action: 'reading/query', className: 'SurveyItem', where: { type: 'reading', isDeleted: { '$ne': true } }, order: '-createdAt', limit: 3 },
- });
- request.flush({ retcode: 0, result: [] });
- expect(await query).toEqual([]);
- });
- });
|