Skip to content

Commit

Permalink
fix tests
Browse files Browse the repository at this point in the history
  • Loading branch information
FrancescoMolinaro committed Dec 27, 2023
1 parent e5cf16c commit 5feaa1b
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 17 deletions.
26 changes: 15 additions & 11 deletions src/app/core/submission/workspaceitem-data.service.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@ import { RequestEntry } from '../data/request-entry.model';
import { CoreState } from '../core-state.model';
import { testSearchDataImplementation } from '../data/base/search-data.spec';
import { testDeleteDataImplementation } from '../data/base/delete-data.spec';
import { SearchData } from '../data/base/search-data';
import { DeleteData } from '../data/base/delete-data';
import { RequestParam } from '../cache/models/request-param.model';

describe('WorkspaceitemDataService test', () => {
let scheduler: TestScheduler;
Expand Down Expand Up @@ -68,34 +71,36 @@ describe('WorkspaceitemDataService test', () => {
const wsiRD = createSuccessfulRemoteDataObject(wsi);

const endpointURL = `https://rest.api/rest/api/submission/workspaceitems`;
const searchRequestURL = `https://rest.api/rest/api/submission/workspaceitems/search/item?uuid=1234-1234`;
const searchRequestURL$ = observableOf(searchRequestURL);

const requestUUID = '8b3c613a-5a4b-438b-9686-be1d5b4a1c5a';

objectCache = {} as ObjectCacheService;
const notificationsService = {} as NotificationsService;
const http = {} as HttpClient;
const comparator = {} as any;
const comparatorEntry = {} as any;
const store = {} as Store<CoreState>;
const pageInfo = new PageInfo();

function initTestService() {
hrefOnlyDataService = getMockHrefOnlyDataService();
return new WorkspaceitemDataService(
comparatorEntry,
halService,
http,
notificationsService,
requestService,
rdbService,
objectCache,
halService,
notificationsService,
store
);
}

describe('composition', () => {
const initService = () => new WorkspaceitemDataService(null, null, null, null, null);
testSearchDataImplementation(initService);
testDeleteDataImplementation(initService);
const initSearchService = () => new WorkspaceitemDataService(null, null, null, null, null, null, null, null) as unknown as SearchData<any>;
const initDeleteService = () => new WorkspaceitemDataService(null, null, null, null, null, null, null, null) as unknown as DeleteData<any>;

testSearchDataImplementation(initSearchService);
testDeleteDataImplementation(initDeleteService);
});

describe('', () => {
Expand Down Expand Up @@ -126,7 +131,6 @@ describe('WorkspaceitemDataService test', () => {
service = initTestService();

spyOn((service as any), 'findByHref').and.callThrough();
spyOn((service as any), 'getSearchByHref').and.returnValue(searchRequestURL$);
});

afterEach(() => {
Expand All @@ -137,8 +141,8 @@ describe('WorkspaceitemDataService test', () => {
it('should proxy the call to DataService.findByHref', () => {
scheduler.schedule(() => service.findByItem('1234-1234', true, true, pageInfo));
scheduler.flush();

expect((service as any).findByHref).toHaveBeenCalledWith(searchRequestURL$, true, true);
const searchUrl = service.getIDHref('item', [new RequestParam('uuid', encodeURIComponent('1234-1234'))]);
expect((service as any).findByHref).toHaveBeenCalledWith(searchUrl, true, true);
});

it('should return a RemoteData<WorkspaceItem> for the search', () => {
Expand Down
14 changes: 12 additions & 2 deletions src/app/core/submission/workspaceitem-data.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,16 +23,19 @@ import {hasValue} from '../../shared/empty.util';
import { IdentifiableDataService } from '../data/base/identifiable-data.service';
import { NoContent } from '../shared/NoContent.model';
import { DeleteData, DeleteDataImpl } from '../data/base/delete-data';
import { SearchData, SearchDataImpl } from '../data/base/search-data';
import { PaginatedList } from '../data/paginated-list.model';

/**
* A service that provides methods to make REST requests with workspaceitems endpoint.
*/
@Injectable()
@dataService(WorkspaceItem.type)
export class WorkspaceitemDataService extends IdentifiableDataService<WorkspaceItem> {
export class WorkspaceitemDataService extends IdentifiableDataService<WorkspaceItem> implements DeleteData<WorkspaceItem>, SearchData<WorkspaceItem>{
protected linkPath = 'workspaceitems';
protected searchByItemLinkPath = 'item';
private deleteData: DeleteData<WorkspaceItem>;
private searchData: SearchData<WorkspaceItem>;

constructor(
protected comparator: DSOChangeAnalyzer<WorkspaceItem>,
Expand All @@ -45,7 +48,7 @@ export class WorkspaceitemDataService extends IdentifiableDataService<WorkspaceI
protected store: Store<CoreState>) {
super('workspaceitems', requestService, rdbService, objectCache, halService);
this.deleteData = new DeleteDataImpl(this.linkPath, requestService, rdbService, objectCache, halService, notificationsService, this.responseMsToLive, this.constructIdEndpoint);

this.searchData = new SearchDataImpl(this.linkPath, requestService, rdbService, objectCache, halService, this.responseMsToLive);
}
public delete(objectId: string, copyVirtualMetadata?: string[]): Observable<RemoteData<NoContent>> {
return this.deleteData.delete(objectId, copyVirtualMetadata);
Expand Down Expand Up @@ -93,4 +96,11 @@ export class WorkspaceitemDataService extends IdentifiableDataService<WorkspaceI
return this.rdbService.buildFromRequestUUID(requestId);

Check warning on line 96 in src/app/core/submission/workspaceitem-data.service.ts

View check run for this annotation

Codecov / codecov/patch

src/app/core/submission/workspaceitem-data.service.ts#L96

Added line #L96 was not covered by tests
}

deleteByHref(href: string, copyVirtualMetadata?: string[]): Observable<RemoteData<NoContent>> {
return this.deleteData.deleteByHref(href, copyVirtualMetadata);
}

searchBy(searchMethod: string, options?: FindListOptions, useCachedVersionIfAvailable?: boolean, reRequestOnStale?: boolean, ...linksToFollow: FollowLinkConfig<WorkspaceItem>[]): Observable<RemoteData<PaginatedList<WorkspaceItem>>> {
return this.searchData.searchBy(searchMethod, options, useCachedVersionIfAvailable, reRequestOnStale, ...linksToFollow);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,13 @@ import { SuggestionsService } from '../suggestions.service';
describe('SuggestionsPopupComponent', () => {
let component: SuggestionsPopupComponent;
let fixture: ComponentFixture<SuggestionsPopupComponent>;
let notificationsService: NotificationsService;

const suggestionStateService = jasmine.createSpyObj('SuggestionTargetsStateService', {
hasUserVisitedSuggestions: jasmine.createSpy('hasUserVisitedSuggestions'),
getCurrentUserSuggestionTargets: jasmine.createSpy('getCurrentUserSuggestionTargets'),
dispatchMarkUserSuggestionsAsVisitedAction: jasmine.createSpy('dispatchMarkUserSuggestionsAsVisitedAction')
dispatchMarkUserSuggestionsAsVisitedAction: jasmine.createSpy('dispatchMarkUserSuggestionsAsVisitedAction'),
dispatchRefreshUserSuggestionsAction: jasmine.createSpy('dispatchRefreshUserSuggestionsAction')
});

const mockNotificationInterpolation = { count: 12, source: 'source', suggestionId: 'id', displayName: 'displayName' };
Expand Down Expand Up @@ -60,18 +62,20 @@ describe('SuggestionsPopupComponent', () => {
describe('when there are publication suggestions', () => {

beforeEach(() => {

suggestionStateService.hasUserVisitedSuggestions.and.returnValue(observableOf(false));
suggestionStateService.getCurrentUserSuggestionTargets.and.returnValue(observableOf([mockSuggestionTargetsObjectOne]));
suggestionStateService.dispatchMarkUserSuggestionsAsVisitedAction.and.returnValue(observableOf(null));
suggestionStateService.dispatchRefreshUserSuggestionsAction.and.returnValue(observableOf(null));

fixture = TestBed.createComponent(SuggestionsPopupComponent);
component = fixture.componentInstance;
notificationsService = (component as any).notificationsService;
fixture.detectChanges();
});

it('should show a notification when new publication suggestions are available', () => {
expect((component as any).notificationsService.success).toHaveBeenCalled();
expect(notificationsService.success).toHaveBeenCalled();
expect(suggestionStateService.dispatchRefreshUserSuggestionsAction).toHaveBeenCalled();
expect(suggestionStateService.dispatchMarkUserSuggestionsAsVisitedAction).toHaveBeenCalled();
});

Expand Down
4 changes: 3 additions & 1 deletion src/environments/environment.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -319,5 +319,7 @@ export const environment: BuildConfig = {
vocabulary: 'srsc',
enabled: true
}
]
],

suggestion: []
};

0 comments on commit 5feaa1b

Please sign in to comment.