diff --git a/packages/backend/src/models/__snapshots__/usage-data.ee.test.js.snap b/packages/backend/src/models/__snapshots__/usage-data.ee.test.js.snap new file mode 100644 index 00000000..348ffd1b --- /dev/null +++ b/packages/backend/src/models/__snapshots__/usage-data.ee.test.js.snap @@ -0,0 +1,41 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`UsageData model > jsonSchema should have correct validations 1`] = ` +{ + "properties": { + "consumedTaskCount": { + "type": "integer", + }, + "createdAt": { + "type": "string", + }, + "deletedAt": { + "type": "string", + }, + "id": { + "format": "uuid", + "type": "string", + }, + "nextResetAt": { + "type": "string", + }, + "subscriptionId": { + "format": "uuid", + "type": "string", + }, + "updatedAt": { + "type": "string", + }, + "userId": { + "format": "uuid", + "type": "string", + }, + }, + "required": [ + "userId", + "consumedTaskCount", + "nextResetAt", + ], + "type": "object", +} +`; diff --git a/packages/backend/src/models/usage-data.ee.test.js b/packages/backend/src/models/usage-data.ee.test.js new file mode 100644 index 00000000..edfb36ff --- /dev/null +++ b/packages/backend/src/models/usage-data.ee.test.js @@ -0,0 +1,52 @@ +import { describe, it, expect } from 'vitest'; +import UsageData from './usage-data.ee'; +import User from './user'; +import Subscription from './subscription.ee'; +import Base from './base'; +import { createUsageData } from '../../test/factories/usage-data'; + +describe('UsageData model', () => { + it('tableName should return correct name', () => { + expect(UsageData.tableName).toBe('usage_data'); + }); + + it('jsonSchema should have correct validations', () => { + expect(UsageData.jsonSchema).toMatchSnapshot(); + }); + + it('relationMappings should return correct associations', () => { + const relationMappings = UsageData.relationMappings(); + + const expectedRelations = { + user: { + relation: Base.BelongsToOneRelation, + modelClass: User, + join: { + from: 'usage_data.user_id', + to: 'users.id', + }, + }, + subscription: { + relation: Base.BelongsToOneRelation, + modelClass: Subscription, + join: { + from: 'usage_data.subscription_id', + to: 'subscriptions.id', + }, + }, + }; + + expect(relationMappings).toStrictEqual(expectedRelations); + }); + + it('increaseConsumedTaskCountByOne should increase consumed task count by one', async () => { + const usageData = await createUsageData({ + consumedTaskCount: 1234, + }); + + await usageData.increaseConsumedTaskCountByOne(); + const refetchedUsageData = await usageData.$query(); + + expect(refetchedUsageData.consumedTaskCount).toStrictEqual(1235); + }); +});