omermorad / mockingbird

🐦 Decorator Powered TypeScript Library for Creating Mocks

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

enhancement: mock different values based on other fields

arthurfiorette opened this issue · comments

Sorry for opening another issue. But i need to generate a different values depending on another fields, example:

export class Example {
  @Mock()
  isActive: boolean;

  @Mock() // Should only be defined if isActive is false.
  deactivationReason?: string;
}

So, it would be cool if i could write something like that:

export class Example {
  @Mock()
  isActive: boolean;

  @Mock((faker, self) => self.isActive ? null : faker.someMethod())
  deactivationReason?: string;
}

Where data is what is already generated, like isActive (Probably depends on execution / field order) because it was declared first.

Also, if it is possible, you also could add the hability to return promises.

Thanks for making this amazing library!

Also, if i use null or undefined as the @Mock(() => result), it throws:

    TypeError: Cannot convert undefined or null to object
        at Function.getOwnPropertyNames (<anonymous>)

      at getClassMembers (../../../node_modules/@plumier/reflect/lib/parser.js:87:28)
      at parseMethods (../../../node_modules/@plumier/reflect/lib/parser.js:134:21)
      at parseClassNoCache (../../../node_modules/@plumier/reflect/lib/parser.js:173:18)
      at ../../../node_modules/@plumier/reflect/lib/helpers.js:18:31
      at walkTypeMembers (../../../node_modules/@plumier/reflect/lib/walker.js:35:45)
      at walkTypeMembersRecursive (../../../node_modules/@plumier/reflect/lib/walker.js:54:23)
      at reflectClass (../../../node_modules/@plumier/reflect/lib/reflect.js:15:55)
      at reflectModuleOrClass (../../../node_modules/@plumier/reflect/lib/reflect.js:66:16)
      at ../../../node_modules/@plumier/reflect/lib/helpers.js:18:31

Got you! Thanks a lot, @arthurfiorette. Don't be sorry, it's our job to make improve this library over time :)

Also, if i use null or undefined as the @Mock(() => result), it throws:

    TypeError: Cannot convert undefined or null to object
        at Function.getOwnPropertyNames (<anonymous>)

      at getClassMembers (../../../node_modules/@plumier/reflect/lib/parser.js:87:28)
      at parseMethods (../../../node_modules/@plumier/reflect/lib/parser.js:134:21)
      at parseClassNoCache (../../../node_modules/@plumier/reflect/lib/parser.js:173:18)
      at ../../../node_modules/@plumier/reflect/lib/helpers.js:18:31
      at walkTypeMembers (../../../node_modules/@plumier/reflect/lib/walker.js:35:45)
      at walkTypeMembersRecursive (../../../node_modules/@plumier/reflect/lib/walker.js:54:23)
      at reflectClass (../../../node_modules/@plumier/reflect/lib/reflect.js:15:55)
      at reflectModuleOrClass (../../../node_modules/@plumier/reflect/lib/reflect.js:66:16)
      at ../../../node_modules/@plumier/reflect/lib/helpers.js:18:31

Can you open a new issue with the full steps to reproduce?