Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Can this project be used with vitest? #1711

Open
1 of 2 tasks
dlandtaa opened this issue Mar 1, 2024 · 0 comments
Open
1 of 2 tasks

Can this project be used with vitest? #1711

dlandtaa opened this issue Mar 1, 2024 · 0 comments

Comments

@dlandtaa
Copy link

dlandtaa commented Mar 1, 2024

Issue

I am attempting to write some unit tests for a classes that uses my sequelize-typescript models but I am getting this error when I try to create an instance of a model:

FAIL  MyClass.test.ts [ MyClass.test.ts ]
Error: Specified type of property 'myId'
            cannot be automatically resolved to a sequelize data type. Please
            define the data type manually

Versions

  • sequelize: 6.37.1
  • sequelize-typescript: 2.1.6
  • vitest 1.3.1
  • typescript: 5.3.3
  • node v20.11.0
  • npm 10.2.4
  • macOS 13.5 Ventura

Issue type

  • bug report
  • feature request

Actual behavior

npx vitest

FAIL  MyClass.test.ts [ MyClass.test.ts ]
Error: Specified type of property 'myId'
            cannot be automatically resolved to a sequelize data type. Please
            define the data type manually
 ❯ getSequelizeTypeByDesignType node_modules/sequelize-typescript/dist/model/shared/model-service.js:64:11
 ❯ annotate node_modules/sequelize-typescript/dist/model/column/column.js:32:77
 ❯ Column node_modules/sequelize-typescript/dist/model/column/column.js:14:9
 ❯ __decorateClass MyModel.model.ts:8:24
      7|     myId: string;
      8| 
      9|     @Column
       |                       ^
     10|     name: string;
     11| }
 ❯ MyModel.model.ts:7:5
 ❯ MyClass.test.ts:2:31

Expected behavior

I should be able to create objects for unit tests.

Steps to reproduce

I created a repro repo if you want to be able to see the error happen:

git clone https://github.com/dlandtaa/sequelize-typescript-test
cd sequelize-typescript-test
npm i
npm start # should run and print out a model
npx vitest # should give you the error

Related code

If you don't want to download the repro repo, you can see the code here:

Main.ts

const { Sequelize } = require('sequelize-typescript');
import { MyClass } from './MyClass';
import { MyModel } from './MyModel.model';

const sqlize = new Sequelize('a', 'b', 'c', {
    host: 'd',
    dialect: 'mysql',
    models: [
        MyModel
    ]
});

const myModel = new MyModel();
const myObj = new MyClass();
myObj.doSomething(myModel);

MyModel.ts

import { Table, Column, Model, PrimaryKey } from 'sequelize-typescript';

@Table({ tableName: 'some_table', timestamps: false })
class MyModel extends Model {
    @PrimaryKey
    @Column
    myId: string;

    @Column
    name: string;
}

export { MyModel };

MyClass.ts

import { MyModel } from './MyModel.model';

class MyClass {
    doSomething(model: MyModel) {
        console.log('here is the model you passed in:', model);
    }   
}

export { MyClass };

MyClass.test.ts

import { test } from 'vitest';
import { MyModel } from './MyModel.model';
import { MyClass } from './MyClass';

test('generate D2 task ids', async () => {
    const model = new MyModel();
    const myObject = new MyClass();
    myObject.doSomething(model);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant