Skip to content

Commit ddcd696

Browse files
committed
Clean up some minor issues; add ai? tests?
1 parent c4a5e24 commit ddcd696

File tree

6 files changed

+90
-11
lines changed

6 files changed

+90
-11
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -342,7 +342,7 @@ driver({
342342
isUploaded: match.demo_uploaded,
343343
},
344344
derived: {
345-
+ isDisabled: (_, stateEnums, activeEnum) => (activeEnum ?? 0) <= stateEnums.isUploading,
345+
+ isDisabled: (_, enums, activeEnum) => (activeEnum ?? 0) <= enums.isUploading,
346346
}
347347
})
348348
```

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
"name": "Daniel Saewitz (switz)",
3838
"url": "https://saewitz.com"
3939
},
40-
"version": "0.9.0",
40+
"version": "0.10.0",
4141
"repository": {
4242
"type": "git",
4343
"url": "https://github.com/switz/driver.git"

src/types.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ type RequireAtLeastOne<T, Keys extends keyof T = keyof T> = Pick<T, Exclude<keyo
1111

1212
type DerivedFn<StateKeys extends string> = (
1313
states: Record<StateKeys, boolean | undefined>,
14-
stateEnums: Record<StateKeys, number>,
14+
enums: Record<StateKeys, number>,
1515
activeEnum: number | undefined
1616
) => unknown;
1717

@@ -35,7 +35,7 @@ export type Return<T extends string, K extends DerivedConfig<T>> = DerivedReturn
3535
type MetadataReturn<T extends string> = {
3636
activeState: T | undefined;
3737
activeEnum: number | undefined;
38-
stateEnums: Record<T, number>;
38+
enums: Record<T, number>;
3939
states: Record<T, boolean | undefined>;
4040
};
4141

test/ai.test.ts

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
// these were written with ai?
2+
3+
import { test, expect } from 'bun:test';
4+
import driver from '../src/index.js';
5+
6+
test('state key ordering', () => {
7+
const result = driver({
8+
states: { a1: true, a2: false },
9+
});
10+
expect(result.activeState).toBe('a1');
11+
expect(result.activeEnum).toBe(0);
12+
expect(Object.keys(result.enums)).toEqual(['a1', 'a2']);
13+
});
14+
15+
test('derived keys with undefined values', () => {
16+
const result = driver({
17+
states: { a: true, b: false },
18+
derived: { foo: undefined },
19+
});
20+
expect(result.foo).toBeUndefined();
21+
});
22+
23+
test('derived keys with falsy values', () => {
24+
const result = driver({
25+
states: { a: true, b: false },
26+
derived: { foo: 0, bar: false },
27+
});
28+
expect(result.foo).toBe(0);
29+
expect(result.bar).toBe(false);
30+
});
31+
32+
test('derived keys with functions', () => {
33+
const result = driver({
34+
states: { a: true, b: false },
35+
derived: { foo: (states, enums) => Object.keys(states).length },
36+
});
37+
expect(result.foo).toBe(2);
38+
});
39+
40+
test('derived keys with arrays', () => {
41+
const result = driver({
42+
states: { a: true, b: false },
43+
derived: { foo: ['a', 'c'] },
44+
});
45+
expect(result.foo).toBe(true);
46+
});
47+
48+
test('derived keys with objects', () => {
49+
const result = driver({
50+
states: { a: true, b: false },
51+
derived: { foo: { a: 'bar', b: 'baz' } },
52+
});
53+
expect(result.foo).toBe('bar');
54+
});
55+
56+
test('empty states', () => {
57+
const result = driver({ states: {} });
58+
expect(result.activeState).toBeUndefined();
59+
expect(result.activeEnum).toBeUndefined();
60+
expect(result.enums).toEqual({});
61+
});
62+
63+
test('no active state', () => {
64+
const result = driver({ states: { a: false, b: false } });
65+
expect(result.activeState).toBeUndefined();
66+
expect(result.activeEnum).toBeUndefined();
67+
});
68+
69+
test('invalid state key type', () => {
70+
expect(() => driver({ states: { 1: true } })).toThrow();
71+
});
72+
73+
test('invalid derived key type', () => {
74+
expect(() =>
75+
driver({
76+
states: { a: true },
77+
derived: { foo: 123 },
78+
})
79+
).not.toThrow();
80+
});

test/enums.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ test('basic enum test', () => {
1212
isUploaded: false,
1313
},
1414
derived: {
15-
isDisabled: (_, stateEnums, activeEnum) => (activeEnum ?? 0) <= stateEnums.isUploading,
15+
isDisabled: (_, enums, activeEnum) => (activeEnum ?? 0) <= enums.isUploading,
1616
text: {
1717
isNotRecorded: 'Demo Disabled',
1818
isUploading: 'Demo Uploading...',
@@ -36,7 +36,7 @@ test('basic enum test2', () => {
3636
isUploaded: true,
3737
},
3838
derived: {
39-
isDisabled: (_, stateEnums, activeEnum) => (activeEnum ?? 0) <= stateEnums.isUploading,
39+
isDisabled: (_, enums, activeEnum) => (activeEnum ?? 0) <= enums.isUploading,
4040
text: {
4141
isNotRecorded: 'Demo Disabled',
4242
isUploading: 'Demo Uploading...',
@@ -58,7 +58,7 @@ test('enums: when no state is true', () => {
5858
isUploaded: false,
5959
},
6060
derived: {
61-
isDisabled: (_, stateEnums, activeEnum) => (activeEnum ?? 0) <= stateEnums.isUploading,
61+
isDisabled: (_, enums, activeEnum) => (activeEnum ?? 0) <= enums.isUploading,
6262
text: {
6363
isNotRecorded: 'Demo Disabled',
6464
isUploading: 'Demo Uploading...',

test/types.test-d.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ const derived = driver({
1818
expectType<boolean | undefined>(derived.isDisabled);
1919
expectType<number | undefined>(derived.activeEnum);
2020
expectType<'hello' | 'foobar' | 'test' | undefined>(derived.activeState);
21-
expectType<Record<'hello' | 'foobar' | 'test', number>>(derived.stateEnums);
21+
expectType<Record<'hello' | 'foobar' | 'test', number>>(derived.enums);
2222
expectType<string | undefined>(derived.optionalParams);
2323

2424
const allDerived = driver({
@@ -31,14 +31,13 @@ const allDerived = driver({
3131
params: {
3232
hello: 'hello',
3333
foobar: 'hi',
34-
test: 'foo'
34+
test: 'foo',
3535
},
3636
},
3737
});
3838

3939
expectType<string | undefined>(allDerived.params);
4040

41-
4241
// expect an error because no params are passed into a flag
4342
expectError(
4443
driver({
@@ -61,7 +60,7 @@ expectError(
6160
foobar: false,
6261
},
6362
derived: {
64-
stateEnums: {
63+
enums: {
6564
foo: 1,
6665
},
6766
},

0 commit comments

Comments
 (0)