Skip to content

Commit

Permalink
Add traitsForEnum to DefinitionProxy
Browse files Browse the repository at this point in the history
  • Loading branch information
Noah Bogart committed Feb 16, 2021
1 parent b51522b commit f9cf701
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 0 deletions.
6 changes: 6 additions & 0 deletions lib/definition-proxy.ts
Expand Up @@ -184,4 +184,10 @@ export class DefinitionProxy<T> {
toSet(fn: (instance: any, key: string, value: any) => Promise<any>): void {
this.definition._toSet = fn;
}

traitsForEnum(name: string, values: string[]): void {
for (const value of values) {
this.trait(value.toLowerCase(), (t) => t.attr(name, () => value));
}
}
}
27 changes: 27 additions & 0 deletions test/acceptance/traits.ts
Expand Up @@ -486,3 +486,30 @@ describe("#968", function() {
expect(child.value).to.equal("child value");
});
});

describe("traitsForEnum", function() {
let fr: FixtureRiveter;

class User extends Model {
name: string;
}

before(function() {
fr = new FixtureRiveter();
fr.fixture(User, (f) => {
f.name(() => "Noah");
f.traitsForEnum("name", ["Robert", "Jaime", "Mortimer"]);
});
});

it("correctly generates all possible traits", async function() {
let user = await fr.build(User);
expect(user.name).to.equal("Noah");
user = await fr.build(User, ["robert"]);
expect(user.name).to.equal("Robert");
user = await fr.build(User, ["jaime"]);
expect(user.name).to.equal("Jaime");
user = await fr.build(User, ["mortimer"]);
expect(user.name).to.equal("Mortimer");
});
});

0 comments on commit f9cf701

Please sign in to comment.