diff --git a/.prettierrc.json b/.prettierrc.json index 116edcd8f..9a494cbc9 100644 --- a/.prettierrc.json +++ b/.prettierrc.json @@ -1,6 +1,7 @@ { "semi": true, "trailingComma": "all", + "printWidth": 120, "overrides": [ { "files": "*.test.ts", @@ -9,7 +10,10 @@ } }, { - "files": ["*.html", "**/*.ts"], + "files": [ + "*.html", + "**/*.ts" + ], "options": { "tabWidth": 4 } diff --git a/src/app/api/account.api.ts b/src/app/api/account.api.ts index 198d76a84..5f0d58b81 100644 --- a/src/app/api/account.api.ts +++ b/src/app/api/account.api.ts @@ -6,9 +6,7 @@ import { AccountDetailsFragment } from "./kamu.graphql.interface"; @Injectable({ providedIn: "root" }) export class AccountApi { - public getAccountInfoByName( - name: string, - ): Observable { + public getAccountInfoByName(name: string): Observable { return of({ ...mockAccountDetails, login: name }); } } diff --git a/src/app/api/auth.api.spec.ts b/src/app/api/auth.api.spec.ts index 548f0cb24..d703a006c 100644 --- a/src/app/api/auth.api.spec.ts +++ b/src/app/api/auth.api.spec.ts @@ -2,15 +2,8 @@ import { NavigationService } from "src/app/services/navigation.service"; import { fakeAsync, TestBed, tick } from "@angular/core/testing"; import { Apollo } from "apollo-angular"; import { AuthApi } from "./auth.api"; -import { - AccountDetailsFragment, - FetchAccountInfoDocument, - GithubLoginDocument, -} from "./kamu.graphql.interface"; -import { - ApolloTestingController, - ApolloTestingModule, -} from "apollo-angular/testing"; +import { AccountDetailsFragment, FetchAccountInfoDocument, GithubLoginDocument } from "./kamu.graphql.interface"; +import { ApolloTestingController, ApolloTestingModule } from "apollo-angular/testing"; import { mockGithubLoginResponse, mockLogin401Error, @@ -45,14 +38,10 @@ describe("AuthApi", () => { }); function loginViaAccessToken(): void { - service - .fetchUserInfoFromAccessToken(TEST_ACCESS_TOKEN) - .subscribe(() => { - expect(service.isAuthenticated).toBeTrue(); - expect(service.currentUser).toBe( - mockUserInfoFromAccessToken.auth.accountInfo, - ); - }); + service.fetchUserInfoFromAccessToken(TEST_ACCESS_TOKEN).subscribe(() => { + expect(service.isAuthenticated).toBeTrue(); + expect(service.currentUser).toBe(mockUserInfoFromAccessToken.auth.accountInfo); + }); const op = controller.expectOne(FetchAccountInfoDocument); expect(op.operation.variables.accessToken).toEqual(TEST_ACCESS_TOKEN); @@ -63,18 +52,14 @@ describe("AuthApi", () => { } function loginFullyViaGithub(): void { - service - .fetchUserInfoAndTokenFromGithubCallackCode(TEST_GITHUB_CODE) - .subscribe(() => { - expect(service.isAuthenticated).toBeTrue(); - expect(service.currentUser).toBe( - mockGithubLoginResponse.auth.githubLogin.accountInfo, - ); - expect(localStorageSetItemSpy).toHaveBeenCalledWith( - AppValues.LOCAL_STORAGE_ACCESS_TOKEN, - mockGithubLoginResponse.auth.githubLogin.token.accessToken, - ); - }); + service.fetchUserInfoAndTokenFromGithubCallackCode(TEST_GITHUB_CODE).subscribe(() => { + expect(service.isAuthenticated).toBeTrue(); + expect(service.currentUser).toBe(mockGithubLoginResponse.auth.githubLogin.accountInfo); + expect(localStorageSetItemSpy).toHaveBeenCalledWith( + AppValues.LOCAL_STORAGE_ACCESS_TOKEN, + mockGithubLoginResponse.auth.githubLogin.token.accessToken, + ); + }); const op = controller.expectOne(GithubLoginDocument); expect(op.operation.variables.code).toEqual(TEST_GITHUB_CODE); @@ -100,12 +85,10 @@ describe("AuthApi", () => { it("should check user changes via login with alive access token", fakeAsync(() => { let callbackInvoked = false; - service.onUserChanges.subscribe( - (user: MaybeNull) => { - callbackInvoked = true; - user ? checkUserIsLogged(user) : fail("User must not be null"); - }, - ); + service.onUserChanges.subscribe((user: MaybeNull) => { + callbackInvoked = true; + user ? checkUserIsLogged(user) : fail("User must not be null"); + }); loginViaAccessToken(); tick(); @@ -133,9 +116,7 @@ describe("AuthApi", () => { .subscribe( () => fail("Unexpected success"), (e: Error) => { - expect(e).toEqual( - new AuthenticationError([mockLogin401Error]), - ); + expect(e).toEqual(new AuthenticationError([mockLogin401Error])); }, ); @@ -155,9 +136,7 @@ describe("AuthApi", () => { .subscribe( () => fail("Unexpected success"), (e: Error) => { - expect(e).toEqual( - new AuthenticationError([mockLogin401Error]), - ); + expect(e).toEqual(new AuthenticationError([mockLogin401Error])); }, ); diff --git a/src/app/api/auth.api.ts b/src/app/api/auth.api.ts index 732dd53fe..752d3bef4 100644 --- a/src/app/api/auth.api.ts +++ b/src/app/api/auth.api.ts @@ -21,8 +21,7 @@ import { AuthenticationError } from "../common/errors"; export class AuthApi { private user: MaybeNull = null; - private userChanges$: Subject> = - new Subject>(); + private userChanges$: Subject> = new Subject>(); constructor( private githubLoginGQL: GithubLoginGQL, @@ -47,17 +46,12 @@ export class AuthApi { this.userChanges$.next(user); } - public fetchUserInfoAndTokenFromGithubCallackCode( - code: string, - ): Observable { + public fetchUserInfoAndTokenFromGithubCallackCode(code: string): Observable { return this.githubLoginGQL.mutate({ code }).pipe( map((result: MutationResult) => { if (result.data) { const data: GithubLoginMutation = result.data; - localStorage.setItem( - AppValues.LOCAL_STORAGE_ACCESS_TOKEN, - data.auth.githubLogin.token.accessToken, - ); + localStorage.setItem(AppValues.LOCAL_STORAGE_ACCESS_TOKEN, data.auth.githubLogin.token.accessToken); this.changeUser(data.auth.githubLogin.accountInfo); } else { throw new AuthenticationError(result.errors ?? []); diff --git a/src/app/api/dataset.api.spec.ts b/src/app/api/dataset.api.spec.ts index b08c8c281..fdfa421cb 100644 --- a/src/app/api/dataset.api.spec.ts +++ b/src/app/api/dataset.api.spec.ts @@ -12,10 +12,7 @@ import { mockDatasetMainDataResponse, } from "./../search/mock.data"; import { TestBed } from "@angular/core/testing"; -import { - ApolloTestingController, - ApolloTestingModule, -} from "apollo-angular/testing"; +import { ApolloTestingController, ApolloTestingModule } from "apollo-angular/testing"; import { DatasetApi } from "./dataset.api"; import { CommitEventToDatasetDocument, @@ -60,9 +57,7 @@ describe("DatasetApi", () => { datasetName: TEST_DATASET_NAME, }) .subscribe((res: GetDatasetMainDataQuery) => { - expect(res.datasets.byOwnerAndName?.name).toEqual( - "alberta.case-details", - ); + expect(res.datasets.byOwnerAndName?.name).toEqual("alberta.case-details"); expect(res.datasets.byOwnerAndName?.id).toEqual( "did:odf:z4k88e8rxU6m5wCnK9idM5sGAxAGfvUgNgQbckwJ4ro78tXMLSu", ); @@ -91,9 +86,7 @@ describe("DatasetApi", () => { actualQuery.__typename === "DataQueryResultSuccess" && expectedQuery.__typename === "DataQueryResultSuccess" ) { - expect(actualQuery.data.content).toEqual( - expectedQuery.data.content, - ); + expect(actualQuery.data.content).toEqual(expectedQuery.data.content); } else { fail("expecting successful query"); } @@ -117,12 +110,8 @@ describe("DatasetApi", () => { numPage: 1, }) .subscribe((res: GetDatasetHistoryQuery) => { - expect( - res.datasets.byOwnerAndName?.metadata.chain.blocks - .totalCount, - ).toEqual( - mockDatasetHistoryResponse.datasets.byOwnerAndName?.metadata - .chain.blocks.totalCount, + expect(res.datasets.byOwnerAndName?.metadata.chain.blocks.totalCount).toEqual( + mockDatasetHistoryResponse.datasets.byOwnerAndName?.metadata.chain.blocks.totalCount, ); }); @@ -136,18 +125,14 @@ describe("DatasetApi", () => { }); it("should extract datasets by account name", () => { - service - .fetchDatasetsByAccountName(TEST_USER_NAME) - .subscribe((res: DatasetsByAccountNameQuery) => { - expect(res.datasets.byAccountName.totalCount).toEqual( - mockDatasetsByAccountNameQuery.datasets.byAccountName - .totalCount, - ); - expect(res.datasets.byAccountName.nodes[0].name).toEqual( - mockDatasetsByAccountNameQuery.datasets.byAccountName - .nodes[0].name, - ); - }); + service.fetchDatasetsByAccountName(TEST_USER_NAME).subscribe((res: DatasetsByAccountNameQuery) => { + expect(res.datasets.byAccountName.totalCount).toEqual( + mockDatasetsByAccountNameQuery.datasets.byAccountName.totalCount, + ); + expect(res.datasets.byAccountName.nodes[0].name).toEqual( + mockDatasetsByAccountNameQuery.datasets.byAccountName.nodes[0].name, + ); + }); const op = controller.expectOne(DatasetsByAccountNameDocument); expect(op.operation.variables.accountName).toEqual(TEST_USER_NAME); @@ -158,9 +143,7 @@ describe("DatasetApi", () => { }); it("should load block by hash", () => { - const blockByHash = - mockGetMetadataBlockQuery.datasets.byOwnerAndName?.metadata.chain - .blockByHash; + const blockByHash = mockGetMetadataBlockQuery.datasets.byOwnerAndName?.metadata.chain.blockByHash; service .getBlockByHash({ accountName: TEST_USER_NAME, @@ -168,14 +151,12 @@ describe("DatasetApi", () => { blockHash: TEST_BLOCK_HASH, }) .subscribe((res: GetMetadataBlockQuery) => { - expect( - res.datasets.byOwnerAndName?.metadata.chain.blockByHash - ?.blockHash, - ).toEqual(blockByHash?.blockHash); - expect( - res.datasets.byOwnerAndName?.metadata.chain.blockByHash - ?.author.name, - ).toEqual(blockByHash?.author.name); + expect(res.datasets.byOwnerAndName?.metadata.chain.blockByHash?.blockHash).toEqual( + blockByHash?.blockHash, + ); + expect(res.datasets.byOwnerAndName?.metadata.chain.blockByHash?.author.name).toEqual( + blockByHash?.author.name, + ); }); const op = controller.expectOne(GetMetadataBlockDocument); @@ -195,14 +176,9 @@ describe("DatasetApi", () => { datasetId: mockDatasetId, event: mockEvent, }) - .subscribe( - (res: CommitEventToDatasetMutation | null | undefined) => { - expect( - res?.datasets.byId?.metadata.chain.commitEvent - .__typename, - ).toEqual("CommitResultSuccess"); - }, - ); + .subscribe((res: CommitEventToDatasetMutation | null | undefined) => { + expect(res?.datasets.byId?.metadata.chain.commitEvent.__typename).toEqual("CommitResultSuccess"); + }); const op = controller.expectOne(CommitEventToDatasetDocument); expect(op.operation.variables.datasetId).toEqual(mockDatasetId); diff --git a/src/app/api/dataset.api.ts b/src/app/api/dataset.api.ts index e4f99d2e3..d72a8b9ae 100644 --- a/src/app/api/dataset.api.ts +++ b/src/app/api/dataset.api.ts @@ -78,18 +78,13 @@ export class DatasetApi { ); } - public getDatasetDataSqlRun(params: { - query: string; - limit: number; - }): Observable { - return this.datasetDataSqlRunGQL - .watch({ query: params.query, limit: params.limit }) - .valueChanges.pipe( - first(), - map((result: ApolloQueryResult) => { - return result.data; - }), - ); + public getDatasetDataSqlRun(params: { query: string; limit: number }): Observable { + return this.datasetDataSqlRunGQL.watch({ query: params.query, limit: params.limit }).valueChanges.pipe( + first(), + map((result: ApolloQueryResult) => { + return result.data; + }), + ); } public getDatasetHistory(params: { @@ -113,9 +108,7 @@ export class DatasetApi { ); } - public getDatasetSchema( - datasetId: string, - ): Observable { + public getDatasetSchema(datasetId: string): Observable { return this.datasetSchemaGQL .watch({ datasetId, @@ -133,14 +126,12 @@ export class DatasetApi { page = 0, perPage = 10, ): Observable { - return this.datasetsByAccountNameGQL - .watch({ accountName, perPage, page }) - .valueChanges.pipe( - first(), - map((result: ApolloQueryResult) => { - return result.data; - }), - ); + return this.datasetsByAccountNameGQL.watch({ accountName, perPage, page }).valueChanges.pipe( + first(), + map((result: ApolloQueryResult) => { + return result.data; + }), + ); } public getBlockByHash(params: { @@ -186,13 +177,9 @@ export class DatasetApi { }) .valueChanges.pipe( first(), - map( - ( - result: ApolloQueryResult, - ) => { - return result.data; - }, - ), + map((result: ApolloQueryResult) => { + return result.data; + }), ); } @@ -200,18 +187,12 @@ export class DatasetApi { accountId: string, snapshot: string, ): Observable { - return this.createDatasetFromSnapshotGQL - .mutate({ accountId, snapshot }) - .pipe( - first(), - map( - ( - result: MutationResult, - ) => { - return result.data; - }, - ), - ); + return this.createDatasetFromSnapshotGQL.mutate({ accountId, snapshot }).pipe( + first(), + map((result: MutationResult) => { + return result.data; + }), + ); } public createEmptyDataset( @@ -219,14 +200,12 @@ export class DatasetApi { datasetKind: DatasetKind, datasetName: string, ): Observable { - return this.createEmptyDatasetGQL - .mutate({ accountId, datasetKind, datasetName }) - .pipe( - first(), - map((result: MutationResult) => { - return result.data; - }), - ); + return this.createEmptyDatasetGQL.mutate({ accountId, datasetKind, datasetName }).pipe( + first(), + map((result: MutationResult) => { + return result.data; + }), + ); } public commitEvent(params: { @@ -246,10 +225,7 @@ export class DatasetApi { ); } - public updateReadme( - datasetId: string, - content: string, - ): Observable { + public updateReadme(datasetId: string, content: string): Observable { return this.updateReadmeGQL .mutate({ datasetId, diff --git a/src/app/api/kamu.graphql.interface.ts b/src/app/api/kamu.graphql.interface.ts index 45057e2bc..8332e7de4 100644 --- a/src/app/api/kamu.graphql.interface.ts +++ b/src/app/api/kamu.graphql.interface.ts @@ -157,18 +157,16 @@ export type CreateDatasetResult = { message: Scalars["String"]; }; -export type CreateDatasetResultInvalidSnapshot = - CreateDatasetFromSnapshotResult & { - __typename?: "CreateDatasetResultInvalidSnapshot"; - message: Scalars["String"]; - }; +export type CreateDatasetResultInvalidSnapshot = CreateDatasetFromSnapshotResult & { + __typename?: "CreateDatasetResultInvalidSnapshot"; + message: Scalars["String"]; +}; -export type CreateDatasetResultMissingInputs = - CreateDatasetFromSnapshotResult & { - __typename?: "CreateDatasetResultMissingInputs"; - message: Scalars["String"]; - missingInputs: Array; - }; +export type CreateDatasetResultMissingInputs = CreateDatasetFromSnapshotResult & { + __typename?: "CreateDatasetResultMissingInputs"; + message: Scalars["String"]; + missingInputs: Array; +}; export type CreateDatasetResultNameCollision = CreateDatasetFromSnapshotResult & CreateDatasetResult & { @@ -458,9 +456,7 @@ export type EnvVar = { value?: Maybe; }; -export type EventTimeSource = - | EventTimeSourceFromMetadata - | EventTimeSourceFromPath; +export type EventTimeSource = EventTimeSourceFromMetadata | EventTimeSourceFromPath; export type EventTimeSourceFromMetadata = { __typename?: "EventTimeSourceFromMetadata"; @@ -521,10 +517,7 @@ export type LoginResponse = { token: AccessToken; }; -export type MergeStrategy = - | MergeStrategyAppend - | MergeStrategyLedger - | MergeStrategySnapshot; +export type MergeStrategy = MergeStrategyAppend | MergeStrategyLedger | MergeStrategySnapshot; export type MergeStrategyAppend = { __typename?: "MergeStrategyAppend"; @@ -746,12 +739,7 @@ export enum QueryDialect { SqlSpark = "SQL_SPARK", } -export type ReadStep = - | ReadStepCsv - | ReadStepEsriShapefile - | ReadStepGeoJson - | ReadStepJsonLines - | ReadStepParquet; +export type ReadStep = ReadStepCsv | ReadStepEsriShapefile | ReadStepGeoJson | ReadStepJsonLines | ReadStepParquet; export type ReadStepCsv = { __typename?: "ReadStepCsv"; @@ -1188,9 +1176,7 @@ export type DatasetByAccountAndDatasetNameQuery = { __typename?: "Query"; datasets: { __typename?: "Datasets"; - byOwnerAndName?: - | ({ __typename?: "Dataset" } & DatasetBasicsFragment) - | null; + byOwnerAndName?: ({ __typename?: "Dataset" } & DatasetBasicsFragment) | null; }; }; @@ -1322,9 +1308,7 @@ export type DatasetsByAccountNameQuery = { byAccountName: { __typename?: "DatasetConnection"; totalCount: number; - nodes: Array< - { __typename: "Dataset" } & DatasetSearchOverviewFragment - >; + nodes: Array<{ __typename: "Dataset" } & DatasetSearchOverviewFragment>; pageInfo: { __typename?: "PageBasedInfo"; } & DatasetPageInfoFragment; @@ -1584,9 +1568,7 @@ export type DatasetBasicsFragment = { id: any; kind: DatasetKind; name: any; - owner: - | { __typename?: "Organization"; id: any; name: string } - | { __typename?: "User"; id: any; name: string }; + owner: { __typename?: "Organization"; id: any; name: string } | { __typename?: "User"; id: any; name: string }; }; export type DatasetCurrentInfoFragment = { @@ -1622,9 +1604,7 @@ export type DatasetDescriptionFragment = { metadata: { __typename?: "DatasetMetadata"; currentInfo: { __typename?: "SetInfo" } & DatasetCurrentInfoFragment; - currentLicense?: - | ({ __typename?: "SetLicense" } & LicenseFragment) - | null; + currentLicense?: ({ __typename?: "SetLicense" } & LicenseFragment) | null; }; }; @@ -1641,9 +1621,7 @@ export type DatasetDetailsFragment = { metadata: { __typename?: "DatasetMetadata"; currentWatermark?: any | null; - currentLicense?: - | ({ __typename?: "SetLicense" } & LicenseFragment) - | null; + currentLicense?: ({ __typename?: "SetLicense" } & LicenseFragment) | null; }; }; @@ -1756,25 +1734,19 @@ export type DatasetMetadataSummaryFragment = { __typename: "DatasetMetadata"; currentWatermark?: any | null; currentInfo: { __typename?: "SetInfo" } & DatasetCurrentInfoFragment; - currentLicense?: - | ({ __typename?: "SetLicense" } & LicenseFragment) - | null; + currentLicense?: ({ __typename?: "SetLicense" } & LicenseFragment) | null; currentSource?: | ({ __typename?: "SetPollingSource"; } & SetPollingSourceEventFragment) | null; - currentTransform?: - | ({ __typename?: "SetTransform" } & DatasetTransformFragment) - | null; + currentTransform?: ({ __typename?: "SetTransform" } & DatasetTransformFragment) | null; currentSchema?: { __typename: "DataSchema"; format: DataSchemaFormat; content: string; } | null; - currentVocab?: - | ({ __typename?: "SetVocab" } & SetVocabEventFragment) - | null; + currentVocab?: ({ __typename?: "SetVocab" } & SetVocabEventFragment) | null; }; } & DatasetBasicsFragment & DatasetReadmeFragment & @@ -1812,9 +1784,7 @@ export type DatasetSearchOverviewFragment = { metadata: { __typename?: "DatasetMetadata"; currentInfo: { __typename?: "SetInfo" } & DatasetCurrentInfoFragment; - currentLicense?: - | ({ __typename?: "SetLicense" } & LicenseFragment) - | null; + currentLicense?: ({ __typename?: "SetLicense" } & LicenseFragment) | null; currentDownstreamDependencies: Array<{ __typename?: "Dataset"; id: any; @@ -1866,9 +1836,7 @@ export type MetadataBlockFragment = { prevBlockHash?: any | null; systemTime: any; sequenceNumber: number; - author: - | { __typename: "Organization"; id: any; name: string } - | { __typename: "User"; id: any; name: string }; + author: { __typename: "Organization"; id: any; name: string } | { __typename: "User"; id: any; name: string }; event: | ({ __typename: "AddData" } & AddDataEventFragment) | ({ __typename: "ExecuteQuery" } & ExecuteQueryEventFragment) @@ -1975,9 +1943,7 @@ export type SearchDatasetsOverviewQuery = { query: { __typename?: "SearchResultConnection"; totalCount: number; - nodes: Array< - { __typename: "Dataset" } & DatasetSearchOverviewFragment - >; + nodes: Array<{ __typename: "Dataset" } & DatasetSearchOverviewFragment>; pageInfo: { __typename?: "PageBasedInfo"; } & DatasetPageInfoFragment; @@ -2580,17 +2546,9 @@ export class CommitEventToDatasetGQL extends Apollo.Mutation< } } export const CreateEmptyDatasetDocument = gql` - mutation createEmptyDataset( - $accountId: AccountID! - $datasetKind: DatasetKind! - $datasetName: DatasetName! - ) { + mutation createEmptyDataset($accountId: AccountID!, $datasetKind: DatasetKind!, $datasetName: DatasetName!) { datasets { - createEmpty( - accountId: $accountId - datasetKind: $datasetKind - datasetName: $datasetName - ) { + createEmpty(accountId: $accountId, datasetKind: $datasetKind, datasetName: $datasetName) { message } } @@ -2611,16 +2569,9 @@ export class CreateEmptyDatasetGQL extends Apollo.Mutation< } } export const CreateDatasetFromSnapshotDocument = gql` - mutation createDatasetFromSnapshot( - $accountId: AccountID! - $snapshot: String! - ) { + mutation createDatasetFromSnapshot($accountId: AccountID!, $snapshot: String!) { datasets { - createFromSnapshot( - accountId: $accountId - snapshot: $snapshot - snapshotFormat: YAML - ) { + createFromSnapshot(accountId: $accountId, snapshot: $snapshot, snapshotFormat: YAML) { message ... on CreateDatasetResultSuccess { dataset { @@ -2667,10 +2618,7 @@ export const UpdateReadmeDocument = gql` @Injectable({ providedIn: "root", }) -export class UpdateReadmeGQL extends Apollo.Mutation< - UpdateReadmeMutation, - UpdateReadmeMutationVariables -> { +export class UpdateReadmeGQL extends Apollo.Mutation { document = UpdateReadmeDocument; constructor(apollo: Apollo.Apollo) { @@ -2678,15 +2626,9 @@ export class UpdateReadmeGQL extends Apollo.Mutation< } } export const DatasetByAccountAndDatasetNameDocument = gql` - query datasetByAccountAndDatasetName( - $accountName: AccountName! - $datasetName: DatasetName! - ) { + query datasetByAccountAndDatasetName($accountName: AccountName!, $datasetName: DatasetName!) { datasets { - byOwnerAndName( - accountName: $accountName - datasetName: $datasetName - ) { + byOwnerAndName(accountName: $accountName, datasetName: $datasetName) { ...DatasetBasics } } @@ -2721,10 +2663,7 @@ export const DatasetByIdDocument = gql` @Injectable({ providedIn: "root", }) -export class DatasetByIdGQL extends Apollo.Query< - DatasetByIdQuery, - DatasetByIdQueryVariables -> { +export class DatasetByIdGQL extends Apollo.Query { document = DatasetByIdDocument; constructor(apollo: Apollo.Apollo) { @@ -2770,17 +2709,9 @@ export class GetDatasetDataSqlRunGQL extends Apollo.Query< } } export const GetDatasetHistoryDocument = gql` - query getDatasetHistory( - $accountName: AccountName! - $datasetName: DatasetName! - $perPage: Int - $page: Int - ) { + query getDatasetHistory($accountName: AccountName!, $datasetName: DatasetName!, $perPage: Int, $page: Int) { datasets { - byOwnerAndName( - accountName: $accountName - datasetName: $datasetName - ) { + byOwnerAndName(accountName: $accountName, datasetName: $datasetName) { ...DatasetBasics metadata { chain { @@ -2806,10 +2737,7 @@ export const GetDatasetHistoryDocument = gql` @Injectable({ providedIn: "root", }) -export class GetDatasetHistoryGQL extends Apollo.Query< - GetDatasetHistoryQuery, - GetDatasetHistoryQueryVariables -> { +export class GetDatasetHistoryGQL extends Apollo.Query { document = GetDatasetHistoryDocument; constructor(apollo: Apollo.Apollo) { @@ -2817,16 +2745,9 @@ export class GetDatasetHistoryGQL extends Apollo.Query< } } export const GetDatasetMainDataDocument = gql` - query getDatasetMainData( - $accountName: AccountName! - $datasetName: DatasetName! - $limit: Int - ) { + query getDatasetMainData($accountName: AccountName!, $datasetName: DatasetName!, $limit: Int) { datasets { - byOwnerAndName( - accountName: $accountName - datasetName: $datasetName - ) { + byOwnerAndName(accountName: $accountName, datasetName: $datasetName) { ...DatasetBasics ...DatasetOverview ...DatasetData @@ -2845,10 +2766,7 @@ export const GetDatasetMainDataDocument = gql` @Injectable({ providedIn: "root", }) -export class GetDatasetMainDataGQL extends Apollo.Query< - GetDatasetMainDataQuery, - GetDatasetMainDataQueryVariables -> { +export class GetDatasetMainDataGQL extends Apollo.Query { document = GetDatasetMainDataDocument; constructor(apollo: Apollo.Apollo) { @@ -2875,10 +2793,7 @@ export const GetDatasetSchemaDocument = gql` @Injectable({ providedIn: "root", }) -export class GetDatasetSchemaGQL extends Apollo.Query< - GetDatasetSchemaQuery, - GetDatasetSchemaQueryVariables -> { +export class GetDatasetSchemaGQL extends Apollo.Query { document = GetDatasetSchemaDocument; constructor(apollo: Apollo.Apollo) { @@ -2886,17 +2801,9 @@ export class GetDatasetSchemaGQL extends Apollo.Query< } } export const DatasetsByAccountNameDocument = gql` - query datasetsByAccountName( - $accountName: AccountName! - $perPage: Int - $page: Int - ) { + query datasetsByAccountName($accountName: AccountName!, $perPage: Int, $page: Int) { datasets { - byAccountName( - accountName: $accountName - perPage: $perPage - page: $page - ) { + byAccountName(accountName: $accountName, perPage: $perPage, page: $page) { nodes { ...DatasetSearchOverview __typename @@ -2940,10 +2847,7 @@ export const EnginesDocument = gql` @Injectable({ providedIn: "root", }) -export class EnginesGQL extends Apollo.Query< - EnginesQuery, - EnginesQueryVariables -> { +export class EnginesGQL extends Apollo.Query { document = EnginesDocument; constructor(apollo: Apollo.Apollo) { @@ -2971,10 +2875,7 @@ export const GithubLoginDocument = gql` @Injectable({ providedIn: "root", }) -export class GithubLoginGQL extends Apollo.Mutation< - GithubLoginMutation, - GithubLoginMutationVariables -> { +export class GithubLoginGQL extends Apollo.Mutation { document = GithubLoginDocument; constructor(apollo: Apollo.Apollo) { @@ -2995,10 +2896,7 @@ export const FetchAccountInfoDocument = gql` @Injectable({ providedIn: "root", }) -export class FetchAccountInfoGQL extends Apollo.Mutation< - FetchAccountInfoMutation, - FetchAccountInfoMutationVariables -> { +export class FetchAccountInfoGQL extends Apollo.Mutation { document = FetchAccountInfoDocument; constructor(apollo: Apollo.Apollo) { @@ -3006,16 +2904,9 @@ export class FetchAccountInfoGQL extends Apollo.Mutation< } } export const GetMetadataBlockDocument = gql` - query getMetadataBlock( - $accountName: AccountName! - $datasetName: DatasetName! - $blockHash: Multihash! - ) { + query getMetadataBlock($accountName: AccountName!, $datasetName: DatasetName!, $blockHash: Multihash!) { datasets { - byOwnerAndName( - accountName: $accountName - datasetName: $datasetName - ) { + byOwnerAndName(accountName: $accountName, datasetName: $datasetName) { metadata { chain { blockByHashEncoded(hash: $blockHash, format: YAML) @@ -3033,10 +2924,7 @@ export const GetMetadataBlockDocument = gql` @Injectable({ providedIn: "root", }) -export class GetMetadataBlockGQL extends Apollo.Query< - GetMetadataBlockQuery, - GetMetadataBlockQueryVariables -> { +export class GetMetadataBlockGQL extends Apollo.Query { document = GetMetadataBlockDocument; constructor(apollo: Apollo.Apollo) { @@ -3044,11 +2932,7 @@ export class GetMetadataBlockGQL extends Apollo.Query< } } export const SearchDatasetsAutocompleteDocument = gql` - query searchDatasetsAutocomplete( - $query: String! - $perPage: Int - $page: Int - ) { + query searchDatasetsAutocomplete($query: String!, $perPage: Int, $page: Int) { search { query(query: $query, perPage: $perPage, page: $page) { nodes { diff --git a/src/app/api/mock/auth.mock.ts b/src/app/api/mock/auth.mock.ts index 5450bf1dd..a3bb8feab 100644 --- a/src/app/api/mock/auth.mock.ts +++ b/src/app/api/mock/auth.mock.ts @@ -1,9 +1,5 @@ import { GraphQLError } from "graphql"; -import { - AccountDetailsFragment, - FetchAccountInfoMutation, - GithubLoginMutation, -} from "../kamu.graphql.interface"; +import { AccountDetailsFragment, FetchAccountInfoMutation, GithubLoginMutation } from "../kamu.graphql.interface"; export const TEST_GITHUB_CODE = "12345"; export const TEST_ACCESS_TOKEN = "someToken"; diff --git a/src/app/api/mock/dataset.mock.ts b/src/app/api/mock/dataset.mock.ts index 2dd05e797..ede8ee9fc 100644 --- a/src/app/api/mock/dataset.mock.ts +++ b/src/app/api/mock/dataset.mock.ts @@ -11,8 +11,7 @@ import { DatasetsAccountResponse } from "src/app/interface/dataset.interface"; export const TEST_USER_NAME = "test-user"; export const TEST_DATASET_NAME = "test-dataset"; -export const TEST_BLOCK_HASH = - "zW1hNbxPz28K1oLNGbddudUzKKLT9LDPh8chjksEo6HcDev"; +export const TEST_BLOCK_HASH = "zW1hNbxPz28K1oLNGbddudUzKKLT9LDPh8chjksEo6HcDev"; export const mockDatasetDataSqlRunResponse: GetDatasetDataSqlRunQuery = { data: { @@ -61,8 +60,7 @@ export const mockDatasetListItem: DatasetSearchOverviewFragment = { shortName: "OGL-Canada-2.0", name: "Open Government Licence - Canada", spdxId: "OGL-Canada-2.0", - websiteUrl: - "https://open.canada.ca/en/open-government-licence-canada", + websiteUrl: "https://open.canada.ca/en/open-government-licence-canada", }, currentDownstreamDependencies: [ { @@ -108,8 +106,7 @@ export const mockDatasetsByAccountNameQuery: DatasetsByAccountNameQuery = { __typename: "DatasetMetadata", currentInfo: { __typename: "SetInfo", - description: - "Confirmed positive cases of COVID-19 in Alberta.", + description: "Confirmed positive cases of COVID-19 in Alberta.", keywords: [ "Healthcare", "Epidemiology", @@ -126,8 +123,7 @@ export const mockDatasetsByAccountNameQuery: DatasetsByAccountNameQuery = { shortName: "OGL-Canada-2.0", name: "Open Government Licence - Canada", spdxId: "OGL-Canada-2.0", - websiteUrl: - "https://open.canada.ca/en/open-government-licence-canada", + websiteUrl: "https://open.canada.ca/en/open-government-licence-canada", }, currentDownstreamDependencies: [ { @@ -172,10 +168,8 @@ export const mockGetMetadataBlockQuery: GetMetadataBlockQuery = { "kind: MetadataBlock\nversion: 2\ncontent:\n systemTime: 2022-08-05T21:17:30.621941313Z\n prevBlockHash: zW1auBfep4NvrY6RqNN7asdjTzuNMAugdcsw7VfrsQFDqj1\n sequenceNumber: 3\n event:\n kind: setInfo\n description: British Columbia COVID-19 case data updated regularly from the B.C. Centre for Disease Control, Provincial Health Services Authority and the B.C. Ministry of Health.\n keywords:\n - Healthcare\n - Epidemiology\n - COVID-19\n - SARS-CoV-2\n - Disaggregated\n - Anonymized\n - British Columbia\n - Canada\n", blockByHash: { __typename: "MetadataBlockExtended", - blockHash: - "zW1hNbxPz28K1oLNGbddudUzKKLT9LDPh8chjksEo6HcDev", - prevBlockHash: - "zW1abnmxotsSC7H6SyfbL7bpWtQrMSQktUfiJds3KWX1xfm", + blockHash: "zW1hNbxPz28K1oLNGbddudUzKKLT9LDPh8chjksEo6HcDev", + prevBlockHash: "zW1abnmxotsSC7H6SyfbL7bpWtQrMSQktUfiJds3KWX1xfm", systemTime: "2022-08-05T21:20:08.053635579+00:00", sequenceNumber: 6, author: { @@ -192,18 +186,15 @@ export const mockGetMetadataBlockQuery: GetMetadataBlockQuery = { start: 0, end: 596125, }, - logicalHash: - "z63ZND5B21T2Dbmr2bB2Eu2Y4fjEJzLYrwiumM7ApeU24N29qpna", - physicalHash: - "zW1i7cajDaJjwxCRaRyGHqJpDrqZXbm1wMZkaWrH8a8Cmbd", + logicalHash: "z63ZND5B21T2Dbmr2bB2Eu2Y4fjEJzLYrwiumM7ApeU24N29qpna", + physicalHash: "zW1i7cajDaJjwxCRaRyGHqJpDrqZXbm1wMZkaWrH8a8Cmbd", }, inputCheckpoint: null, watermark: "2022-08-01T00:00:00+00:00", inputSlices: [ { __typename: "InputSlice", - datasetId: - "did:odf:z4k88e8rxU6m5wCnK9idM5sGAxAGfvUgNgQbckwJ4ro78tXMLSu", + datasetId: "did:odf:z4k88e8rxU6m5wCnK9idM5sGAxAGfvUgNgQbckwJ4ro78tXMLSu", blockInterval: { __typename: "BlockInterval", start: "zW1qJPmDvBxGS9GeC7PFseSCy7koHjvurUmisf1VWscY3AX", @@ -218,8 +209,7 @@ export const mockGetMetadataBlockQuery: GetMetadataBlockQuery = { ], outputCheckpoint: { __typename: "Checkpoint", - physicalHash: - "zW1otipGpjScUH8C2RfaF4s8RshReBbQVPDf2fPrp2R8Ft2", + physicalHash: "zW1otipGpjScUH8C2RfaF4s8RshReBbQVPDf2fPrp2R8Ft2", size: 2560, }, }, @@ -300,9 +290,7 @@ export const MOCK_CLUSTERS = [ x: 10, y: 10, }, - childNodeIds: [ - "did:odf:z4k88e8qmphemqz8ZfEio3bGRrAjoKtP83U22XidbGtHrUcEghj", - ], + childNodeIds: ["did:odf:z4k88e8qmphemqz8ZfEio3bGRrAjoKtP83U22XidbGtHrUcEghj"], }, { id: "DERIVATIVE_cluster", @@ -314,8 +302,6 @@ export const MOCK_CLUSTERS = [ x: 10, y: 10, }, - childNodeIds: [ - "did:odf:z4k88e8h7woj2Njge7MpGneHHEo8nuSA6npPrAroFpETcukCenC", - ], + childNodeIds: ["did:odf:z4k88e8h7woj2Njge7MpGneHHEo8nuSA6npPrAroFpETcukCenC"], }, ]; diff --git a/src/app/api/mock/search.mock.ts b/src/app/api/mock/search.mock.ts index 5f9f98ae9..6357773ae 100644 --- a/src/app/api/mock/search.mock.ts +++ b/src/app/api/mock/search.mock.ts @@ -1,12 +1,5 @@ -import { - DatasetAutocompleteItem, - TypeNames, -} from "../../interface/search.interface"; -import { - DatasetKind, - SearchDatasetsAutocompleteQuery, - SearchDatasetsOverviewQuery, -} from "../kamu.graphql.interface"; +import { DatasetAutocompleteItem, TypeNames } from "../../interface/search.interface"; +import { DatasetKind, SearchDatasetsAutocompleteQuery, SearchDatasetsOverviewQuery } from "../kamu.graphql.interface"; export const mockSearchOverviewResponse: SearchDatasetsOverviewQuery = { search: { @@ -22,8 +15,7 @@ export const mockSearchOverviewResponse: SearchDatasetsOverviewQuery = { __typename: "DatasetMetadata", currentInfo: { __typename: "SetInfo", - description: - "Confirmed positive cases of COVID-19 in Alberta.", + description: "Confirmed positive cases of COVID-19 in Alberta.", keywords: [ "Healthcare", "Epidemiology", @@ -40,8 +32,7 @@ export const mockSearchOverviewResponse: SearchDatasetsOverviewQuery = { shortName: "OGL-Canada-2.0", name: "Open Government Licence - Canada", spdxId: "OGL-Canada-2.0", - websiteUrl: - "https://open.canada.ca/en/open-government-licence-canada", + websiteUrl: "https://open.canada.ca/en/open-government-licence-canada", }, currentDownstreamDependencies: [ { @@ -68,8 +59,7 @@ export const mockSearchOverviewResponse: SearchDatasetsOverviewQuery = { __typename: "DatasetMetadata", currentInfo: { __typename: "SetInfo", - description: - "Confirmed positive cases of COVID-19 in Alberta (harmonized).", + description: "Confirmed positive cases of COVID-19 in Alberta (harmonized).", keywords: [ "Healthcare", "Epidemiology", @@ -87,8 +77,7 @@ export const mockSearchOverviewResponse: SearchDatasetsOverviewQuery = { shortName: "OGL-Canada-2.0", name: "Open Government Licence - Canada", spdxId: "OGL-Canada-2.0", - websiteUrl: - "https://open.canada.ca/en/open-government-licence-canada", + websiteUrl: "https://open.canada.ca/en/open-government-licence-canada", }, currentDownstreamDependencies: [ { @@ -133,8 +122,7 @@ export const mockSearchOverviewResponse: SearchDatasetsOverviewQuery = { shortName: "OGL-Canada-2.0", name: "Open Government Licence - Canada", spdxId: "OGL-Canada-2.0", - websiteUrl: - "https://open.canada.ca/en/open-government-licence-canada", + websiteUrl: "https://open.canada.ca/en/open-government-licence-canada", }, currentDownstreamDependencies: [ { @@ -161,8 +149,7 @@ export const mockSearchOverviewResponse: SearchDatasetsOverviewQuery = { __typename: "DatasetMetadata", currentInfo: { __typename: "SetInfo", - description: - "Confirmed positive cases of COVID-19 in British Columbia (harmonized).", + description: "Confirmed positive cases of COVID-19 in British Columbia (harmonized).", keywords: [ "Healthcare", "Epidemiology", @@ -180,8 +167,7 @@ export const mockSearchOverviewResponse: SearchDatasetsOverviewQuery = { shortName: "OGL-Canada-2.0", name: "Open Government Licence - Canada", spdxId: "OGL-Canada-2.0", - websiteUrl: - "https://open.canada.ca/en/open-government-licence-canada", + websiteUrl: "https://open.canada.ca/en/open-government-licence-canada", }, currentDownstreamDependencies: [ { @@ -226,8 +212,7 @@ export const mockSearchOverviewResponse: SearchDatasetsOverviewQuery = { shortName: "OGL-Canada-2.0", name: "Open Government Licence - Canada", spdxId: "OGL-Canada-2.0", - websiteUrl: - "https://open.canada.ca/en/open-government-licence-canada", + websiteUrl: "https://open.canada.ca/en/open-government-licence-canada", }, currentDownstreamDependencies: [ { @@ -256,22 +241,14 @@ export const mockSearchOverviewResponse: SearchDatasetsOverviewQuery = { __typename: "SetInfo", description: "Pan-Canadian COVID-19 daily case counts on per Health Region level of aggregation.", - keywords: [ - "Healthcare", - "Epidemiology", - "COVID-19", - "SARS-CoV-2", - "Aggregated", - "Canada", - ], + keywords: ["Healthcare", "Epidemiology", "COVID-19", "SARS-CoV-2", "Aggregated", "Canada"], }, currentLicense: { __typename: "SetLicense", shortName: "OGL-Ontario", name: "Open Government Licence - Ontario", spdxId: null, - websiteUrl: - "https://www.ontario.ca/page/open-government-licence-ontario", + websiteUrl: "https://www.ontario.ca/page/open-government-licence-ontario", }, currentDownstreamDependencies: [], }, @@ -323,8 +300,7 @@ export const mockSearchOverviewResponse: SearchDatasetsOverviewQuery = { shortName: "Proprietary", name: "CryptoCompare - API License Agreement", spdxId: null, - websiteUrl: - "https://www.cryptocompare.com/api-licence-agreement/", + websiteUrl: "https://www.cryptocompare.com/api-licence-agreement/", }, currentDownstreamDependencies: [], }, @@ -368,8 +344,7 @@ export const mockSearchOverviewResponse: SearchDatasetsOverviewQuery = { __typename: "DatasetMetadata", currentInfo: { __typename: "SetInfo", - description: - "Confirmed positive cases of COVID-19 in Ontario.", + description: "Confirmed positive cases of COVID-19 in Ontario.", keywords: [ "Healthcare", "Epidemiology", @@ -386,8 +361,7 @@ export const mockSearchOverviewResponse: SearchDatasetsOverviewQuery = { shortName: "OGL-Ontario", name: "Open Government Licence - Ontario", spdxId: null, - websiteUrl: - "https://www.ontario.ca/page/open-government-licence-ontario", + websiteUrl: "https://www.ontario.ca/page/open-government-licence-ontario", }, currentDownstreamDependencies: [ { diff --git a/src/app/api/search.api.spec.ts b/src/app/api/search.api.spec.ts index bae8e6828..b451c8d07 100644 --- a/src/app/api/search.api.spec.ts +++ b/src/app/api/search.api.spec.ts @@ -1,18 +1,12 @@ import { TestBed } from "@angular/core/testing"; import { SearchApi, SEARCH_RESULTS_PER_PAGE } from "./search.api"; -import { - ApolloTestingController, - ApolloTestingModule, -} from "apollo-angular/testing"; +import { ApolloTestingController, ApolloTestingModule } from "apollo-angular/testing"; import { SearchDatasetsAutocompleteDocument, SearchDatasetsOverviewDocument, SearchDatasetsOverviewQuery, } from "./kamu.graphql.interface"; -import { - mockSearchOverviewResponse, - mockAutoCompleteResponse, -} from "./mock/search.mock"; +import { mockSearchOverviewResponse, mockAutoCompleteResponse } from "./mock/search.mock"; import { DatasetAutocompleteItem } from "../interface/search.interface"; describe("SearchApi", () => { @@ -38,14 +32,9 @@ describe("SearchApi", () => { it("should check dataset autocomplete", () => { const TEST_QUERY = "a"; - service - .autocompleteDatasetSearch(TEST_QUERY) - .subscribe((res: DatasetAutocompleteItem[]) => { - expect(res.length).toEqual( - mockAutoCompleteResponse.search.query.nodes.length + - 1 /* dummy result */, - ); - }); + service.autocompleteDatasetSearch(TEST_QUERY).subscribe((res: DatasetAutocompleteItem[]) => { + expect(res.length).toEqual(mockAutoCompleteResponse.search.query.nodes.length + 1 /* dummy result */); + }); const op = controller.expectOne(SearchDatasetsAutocompleteDocument); expect(op.operation.variables.query).toEqual(TEST_QUERY); @@ -57,20 +46,16 @@ describe("SearchApi", () => { }); it("should check dataset autocomplete with empty query", () => { - service - .autocompleteDatasetSearch("") - .subscribe((res: DatasetAutocompleteItem[]) => { - expect(res).toEqual([]); - }); + service.autocompleteDatasetSearch("").subscribe((res: DatasetAutocompleteItem[]) => { + expect(res).toEqual([]); + }); }); it("should check dataset search with empty query", () => { const EMPTY_QUERY = ""; - service - .overviewDatasetSearch(EMPTY_QUERY) - .subscribe((res: SearchDatasetsOverviewQuery) => { - expect(res.search.query.totalCount).toEqual(13); - }); + service.overviewDatasetSearch(EMPTY_QUERY).subscribe((res: SearchDatasetsOverviewQuery) => { + expect(res.search.query.totalCount).toEqual(13); + }); const op = controller.expectOne(SearchDatasetsOverviewDocument); expect(op.operation.variables.query).toEqual(EMPTY_QUERY); diff --git a/src/app/api/search.api.ts b/src/app/api/search.api.ts index cdf9d3bf2..6fb984a7c 100644 --- a/src/app/api/search.api.ts +++ b/src/app/api/search.api.ts @@ -3,10 +3,7 @@ import { Injectable } from "@angular/core"; import { map, first } from "rxjs/operators"; import { Observable, of } from "rxjs"; -import { - DatasetAutocompleteItem, - TypeNames, -} from "../interface/search.interface"; +import { DatasetAutocompleteItem, TypeNames } from "../interface/search.interface"; import { SearchDatasetsAutocompleteGQL, @@ -41,13 +38,9 @@ export class SearchApi { }) .valueChanges.pipe( first(), - map( - ( - result: ApolloQueryResult, - ) => { - return result.data; - }, - ), + map((result: ApolloQueryResult) => { + return result.data; + }), ); } @@ -58,36 +51,29 @@ export class SearchApi { if (id === "") { return of([]); } - return this.searchDatasetsAutocompleteGQL - .watch({ query: id, perPage }) - .valueChanges.pipe( - first(), - map( - ( - result: ApolloQueryResult, - ) => { - const nodesList: DatasetAutocompleteItem[] = - result.data.search.query.nodes.map((node) => ({ - dataset: node as DatasetBasicsFragment, - __typename: node.__typename as TypeNames, - })); - // Add dummy result that opens search view - nodesList.unshift({ - __typename: TypeNames.allDataType, - dataset: { - id, - name: id, - kind: DatasetKind.Root, - owner: { - id: AppValues.DEFAULT_USERNAME, - name: AppValues.DEFAULT_USERNAME, - }, - }, - }); - - return nodesList; + return this.searchDatasetsAutocompleteGQL.watch({ query: id, perPage }).valueChanges.pipe( + first(), + map((result: ApolloQueryResult) => { + const nodesList: DatasetAutocompleteItem[] = result.data.search.query.nodes.map((node) => ({ + dataset: node as DatasetBasicsFragment, + __typename: node.__typename as TypeNames, + })); + // Add dummy result that opens search view + nodesList.unshift({ + __typename: TypeNames.allDataType, + dataset: { + id, + name: id, + kind: DatasetKind.Root, + owner: { + id: AppValues.DEFAULT_USERNAME, + name: AppValues.DEFAULT_USERNAME, + }, }, - ), - ); + }); + + return nodesList; + }), + ); } } diff --git a/src/app/app-config.service.ts b/src/app/app-config.service.ts index 62fe9f383..f84b10bf1 100644 --- a/src/app/app-config.service.ts +++ b/src/app/app-config.service.ts @@ -31,11 +31,7 @@ export class AppConfigService { // If loopback or any address is used - replace hostname with hostname from the browser private static toRemoteURL(url: string): string { const turl = new URL(url); - if ( - ["localhost", "127.0.0.1", "0.0.0.0", "[::]"].includes( - turl.hostname, - ) - ) { + if (["localhost", "127.0.0.1", "0.0.0.0", "[::]"].includes(turl.hostname)) { turl.hostname = window.location.hostname; } return turl.href; diff --git a/src/app/app.component.spec.ts b/src/app/app.component.spec.ts index 1257c78bf..f03bd6119 100644 --- a/src/app/app.component.spec.ts +++ b/src/app/app.component.spec.ts @@ -6,11 +6,7 @@ import { ComponentFixture, TestBed } from "@angular/core/testing"; import { MatMenuModule } from "@angular/material/menu"; import { RouterTestingModule } from "@angular/router/testing"; import { SearchApi } from "./api/search.api"; -import { - ALL_URLS_WITHOUT_ACCESS_TOKEN, - ALL_URLS_WITHOUT_HEADER, - AppComponent, -} from "./app.component"; +import { ALL_URLS_WITHOUT_ACCESS_TOKEN, ALL_URLS_WITHOUT_HEADER, AppComponent } from "./app.component"; import AppValues from "./common/app.values"; import { isMobileView } from "./common/app.helpers"; import { SearchService } from "./search/search.service"; @@ -21,15 +17,9 @@ import { ModalService } from "./components/modal/modal.service"; import { ApolloTestingModule } from "apollo-angular/testing"; import { of } from "rxjs"; import ProjectLinks from "./project-links"; -import { - routerMock, - routerMockEventSubject, -} from "./common/base-test.helpers.spec"; +import { routerMock, routerMockEventSubject } from "./common/base-test.helpers.spec"; import { ActivatedRoute, NavigationEnd, Router } from "@angular/router"; -import { - mockAccountDetails, - mockUserInfoFromAccessToken, -} from "./api/mock/auth.mock"; +import { mockAccountDetails, mockUserInfoFromAccessToken } from "./api/mock/auth.mock"; import { FetchAccountInfoGQL } from "./api/kamu.graphql.interface"; import { AppHeaderComponent } from "./components/app-header/app-header.component"; import { SpinnerComponent } from "./components/spinner/spinner/spinner.component"; @@ -44,19 +34,8 @@ describe("AppComponent", () => { beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [ - RouterTestingModule, - ApolloTestingModule, - MatMenuModule, - NgbTypeaheadModule, - FormsModule, - ], - declarations: [ - AppComponent, - ModalComponent, - AppHeaderComponent, - SpinnerComponent, - ], + imports: [RouterTestingModule, ApolloTestingModule, MatMenuModule, NgbTypeaheadModule, FormsModule], + declarations: [AppComponent, ModalComponent, AppHeaderComponent, SpinnerComponent], providers: [ SearchService, SearchApi, @@ -79,9 +58,7 @@ describe("AppComponent", () => { authApi = TestBed.inject(AuthApi); fetchAccountInfoGQL = TestBed.inject(FetchAccountInfoGQL); component = fixture.componentInstance; - routerMockEventSubject.next( - new NavigationEnd(1, ProjectLinks.URL_LOGIN, ""), - ); + routerMockEventSubject.next(new NavigationEnd(1, ProjectLinks.URL_LOGIN, "")); fixture.detectChanges(); }); @@ -89,62 +66,32 @@ describe("AppComponent", () => { expect(component).toBeTruthy(); }); - ProjectLinks.ALL_URLS.filter( - (url) => !ALL_URLS_WITHOUT_ACCESS_TOKEN.includes(url), - ).forEach((url: string) => { + ProjectLinks.ALL_URLS.filter((url) => !ALL_URLS_WITHOUT_ACCESS_TOKEN.includes(url)).forEach((url: string) => { it(`should call authentification method in onInit for ${url} and trigger token restore`, () => { const someToken = "someToken"; - const authentificationSpy = spyOn( - component, - "authentification", - ).and.callThrough(); - const localStorageGetItemSpy = spyOn( - localStorage, - "getItem", - ).and.returnValue(someToken); - const fetchUserInfoFromAccessTokenSpy = spyOn( - authApi, - "fetchUserInfoFromAccessToken", - ).and.callFake(() => of()); - const isAuthenticatedSpy = spyOnProperty( - authApi, - "isAuthenticated", - "get", - ).and.returnValue(false); + const authentificationSpy = spyOn(component, "authentification").and.callThrough(); + const localStorageGetItemSpy = spyOn(localStorage, "getItem").and.returnValue(someToken); + const fetchUserInfoFromAccessTokenSpy = spyOn(authApi, "fetchUserInfoFromAccessToken").and.callFake(() => + of(), + ); + const isAuthenticatedSpy = spyOnProperty(authApi, "isAuthenticated", "get").and.returnValue(false); routerMock.url = url; component.ngOnInit(); expect(authentificationSpy).toHaveBeenCalledWith(); - expect(localStorageGetItemSpy).toHaveBeenCalledWith( - AppValues.LOCAL_STORAGE_ACCESS_TOKEN, - ); - expect(fetchUserInfoFromAccessTokenSpy).toHaveBeenCalledWith( - someToken, - ); + expect(localStorageGetItemSpy).toHaveBeenCalledWith(AppValues.LOCAL_STORAGE_ACCESS_TOKEN); + expect(fetchUserInfoFromAccessTokenSpy).toHaveBeenCalledWith(someToken); expect(isAuthenticatedSpy).toHaveBeenCalledWith(); }); }); ALL_URLS_WITHOUT_ACCESS_TOKEN.forEach((url: string) => { it(`should call authentification method in onInit on ${url} without token restore`, () => { - const authentificationSpy = spyOn( - component, - "authentification", - ).and.callThrough(); - const localStorageGetItemSpy = spyOn( - localStorage, - "getItem", - ).and.stub(); - const fetchUserInfoFromAccessTokenSpy = spyOn( - authApi, - "fetchUserInfoFromAccessToken", - ).and.stub(); - const isAuthenticatedSpy = spyOnProperty( - authApi, - "isAuthenticated", - "get", - ).and.stub(); + const authentificationSpy = spyOn(component, "authentification").and.callThrough(); + const localStorageGetItemSpy = spyOn(localStorage, "getItem").and.stub(); + const fetchUserInfoFromAccessTokenSpy = spyOn(authApi, "fetchUserInfoFromAccessToken").and.stub(); + const isAuthenticatedSpy = spyOnProperty(authApi, "isAuthenticated", "get").and.stub(); routerMock.url = url; component.ngOnInit(); @@ -157,29 +104,20 @@ describe("AppComponent", () => { }); it("should check call checkWindowSize method", () => { - const checkWindowSizeSpy = spyOn( - component, - "checkWindowSize", - ).and.callThrough(); + const checkWindowSizeSpy = spyOn(component, "checkWindowSize").and.callThrough(); window.dispatchEvent(new Event("resize")); expect(checkWindowSizeSpy).toHaveBeenCalledWith(); expect(component.isMobileView).toEqual(isMobileView()); }); it("should check call onClickAppLogo method", () => { - const navigateToSearchSpy = spyOn( - navigationService, - "navigateToSearch", - ).and.returnValue(); + const navigateToSearchSpy = spyOn(navigationService, "navigateToSearch").and.returnValue(); component.onClickAppLogo(); expect(navigateToSearchSpy).toHaveBeenCalledWith(); }); it("should check call onAddNew method", () => { - const navigateToDatasetCreateSpy = spyOn( - navigationService, - "navigateToDatasetCreate", - ).and.returnValue(); + const navigateToDatasetCreateSpy = spyOn(navigationService, "navigateToDatasetCreate").and.returnValue(); component.onAddNew(); expect(navigateToDatasetCreateSpy).toHaveBeenCalledWith(); }); @@ -191,19 +129,13 @@ describe("AppComponent", () => { }); it("should check call onLogin method", () => { - const loginSpy = spyOn( - navigationService, - "navigateToLogin", - ).and.returnValue(); + const loginSpy = spyOn(navigationService, "navigateToLogin").and.returnValue(); component.onLogin(); expect(loginSpy).toHaveBeenCalledWith(); }); it("should check call onSelectDataset method and navigate to dataset", () => { - const navigateToDatasetViewSpy = spyOn( - navigationService, - "navigateToDatasetView", - ).and.returnValue(); + const navigateToDatasetViewSpy = spyOn(navigationService, "navigateToDatasetView").and.returnValue(); component.onSelectDataset(mockAutocompleteItems[0]); expect(navigateToDatasetViewSpy).toHaveBeenCalledWith({ accountName: mockAutocompleteItems[0].dataset.owner.name, @@ -212,32 +144,17 @@ describe("AppComponent", () => { }); it("should check call onSelectDataset method and navigate to search", () => { - const navigateToSearchSpy = spyOn( - navigationService, - "navigateToSearch", - ).and.returnValue(); + const navigateToSearchSpy = spyOn(navigationService, "navigateToSearch").and.returnValue(); component.onSelectDataset(mockAutocompleteItems[1]); - expect(navigateToSearchSpy).toHaveBeenCalledWith( - mockAutocompleteItems[1].dataset.id as string, - ); + expect(navigateToSearchSpy).toHaveBeenCalledWith(mockAutocompleteItems[1].dataset.id as string); }); it("should check call onUserProfile", () => { - const navigationServicelSpy = spyOn( - navigationService, - "navigateToOwnerView", - ).and.returnValue(); - const currentUserSpy = spyOnProperty( - authApi, - "currentUser", - "get", - ).and.returnValue(mockAccountDetails); + const navigationServicelSpy = spyOn(navigationService, "navigateToOwnerView").and.returnValue(); + const currentUserSpy = spyOnProperty(authApi, "currentUser", "get").and.returnValue(mockAccountDetails); component.onUserProfile(); expect(currentUserSpy).toHaveBeenCalledWith(); - expect(navigationServicelSpy).toHaveBeenCalledWith( - mockAccountDetails.login, - AccountTabs.overview, - ); + expect(navigationServicelSpy).toHaveBeenCalledWith(mockAccountDetails.login, AccountTabs.overview); }); ALL_URLS_WITHOUT_HEADER.forEach((url: string) => { @@ -248,9 +165,7 @@ describe("AppComponent", () => { }); }); - ProjectLinks.ALL_URLS.filter( - (url) => !ALL_URLS_WITHOUT_HEADER.includes(url), - ).forEach((url: string) => { + ProjectLinks.ALL_URLS.filter((url) => !ALL_URLS_WITHOUT_HEADER.includes(url)).forEach((url: string) => { it(`should show header when going to ${url} page`, () => { routerMockEventSubject.next(new NavigationEnd(1, url, "")); fixture.detectChanges(); @@ -267,9 +182,7 @@ describe("AppComponent", () => { ); authApi.fetchUserInfoFromAccessToken("someToken").subscribe(); - expect(component.user).toEqual( - mockUserInfoFromAccessToken.auth.accountInfo, - ); + expect(component.user).toEqual(mockUserInfoFromAccessToken.auth.accountInfo); authApi.terminateSession(); expect(component.user).toEqual(AppComponent.AnonymousAccountInfo); diff --git a/src/app/app.component.ts b/src/app/app.component.ts index d0bbda2a5..a659f35c8 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -2,19 +2,11 @@ import { AuthenticationError } from "./common/errors"; import { throwError } from "rxjs"; import { AccountTabs } from "./auth/account/account.constants"; import { NavigationService } from "./services/navigation.service"; -import { - ChangeDetectionStrategy, - Component, - HostListener, - OnInit, -} from "@angular/core"; +import { ChangeDetectionStrategy, Component, HostListener, OnInit } from "@angular/core"; import AppValues from "./common/app.values"; import { filter, map } from "rxjs/operators"; import { NavigationEnd, Router, RouterEvent } from "@angular/router"; -import { - DatasetAutocompleteItem, - TypeNames, -} from "./interface/search.interface"; +import { DatasetAutocompleteItem, TypeNames } from "./interface/search.interface"; import { AuthApi } from "./api/auth.api"; import { ModalService } from "./components/modal/modal.service"; import { BaseComponent } from "./common/base.component"; @@ -24,15 +16,9 @@ import { MaybeNull } from "./common/app.types"; import _ from "lodash"; import { isMobileView, promiseWithCatch } from "./common/app.helpers"; -export const ALL_URLS_WITHOUT_HEADER: string[] = [ - ProjectLinks.URL_LOGIN, - ProjectLinks.URL_GITHUB_CALLBACK, -]; +export const ALL_URLS_WITHOUT_HEADER: string[] = [ProjectLinks.URL_LOGIN, ProjectLinks.URL_GITHUB_CALLBACK]; -export const ALL_URLS_WITHOUT_ACCESS_TOKEN: string[] = [ - ProjectLinks.URL_LOGIN, - ProjectLinks.URL_GITHUB_CALLBACK, -]; +export const ALL_URLS_WITHOUT_ACCESS_TOKEN: string[] = [ProjectLinks.URL_LOGIN, ProjectLinks.URL_GITHUB_CALLBACK]; @Component({ selector: "app-root", @@ -74,18 +60,12 @@ export class AppComponent extends BaseComponent implements OnInit { map((event) => event as RouterEvent), ) .subscribe((event: RouterEvent) => { - this.isHeaderVisible = this.shouldHeaderBeVisible( - event.url, - ); + this.isHeaderVisible = this.shouldHeaderBeVisible(event.url); }), - this.authApi.onUserChanges.subscribe( - (user: MaybeNull) => { - this.user = user - ? _.cloneDeep(user) - : AppComponent.AnonymousAccountInfo; - }, - ), + this.authApi.onUserChanges.subscribe((user: MaybeNull) => { + this.user = user ? _.cloneDeep(user) : AppComponent.AnonymousAccountInfo; + }), ); this.authentification(); } @@ -94,18 +74,9 @@ export class AppComponent extends BaseComponent implements OnInit { if (ALL_URLS_WITHOUT_ACCESS_TOKEN.includes(this.router.url)) { return; } else { - const accessToken: string | null = localStorage.getItem( - AppValues.LOCAL_STORAGE_ACCESS_TOKEN, - ); - if ( - typeof accessToken === "string" && - !this.authApi.isAuthenticated - ) { - this.trackSubscription( - this.authApi - .fetchUserInfoFromAccessToken(accessToken) - .subscribe(), - ); + const accessToken: string | null = localStorage.getItem(AppValues.LOCAL_STORAGE_ACCESS_TOKEN); + if (typeof accessToken === "string" && !this.authApi.isAuthenticated) { + this.trackSubscription(this.authApi.fetchUserInfoFromAccessToken(accessToken).subscribe()); return; } } @@ -116,9 +87,7 @@ export class AppComponent extends BaseComponent implements OnInit { } private shouldHeaderBeVisible(url: string): boolean { - return !ALL_URLS_WITHOUT_HEADER.some((item) => - url.toLowerCase().includes(item), - ); + return !ALL_URLS_WITHOUT_HEADER.some((item) => url.toLowerCase().includes(item)); } public onSelectDataset(item: DatasetAutocompleteItem): void { @@ -153,27 +122,17 @@ export class AppComponent extends BaseComponent implements OnInit { public onUserProfile(): void { if (this.authApi.currentUser?.login) { - this.navigationService.navigateToOwnerView( - this.authApi.currentUser.login, - AccountTabs.overview, - ); + this.navigationService.navigateToOwnerView(this.authApi.currentUser.login, AccountTabs.overview); } else { - throwError( - new AuthenticationError([new Error("Login is undefined")]), - ); + throwError(new AuthenticationError([new Error("Login is undefined")])); } } public onUserDatasets(): void { if (this.authApi.currentUser?.login) { - this.navigationService.navigateToOwnerView( - this.authApi.currentUser.login, - AccountTabs.datasets, - ); + this.navigationService.navigateToOwnerView(this.authApi.currentUser.login, AccountTabs.datasets); } else { - throwError( - new AuthenticationError([new Error("Login is undefined")]), - ); + throwError(new AuthenticationError([new Error("Login is undefined")])); } } @@ -199,9 +158,7 @@ export class AppComponent extends BaseComponent implements OnInit { if (this.authApi.currentUser?.login) { this.navigationService.navigateToSettings(); } else { - throwError( - new AuthenticationError([new Error("Login is undefined")]), - ); + throwError(new AuthenticationError([new Error("Login is undefined")])); } } diff --git a/src/app/app.module.ts b/src/app/app.module.ts index e6ad8736c..8b0dbb9d6 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -16,11 +16,7 @@ import { MatToolbarModule } from "@angular/material/toolbar"; import { NgbModule, NgbTypeaheadModule } from "@ng-bootstrap/ng-bootstrap"; import { MatFormFieldModule } from "@angular/material/form-field"; import { MatIconModule } from "@angular/material/icon"; -import { - HttpClient, - HttpClientModule, - HTTP_INTERCEPTORS, -} from "@angular/common/http"; +import { HttpClient, HttpClientModule, HTTP_INTERCEPTORS } from "@angular/common/http"; import { MatTableModule } from "@angular/material/table"; import { CdkTableModule } from "@angular/cdk/table"; import { InMemoryCache } from "@apollo/client/core"; diff --git a/src/app/auth/account/account.component.html b/src/app/auth/account/account.component.html index b1694f648..be7b075ef 100644 --- a/src/app/auth/account/account.component.html +++ b/src/app/auth/account/account.component.html @@ -2,10 +2,7 @@
-

- Organizations -

+

Organizations

[checked]="isAccountViewTypeOverview" (click)="onSelectOverviewTab()" > - my_library_books + my_library_books Overview > book Datasets - {{ datasetTotalCount }} + {{ datasetTotalCount }} > people Organizations - 2 + 2 > inbox Inbox - 2 + 2 > star_border Stars - 2 + 2
diff --git a/src/app/auth/account/account.component.spec.ts b/src/app/auth/account/account.component.spec.ts index 03dbe5227..d566783df 100644 --- a/src/app/auth/account/account.component.spec.ts +++ b/src/app/auth/account/account.component.spec.ts @@ -6,10 +6,7 @@ import { MatIconModule } from "@angular/material/icon"; import { ComponentFixture, TestBed } from "@angular/core/testing"; import { ActivatedRoute, Router } from "@angular/router"; import { ApolloTestingModule } from "apollo-angular/testing"; -import { - emitClickOnElementByDataTestId, - routerMock, -} from "src/app/common/base-test.helpers.spec"; +import { emitClickOnElementByDataTestId, routerMock } from "src/app/common/base-test.helpers.spec"; import { AccountComponent } from "./account.component"; import { BehaviorSubject } from "rxjs"; @@ -33,11 +30,7 @@ describe("AccountComponent", () => { beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [AccountComponent], - imports: [ - ApolloTestingModule, - MatIconModule, - MatButtonToggleModule, - ], + imports: [ApolloTestingModule, MatIconModule, MatButtonToggleModule], providers: [ DatasetApi, { provide: Router, useValue: routerMock }, @@ -71,29 +64,17 @@ describe("AccountComponent", () => { Object.values(AccountTabs).forEach((tab: string) => { it(`should check switch ${tab} tab`, () => { - const navigateToOwnerViewSpy = spyOn( - navigationService, - "navigateToOwnerView", - ); + const navigateToOwnerViewSpy = spyOn(navigationService, "navigateToOwnerView"); emitClickOnElementByDataTestId(fixture, `account-${tab}-tab`); - expect(navigateToOwnerViewSpy).toHaveBeenCalledWith( - mockAccountDetails.login, - tab, - ); + expect(navigateToOwnerViewSpy).toHaveBeenCalledWith(mockAccountDetails.login, tab); }); }); it("should check get data from accountService subscription", () => { accountService.datasetsChanges(mockDatasetsAccountResponse); component.ngOnInit(); - expect(component.datasets).toEqual( - mockDatasetsAccountResponse.datasets, - ); - expect(component.pageInfo).toEqual( - mockDatasetsAccountResponse.pageInfo, - ); - expect(component.datasetTotalCount).toEqual( - mockDatasetsAccountResponse.datasetTotalCount, - ); + expect(component.datasets).toEqual(mockDatasetsAccountResponse.datasets); + expect(component.pageInfo).toEqual(mockDatasetsAccountResponse.pageInfo); + expect(component.datasetTotalCount).toEqual(mockDatasetsAccountResponse.datasetTotalCount); }); }); diff --git a/src/app/auth/account/account.component.ts b/src/app/auth/account/account.component.ts index 69480f263..52a8a4114 100644 --- a/src/app/auth/account/account.component.ts +++ b/src/app/auth/account/account.component.ts @@ -1,29 +1,13 @@ import ProjectLinks from "src/app/project-links"; import { ModalService } from "./../../components/modal/modal.service"; -import { - DatasetSearchOverviewFragment, - PageBasedInfo, -} from "./../../api/kamu.graphql.interface"; +import { DatasetSearchOverviewFragment, PageBasedInfo } from "./../../api/kamu.graphql.interface"; import { BaseComponent } from "src/app/common/base.component"; import { NavigationService } from "src/app/services/navigation.service"; -import { - ChangeDetectionStrategy, - ChangeDetectorRef, - Component, - ElementRef, - OnInit, - ViewChild, -} from "@angular/core"; +import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, OnInit, ViewChild } from "@angular/core"; import { AuthApi } from "src/app/api/auth.api"; import { AccountDetailsFragment } from "src/app/api/kamu.graphql.interface"; import { AccountTabs } from "./account.constants"; -import { - ActivatedRoute, - NavigationEnd, - Params, - Router, - RouterEvent, -} from "@angular/router"; +import { ActivatedRoute, NavigationEnd, Params, Router, RouterEvent } from "@angular/router"; import AppValues from "src/app/common/app.values"; import { promiseWithCatch } from "src/app/common/app.helpers"; import { AccountService } from "src/app/services/account.service"; @@ -69,14 +53,10 @@ export class AccountComponent extends BaseComponent implements OnInit { params.tab ? (this.accountViewType = params.tab as AccountTabs) : (this.accountViewType = AccountTabs.overview); - params.page - ? (this.currentPage = params.page as number) - : (this.currentPage = 1); + params.page ? (this.currentPage = params.page as number) : (this.currentPage = 1); }), this.route.params.subscribe((params: Params) => { - this.accountName = params[ - ProjectLinks.URL_PARAM_ACCOUNT_NAME - ] as string; + this.accountName = params[ProjectLinks.URL_PARAM_ACCOUNT_NAME] as string; this.getAccountInfo(); this.getDatasets(); }), @@ -88,14 +68,12 @@ export class AccountComponent extends BaseComponent implements OnInit { .subscribe(() => { this.getDatasets(); }), - this.accountService.onDatasetsChanges.subscribe( - (data: DatasetsAccountResponse) => { - this.datasets = data.datasets; - this.pageInfo = data.pageInfo; - this.datasetTotalCount = data.datasetTotalCount; - this.cdr.detectChanges(); - }, - ), + this.accountService.onDatasetsChanges.subscribe((data: DatasetsAccountResponse) => { + this.datasets = data.datasets; + this.pageInfo = data.pageInfo; + this.datasetTotalCount = data.datasetTotalCount; + this.cdr.detectChanges(); + }), ); } @@ -142,52 +120,32 @@ export class AccountComponent extends BaseComponent implements OnInit { } public onSelectOverviewTab(): void { - this.navigationService.navigateToOwnerView( - this.accountName, - AccountTabs.overview, - ); + this.navigationService.navigateToOwnerView(this.accountName, AccountTabs.overview); } public onSelectDatasetsTab(): void { - this.navigationService.navigateToOwnerView( - this.accountName, - AccountTabs.datasets, - ); + this.navigationService.navigateToOwnerView(this.accountName, AccountTabs.datasets); } public onSelectOrganizationsTab(): void { - this.navigationService.navigateToOwnerView( - this.accountName, - AccountTabs.organizations, - ); + this.navigationService.navigateToOwnerView(this.accountName, AccountTabs.organizations); } public onSelectInboxTab(): void { - this.navigationService.navigateToOwnerView( - this.accountName, - AccountTabs.inbox, - ); + this.navigationService.navigateToOwnerView(this.accountName, AccountTabs.inbox); } public onSelectStarsTab(): void { - this.navigationService.navigateToOwnerView( - this.accountName, - AccountTabs.stars, - ); + this.navigationService.navigateToOwnerView(this.accountName, AccountTabs.stars); } private getAccountInfo(): void { - this.accountService - .getAccountInfoByName(this.accountName) - .subscribe((user: AccountDetailsFragment) => { - this.user = user; - this.avatarLink = - this.user.avatarUrl ?? AppValues.DEFAULT_AVATAR_URL; - }); + this.accountService.getAccountInfoByName(this.accountName).subscribe((user: AccountDetailsFragment) => { + this.user = user; + this.avatarLink = this.user.avatarUrl ?? AppValues.DEFAULT_AVATAR_URL; + }); } private getDatasets(): void { - this.accountService - .getDatasetsByAccountName(this.accountName, this.currentPage - 1) - .subscribe(); + this.accountService.getDatasetsByAccountName(this.accountName, this.currentPage - 1).subscribe(); } } diff --git a/src/app/auth/account/additional-components/datasets-tab/datasets-tab.component.spec.ts b/src/app/auth/account/additional-components/datasets-tab/datasets-tab.component.spec.ts index ad9a61d5d..449e438d5 100644 --- a/src/app/auth/account/additional-components/datasets-tab/datasets-tab.component.spec.ts +++ b/src/app/auth/account/additional-components/datasets-tab/datasets-tab.component.spec.ts @@ -47,10 +47,7 @@ describe("DatasetsTabComponent", () => { }); it("should check #selectDataset with datasets item", () => { - const navigateToDatasetViewSpy = spyOn( - navigationService, - "navigateToDatasetView", - ); + const navigateToDatasetViewSpy = spyOn(navigationService, "navigateToDatasetView"); component.onSelectDataset(mockDatasetListItem); expect(navigateToDatasetViewSpy).toHaveBeenCalledWith({ accountName: mockDatasetListItem.owner.name, @@ -61,10 +58,7 @@ describe("DatasetsTabComponent", () => { it("should check page changed", () => { const testPageNumber = 2; component.accountViewType = AccountTabs.datasets; - const navigateToOwnerViewSpy = spyOn( - navigationService, - "navigateToOwnerView", - ); + const navigateToOwnerViewSpy = spyOn(navigationService, "navigateToOwnerView"); component.onPageChange(testPageNumber); expect(navigateToOwnerViewSpy).toHaveBeenCalledWith( @@ -76,14 +70,8 @@ describe("DatasetsTabComponent", () => { it("should check page changed without cuurrent page", () => { component.accountViewType = AccountTabs.datasets; - const navigateToOwnerViewSpy = spyOn( - navigationService, - "navigateToOwnerView", - ); + const navigateToOwnerViewSpy = spyOn(navigationService, "navigateToOwnerView"); component.onPageChange(); - expect(navigateToOwnerViewSpy).toHaveBeenCalledWith( - mockAccountDetails.login, - AccountTabs.datasets, - ); + expect(navigateToOwnerViewSpy).toHaveBeenCalledWith(mockAccountDetails.login, AccountTabs.datasets); }); }); diff --git a/src/app/auth/account/additional-components/datasets-tab/datasets-tab.component.ts b/src/app/auth/account/additional-components/datasets-tab/datasets-tab.component.ts index 2e15fdc2b..3ed8c785b 100644 --- a/src/app/auth/account/additional-components/datasets-tab/datasets-tab.component.ts +++ b/src/app/auth/account/additional-components/datasets-tab/datasets-tab.component.ts @@ -1,11 +1,7 @@ import { NavigationService } from "./../../../../services/navigation.service"; import { ChangeDetectionStrategy, Input } from "@angular/core"; import { Component } from "@angular/core"; -import { - DatasetSearchOverviewFragment, - PageBasedInfo, - User, -} from "src/app/api/kamu.graphql.interface"; +import { DatasetSearchOverviewFragment, PageBasedInfo, User } from "src/app/api/kamu.graphql.interface"; import { AccountTabs } from "../../account.constants"; @Component({ @@ -34,16 +30,9 @@ export class DatasetsTabComponent { public onPageChange(currentPage?: number): void { currentPage ? (this.currentPage = currentPage) : (this.currentPage = 1); if (this.currentPage === 1) { - this.navigationService.navigateToOwnerView( - this.accountName, - this.accountViewType, - ); + this.navigationService.navigateToOwnerView(this.accountName, this.accountViewType); return; } - this.navigationService.navigateToOwnerView( - this.accountName, - this.accountViewType, - currentPage, - ); + this.navigationService.navigateToOwnerView(this.accountName, this.accountViewType, currentPage); } } diff --git a/src/app/auth/authentication.guard.spec.ts b/src/app/auth/authentication.guard.spec.ts index acae8e6f0..4e6ec1acd 100644 --- a/src/app/auth/authentication.guard.spec.ts +++ b/src/app/auth/authentication.guard.spec.ts @@ -20,14 +20,8 @@ describe("AuthenticationGuard", () => { }); [true, false].forEach((expectation: boolean) => { - it(`should check canActive method when user is${ - expectation ? "" : "not" - } authentiсation`, () => { - const isAuthenticatedSpy = spyOnProperty( - authApi, - "isAuthenticated", - "get", - ).and.returnValue(expectation); + it(`should check canActive method when user is${expectation ? "" : "not"} authentiсation`, () => { + const isAuthenticatedSpy = spyOnProperty(authApi, "isAuthenticated", "get").and.returnValue(expectation); const result = guard.canActivate(); expect(result).toEqual(expectation); expect(isAuthenticatedSpy).toHaveBeenCalledWith(); diff --git a/src/app/auth/authentication.guard.ts b/src/app/auth/authentication.guard.ts index 3f09a36f8..f19abe91c 100644 --- a/src/app/auth/authentication.guard.ts +++ b/src/app/auth/authentication.guard.ts @@ -7,10 +7,7 @@ import { AuthApi } from "../api/auth.api"; providedIn: "root", }) export class AuthenticationGuard implements CanActivate { - constructor( - private navigationService: NavigationService, - private authApi: AuthApi, - ) {} + constructor(private navigationService: NavigationService, private authApi: AuthApi) {} canActivate(): boolean { if (!this.authApi.isAuthenticated) { this.navigationService.navigateToHome(); diff --git a/src/app/auth/github-callback/github.callback.ts b/src/app/auth/github-callback/github.callback.ts index d171290b1..6d8fff6f7 100644 --- a/src/app/auth/github-callback/github.callback.ts +++ b/src/app/auth/github-callback/github.callback.ts @@ -10,11 +10,7 @@ import { BaseComponent } from "src/app/common/base.component"; changeDetection: ChangeDetectionStrategy.OnPush, }) export class GithubCallbackComponent extends BaseComponent implements OnInit { - constructor( - private route: ActivatedRoute, - private navigationService: NavigationService, - private authApi: AuthApi, - ) { + constructor(private route: ActivatedRoute, private navigationService: NavigationService, private authApi: AuthApi) { super(); } @@ -25,9 +21,7 @@ export class GithubCallbackComponent extends BaseComponent implements OnInit { this.trackSubscription( this.route.queryParams.subscribe((param: Params) => { this.authApi - .fetchUserInfoAndTokenFromGithubCallackCode( - param.code as string, - ) + .fetchUserInfoAndTokenFromGithubCallackCode(param.code as string) .subscribe(() => this.navigationService.navigateToHome()); }), ); diff --git a/src/app/auth/login/login.component.html b/src/app/auth/login/login.component.html index 8a9801ddf..470ee6931 100644 --- a/src/app/auth/login/login.component.html +++ b/src/app/auth/login/login.component.html @@ -1,8 +1,2 @@

Please login with your GitHub account.

-
+ diff --git a/src/app/auth/settings/settings.component.html b/src/app/auth/settings/settings.component.html index b3a336623..6bde41bb3 100644 --- a/src/app/auth/settings/settings.component.html +++ b/src/app/auth/settings/settings.component.html @@ -12,10 +12,7 @@ />
- + {{ user.login }} settings @@ -32,11 +29,7 @@
-