diff --git a/front/src/modules/ui/components/buttons/__stories__/Button.stories.tsx b/front/src/modules/ui/components/buttons/__stories__/Button.stories.tsx index 18aec7712..add0b93c3 100644 --- a/front/src/modules/ui/components/buttons/__stories__/Button.stories.tsx +++ b/front/src/modules/ui/components/buttons/__stories__/Button.stories.tsx @@ -189,16 +189,6 @@ MediumSize.parameters = { // Small size export const SmallSize: Story = { render: getRenderWrapperForComponent(), - play: async ({ canvasElement }) => { - const canvas = within(canvasElement); - - expect(clickJestFn).toHaveBeenCalledTimes(0); - - const button = canvas.getByTestId('primary-button-default'); - await userEvent.click(button); - - expect(clickJestFn).toHaveBeenCalledTimes(1); - }, }; SmallSize.parameters = { pseudo: { diff --git a/front/src/modules/ui/components/buttons/__stories__/MainButton.stories.tsx b/front/src/modules/ui/components/buttons/__stories__/MainButton.stories.tsx index c9d164401..0b3182037 100644 --- a/front/src/modules/ui/components/buttons/__stories__/MainButton.stories.tsx +++ b/front/src/modules/ui/components/buttons/__stories__/MainButton.stories.tsx @@ -65,15 +65,6 @@ export const DefaultSecondary: Story = { variant="secondary" />, ), - play: async ({ canvasElement }) => { - const canvas = within(canvasElement); - - expect(clickJestFn).toHaveBeenCalledTimes(0); - const button = canvas.getByRole('button'); - await userEvent.click(button); - - expect(clickJestFn).toHaveBeenCalledTimes(1); - }, }; export const WithIconSecondary: Story = { diff --git a/server/package.json b/server/package.json index b1c8487ba..db44a550f 100644 --- a/server/package.json +++ b/server/package.json @@ -31,7 +31,6 @@ "@casl/ability": "^6.5.0", "@casl/prisma": "^1.4.0", "@nestjs/apollo": "^11.0.5", - "@nestjs/axios": "^3.0.0", "@nestjs/common": "^9.0.0", "@nestjs/config": "^2.3.2", "@nestjs/core": "^9.0.0", diff --git a/server/src/app.module.ts b/server/src/app.module.ts index f87099d86..8ef5273c3 100644 --- a/server/src/app.module.ts +++ b/server/src/app.module.ts @@ -10,7 +10,6 @@ import { GraphQLError } from 'graphql'; import { PrismaModule } from './database/prisma.module'; import { HealthModule } from './health/health.module'; import { AbilityModule } from './ability/ability.module'; -import { EventModule } from './core/analytics/event.module'; import GraphQLJSON from 'graphql-type-json'; @Module({ @@ -34,7 +33,6 @@ import GraphQLJSON from 'graphql-type-json'; HealthModule, AbilityModule, CoreModule, - EventModule, ], providers: [AppService], }) diff --git a/server/src/core/analytics/event.entity.ts b/server/src/core/analytics/analytics.entity.ts similarity index 88% rename from server/src/core/analytics/event.entity.ts rename to server/src/core/analytics/analytics.entity.ts index 2bffd9f57..fcccbb7bf 100644 --- a/server/src/core/analytics/event.entity.ts +++ b/server/src/core/analytics/analytics.entity.ts @@ -1,7 +1,7 @@ import { ObjectType, Field } from '@nestjs/graphql'; @ObjectType() -export class Event { +export class Analytics { @Field(() => Boolean, { description: 'Boolean that confirms query was dispatched', }) diff --git a/server/src/core/analytics/analytics.module.ts b/server/src/core/analytics/analytics.module.ts new file mode 100644 index 000000000..85f100ec2 --- /dev/null +++ b/server/src/core/analytics/analytics.module.ts @@ -0,0 +1,8 @@ +import { Module } from '@nestjs/common'; +import { AnalyticsService } from './analytics.service'; +import { AnalyticsResolver } from './analytics.resolver'; + +@Module({ + providers: [AnalyticsResolver, AnalyticsService], +}) +export class AnalyticsModule {} diff --git a/server/src/core/analytics/analytics.resolver.spec.ts b/server/src/core/analytics/analytics.resolver.spec.ts new file mode 100644 index 000000000..5bf52c768 --- /dev/null +++ b/server/src/core/analytics/analytics.resolver.spec.ts @@ -0,0 +1,19 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { AnalyticsResolver } from './analytics.resolver'; +import { AnalyticsService } from './analytics.service'; + +describe('AnalyticsResolver', () => { + let resolver: AnalyticsResolver; + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + providers: [AnalyticsResolver, AnalyticsService], + }).compile(); + + resolver = module.get(AnalyticsResolver); + }); + + it('should be defined', () => { + expect(resolver).toBeDefined(); + }); +}); diff --git a/server/src/core/analytics/event.resolver.ts b/server/src/core/analytics/analytics.resolver.ts similarity index 53% rename from server/src/core/analytics/event.resolver.ts rename to server/src/core/analytics/analytics.resolver.ts index c660d56e4..2504c17dc 100644 --- a/server/src/core/analytics/event.resolver.ts +++ b/server/src/core/analytics/analytics.resolver.ts @@ -1,7 +1,7 @@ import { Resolver, Mutation, Args } from '@nestjs/graphql'; -import { EventService } from './event.service'; -import { Event } from './event.entity'; -import { CreateEventInput } from './dto/create-event.input'; +import { AnalyticsService } from './analytics.service'; +import { Analytics } from './analytics.entity'; +import { CreateAnalyticsInput } from './dto/create-analytics.input'; import { OptionalJwtAuthGuard } from 'src/guards/optional-jwt.auth.guard'; import { UseGuards } from '@nestjs/common'; import { AuthWorkspace } from 'src/decorators/auth-workspace.decorator'; @@ -9,16 +9,16 @@ import { User, Workspace } from '@prisma/client'; import { AuthUser } from 'src/decorators/auth-user.decorator'; @UseGuards(OptionalJwtAuthGuard) -@Resolver(() => Event) -export class EventResolver { - constructor(private readonly eventService: EventService) {} +@Resolver(() => Analytics) +export class AnalyticsResolver { + constructor(private readonly analyticsService: AnalyticsService) {} - @Mutation(() => Event) + @Mutation(() => Analytics) createEvent( - @Args() createEventInput: CreateEventInput, + @Args() createEventInput: CreateAnalyticsInput, @AuthWorkspace() workspace: Workspace | undefined, @AuthUser() user: User | undefined, ) { - return this.eventService.create(createEventInput, user, workspace); + return this.analyticsService.create(createEventInput, user, workspace); } } diff --git a/server/src/core/analytics/analytics.service.spec.ts b/server/src/core/analytics/analytics.service.spec.ts new file mode 100644 index 000000000..9abc31062 --- /dev/null +++ b/server/src/core/analytics/analytics.service.spec.ts @@ -0,0 +1,18 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { AnalyticsService } from './analytics.service'; + +describe('AnalyticsService', () => { + let service: AnalyticsService; + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + providers: [AnalyticsService], + }).compile(); + + service = module.get(AnalyticsService); + }); + + it('should be defined', () => { + expect(service).toBeDefined(); + }); +}); diff --git a/server/src/core/analytics/event.service.ts b/server/src/core/analytics/analytics.service.ts similarity index 59% rename from server/src/core/analytics/event.service.ts rename to server/src/core/analytics/analytics.service.ts index 6192114d9..932666a4e 100644 --- a/server/src/core/analytics/event.service.ts +++ b/server/src/core/analytics/analytics.service.ts @@ -1,15 +1,21 @@ import { Injectable } from '@nestjs/common'; -import { CreateEventInput } from './dto/create-event.input'; -import { HttpService } from '@nestjs/axios'; -import { anonymize } from 'src/utils/anonymize'; import { User, Workspace } from '@prisma/client'; +import axios, { AxiosInstance } from 'axios'; +import { CreateAnalyticsInput } from './dto/create-analytics.input'; +import { anonymize } from 'src/utils/anonymize'; @Injectable() -export class EventService { - constructor(private readonly httpService: HttpService) {} +export class AnalyticsService { + private readonly httpService: AxiosInstance; - create( - createEventInput: CreateEventInput, + constructor() { + this.httpService = axios.create({ + baseURL: 'https://t.twenty.com/api/v1/s2s', + }); + } + + async create( + createEventInput: CreateAnalyticsInput, user: User | undefined, workspace: Workspace | undefined, ) { @@ -27,11 +33,9 @@ export class EventService { }, }; - this.httpService - .post('https://t.twenty.com/api/v1/s2s/event?noToken', data) - .subscribe({ - error: () => null, - }); + try { + await this.httpService.post('/event?noToken', data); + } catch {} return { success: true }; } diff --git a/server/src/core/analytics/dto/create-event.input.ts b/server/src/core/analytics/dto/create-analytics.input.ts similarity index 91% rename from server/src/core/analytics/dto/create-event.input.ts rename to server/src/core/analytics/dto/create-analytics.input.ts index 1b84544d5..3a16041cf 100644 --- a/server/src/core/analytics/dto/create-event.input.ts +++ b/server/src/core/analytics/dto/create-analytics.input.ts @@ -3,7 +3,7 @@ import GraphQLJSON from 'graphql-type-json'; import { IsNotEmpty, IsString, IsObject } from 'class-validator'; @ArgsType() -export class CreateEventInput { +export class CreateAnalyticsInput { @Field({ description: 'Type of the event' }) @IsNotEmpty() @IsString() diff --git a/server/src/core/analytics/event.module.ts b/server/src/core/analytics/event.module.ts deleted file mode 100644 index d7e437da2..000000000 --- a/server/src/core/analytics/event.module.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Module } from '@nestjs/common'; -import { EventService } from './event.service'; -import { EventResolver } from './event.resolver'; -import { HttpModule } from '@nestjs/axios'; - -@Module({ - providers: [EventResolver, EventService], - imports: [HttpModule], -}) -export class EventModule {} diff --git a/server/src/core/analytics/event.resolver.spec.ts b/server/src/core/analytics/event.resolver.spec.ts deleted file mode 100644 index 2ee38601c..000000000 --- a/server/src/core/analytics/event.resolver.spec.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { EventResolver } from './event.resolver'; -import { EventService } from './event.service'; -import { HttpModule } from '@nestjs/axios'; - -describe('EventResolver', () => { - let resolver: EventResolver; - - beforeEach(async () => { - const module: TestingModule = await Test.createTestingModule({ - imports: [HttpModule], - providers: [EventResolver, EventService], - }).compile(); - - resolver = module.get(EventResolver); - }); - - it('should be defined', () => { - expect(resolver).toBeDefined(); - }); -}); diff --git a/server/src/core/analytics/event.service.spec.ts b/server/src/core/analytics/event.service.spec.ts deleted file mode 100644 index 448203e7f..000000000 --- a/server/src/core/analytics/event.service.spec.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { EventService } from './event.service'; -import { HttpModule } from '@nestjs/axios'; - -describe('EventService', () => { - let service: EventService; - - beforeEach(async () => { - const module: TestingModule = await Test.createTestingModule({ - imports: [HttpModule], - providers: [EventService], - }).compile(); - - service = module.get(EventService); - }); - - it('should be defined', () => { - expect(service).toBeDefined(); - }); -}); diff --git a/server/src/core/core.module.ts b/server/src/core/core.module.ts index d494efeb2..e33b0d833 100644 --- a/server/src/core/core.module.ts +++ b/server/src/core/core.module.ts @@ -6,7 +6,7 @@ import { PersonModule } from './person/person.module'; import { PipelineModule } from './pipeline/pipeline.module'; import { AuthModule } from './auth/auth.module'; import { WorkspaceModule } from './workspace/workspace.module'; -import { EventModule } from './analytics/event.module'; +import { AnalyticsModule } from './analytics/analytics.module'; @Module({ imports: [ @@ -17,7 +17,7 @@ import { EventModule } from './analytics/event.module'; PersonModule, PipelineModule, WorkspaceModule, - EventModule, + AnalyticsModule, ], exports: [ AuthModule, @@ -27,7 +27,7 @@ import { EventModule } from './analytics/event.module'; PersonModule, PipelineModule, WorkspaceModule, - EventModule, + AnalyticsModule, ], }) export class CoreModule {} diff --git a/server/yarn.lock b/server/yarn.lock index a31b3461f..1df8e9c5e 100644 --- a/server/yarn.lock +++ b/server/yarn.lock @@ -1055,11 +1055,6 @@ lodash.omit "4.5.0" tslib "2.5.2" -"@nestjs/axios@^3.0.0": - version "3.0.0" - resolved "https://registry.npmjs.org/@nestjs/axios/-/axios-3.0.0.tgz" - integrity sha512-ULdH03jDWkS5dy9X69XbUVbhC+0pVnrRcj7bIK/ytTZ76w7CgvTZDJqsIyisg3kNOiljRW/4NIjSf3j6YGvl+g== - "@nestjs/cli@^9.0.0": version "9.5.0" resolved "https://registry.npmjs.org/@nestjs/cli/-/cli-9.5.0.tgz"