@neurodevs/meta-node 0.19.10 → 0.19.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -38,4 +38,5 @@ export default class AbstractPackageTest extends AbstractModuleTest {
38
38
  protected static setFakeKeybindingsFile(): void;
39
39
  protected static setFakeMetaNodeVersion(): void;
40
40
  protected static setFakeSnippetsFile(): void;
41
+ protected static generateId(): string;
41
42
  }
@@ -1,5 +1,6 @@
1
1
  import path from 'path';
2
2
  import { setFakeExecResult, setFakeReadFileResult, } from '@neurodevs/fake-node-core';
3
+ import { generateShortId } from '@neurodevs/generate-id';
3
4
  import AbstractModuleTest from '@neurodevs/node-tdd';
4
5
  import expandHomeDir from '../functions/expandHomeDir.js';
5
6
  export default class AbstractPackageTest extends AbstractModuleTest {
@@ -55,5 +56,8 @@ export default class AbstractPackageTest extends AbstractModuleTest {
55
56
  static setFakeSnippetsFile() {
56
57
  setFakeReadFileResult(this.snippetsPath, this.originalSnippetsFile);
57
58
  }
59
+ static generateId() {
60
+ return generateShortId();
61
+ }
58
62
  }
59
63
  //# sourceMappingURL=AbstractPackageTest.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractPackageTest.js","sourceRoot":"","sources":["../../src/__tests__/AbstractPackageTest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AbstractPackageTest.js","sourceRoot":"","sources":["../../src/__tests__/AbstractPackageTest.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,34 @@
1
1
  import AbstractPackageTest from '../AbstractPackageTest.js';
2
2
  export default class NpmAutopackageTest extends AbstractPackageTest {
3
3
  private static instance;
4
+ private static readonly installDir;
5
+ private static readonly description;
6
+ private static readonly gitNamespace;
7
+ private static readonly npmNamespace;
8
+ private static readonly keywords;
9
+ private static readonly license;
10
+ private static readonly author;
11
+ private static readonly githubToken;
12
+ private static readonly randomId;
13
+ private static readonly packageDir;
14
+ private static readonly packageJsonPath;
15
+ private static readonly gitignorePath;
16
+ private static readonly buildDirGitignorePattern;
17
+ private static readonly tasksJsonPath;
18
+ private static readonly testDirPath;
19
+ private static readonly abstractTestPath;
20
+ private static readonly setupVscodeCmd;
21
+ private static readonly checkGenerateIdVersionCmd;
22
+ private static readonly checkNodeTddVersionCmd;
23
+ private static readonly dependencies;
24
+ private static readonly yarnInstallDevDepsCommand;
25
+ private static readonly abstractTestFile;
26
+ private static readonly defaultOptions;
4
27
  protected static beforeEach(): Promise<void>;
5
28
  protected static createsInstance(): Promise<void>;
6
29
  protected static throwsIfGithubTokenNotSet(): Promise<void>;
7
30
  protected static firstCreateRepoInGithubOrg(): Promise<void>;
8
- protected static thenChdirToInstallDir(): Promise<void>;
9
31
  protected static thenGitClone(): Promise<void>;
10
- protected static thenChdirToPackageDir(): Promise<void>;
11
32
  protected static thenGitFetchOrigin(): Promise<void>;
12
33
  protected static thenGitFetchResetHard(): Promise<void>;
13
34
  protected static thenSpruceCreateModule(): Promise<void>;
@@ -27,6 +48,9 @@ export default class NpmAutopackageTest extends AbstractPackageTest {
27
48
  protected static thenInstallsAbstractPackageTest(): Promise<void>;
28
49
  protected static thenCommitsInstallAbstractPackageTest(): Promise<void>;
29
50
  protected static lastlyOpensVscodeAtEnd(): Promise<void>;
51
+ protected static installsDevDependenciesIfGenerateIdNotLatest(): Promise<void>;
52
+ protected static installsDevDependenciesIfNodeTddNotLatest(): Promise<void>;
53
+ protected static makeNpmNamespaceOptional(): Promise<void>;
30
54
  protected static doesNotCreateRepoInGithubOrgIfDone(): Promise<void>;
31
55
  protected static doesNotCloneRepoIfDone(): Promise<void>;
32
56
  protected static doesNotSpruceCreateModuleIfDone(): Promise<void>;
@@ -38,25 +62,14 @@ export default class NpmAutopackageTest extends AbstractPackageTest {
38
62
  protected static doesNotOverrideOriginalDependencies(): Promise<void>;
39
63
  protected static doesNotUpdateTasksJsonIfAlreadyDone(): Promise<void>;
40
64
  protected static doesNotOpenVscodeIfNotCloned(): Promise<void>;
41
- protected static installsDevDependenciesIfGenerateIdNotLatest(): Promise<void>;
42
- protected static installsDevDependenciesIfNodeTddNotLatest(): Promise<void>;
43
65
  protected static doesNotThrowIfGenerateIdNotInPackageJson(): Promise<void>;
44
66
  protected static doesNotInstallAbstractPackageTestIfTsExists(): Promise<void>;
45
67
  protected static doesNotInstallAbstractPackageTestIfTsxExists(): Promise<void>;
46
- protected static makeNpmNamespaceOptional(): Promise<void>;
47
68
  private static run;
48
69
  private static createAndRunAutopackage;
49
70
  private static get scopedPackageName();
50
- private static get packageDir();
51
- private static readonly packageJsonPath;
52
- private static readonly gitignorePath;
53
- private static readonly buildDirGitignorePattern;
54
71
  private static get createModuleCmd();
55
- private static readonly setupVscodeCmd;
56
- private static readonly checkGenerateIdVersionCmd;
57
- private static readonly checkNodeTddVersionCmd;
58
72
  private static orderJsonKeys;
59
- private static fakeChdir;
60
73
  private static fakeExec;
61
74
  private static fakeFetch;
62
75
  private static fakeMkdir;
@@ -65,27 +78,11 @@ export default class NpmAutopackageTest extends AbstractPackageTest {
65
78
  private static fakeWriteFile;
66
79
  private static setFakeAutocommit;
67
80
  private static fakeFetchForRepoNotFound;
68
- private static readonly installDir;
69
- private static readonly name;
70
- private static readonly description;
71
- private static readonly gitNamespace;
72
- private static readonly npmNamespace;
73
- private static readonly keywords;
74
- private static readonly license;
75
- private static readonly author;
76
- private static readonly githubToken;
77
- private static readonly randomId;
78
81
  private static get reposUrl();
79
82
  private static get orgsUrl();
80
- private static readonly dependencies;
81
83
  private static get originalPackageJson();
82
84
  private static get updatedPackageJson();
83
- private static readonly tasksJsonPath;
84
85
  private static originalTasksJson;
85
86
  private static get updatedTasksJson();
86
- private static readonly yarnInstallDevDepsCommand;
87
- private static readonly abstractPackageTestPath;
88
- private static readonly abstractPackageTestFile;
89
- private static readonly defaultOptions;
90
87
  private static NpmAutopackage;
91
88
  }
@@ -5,8 +5,9 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
7
  import { exec as execSync } from 'child_process';
8
+ import path from 'path';
8
9
  import { promisify } from 'util';
9
- import { callsToChdir, callsToExec, callsToFetch, callsToMkdir, callsToReadFile, callsToWriteFile, fakeChdir, fakeExec, fakeFetch, fakeMkdir, fakePathExists, fakeReadFile, fakeWriteFile, resetCallsToChdir, resetCallsToExec, resetCallsToFetch, resetCallsToMkdir, resetCallsToPathExists, resetCallsToReadFile, resetCallsToWriteFile, setFakeExecResult, setFakeFetchResponse, setFakeReadFileResult, setPathShouldExist, } from '@neurodevs/fake-node-core';
10
+ import { callsToExec, callsToFetch, callsToMkdir, callsToReadFile, callsToWriteFile, fakeExec, fakeFetch, fakeMkdir, fakePathExists, fakeReadFile, fakeWriteFile, resetCallsToExec, resetCallsToFetch, resetCallsToMkdir, resetCallsToPathExists, resetCallsToReadFile, resetCallsToWriteFile, setFakeExecResult, setFakeFetchResponse, setFakeReadFileResult, setPathShouldExist, } from '@neurodevs/fake-node-core';
10
11
  import { test, assert } from '@neurodevs/node-tdd';
11
12
  import GitAutocommit from '../../impl/GitAutocommit.js';
12
13
  import NpmAutopackage from '../../impl/NpmAutopackage.js';
@@ -15,9 +16,50 @@ import AbstractPackageTest from '../AbstractPackageTest.js';
15
16
  const exec = promisify(execSync);
16
17
  export default class NpmAutopackageTest extends AbstractPackageTest {
17
18
  static instance;
19
+ static installDir = this.generateId();
20
+ static description = this.generateId();
21
+ static gitNamespace = this.generateId();
22
+ static npmNamespace = this.generateId();
23
+ static keywords = [this.generateId(), this.generateId()];
24
+ static license = this.generateId();
25
+ static author = this.generateId();
26
+ static githubToken = this.generateId();
27
+ static randomId = this.generateId();
28
+ static packageDir = path.join(this.installDir, this.packageName);
29
+ static packageJsonPath = path.join(this.packageDir, 'package.json');
30
+ static gitignorePath = path.join(this.packageDir, '.gitignore');
31
+ static buildDirGitignorePattern = '\nbuild/\n';
32
+ static tasksJsonPath = path.join(this.packageDir, '.vscode', 'tasks.json');
33
+ static testDirPath = path.join(this.packageDir, 'src', '__tests__');
34
+ static abstractTestPath = path.join(this.testDirPath, 'AbstractPackageTest.ts');
35
+ static setupVscodeCmd = 'spruce setup.vscode --all true';
36
+ static checkGenerateIdVersionCmd = `yarn info @neurodevs/generate-id version --silent`;
37
+ static checkNodeTddVersionCmd = `yarn info @neurodevs/node-tdd version --silent`;
38
+ static dependencies = {
39
+ [this.generateId()]: this.generateId(),
40
+ [this.generateId()]: this.generateId(),
41
+ };
42
+ static yarnInstallDevDepsCommand = 'yarn add -D @neurodevs/generate-id@latest @neurodevs/node-tdd@latest';
43
+ static abstractTestFile = `import AbstractModuleTest from '@neurodevs/node-tdd'
44
+
45
+ export default abstract class AbstractPackageTest extends AbstractModuleTest {
46
+ protected static async beforeEach() {
47
+ await super.beforeEach()
48
+ }
49
+ }
50
+ `;
51
+ static defaultOptions = {
52
+ installDir: this.installDir,
53
+ name: this.packageName,
54
+ description: this.description,
55
+ gitNamespace: this.gitNamespace,
56
+ npmNamespace: this.npmNamespace,
57
+ keywords: this.keywords,
58
+ license: this.license,
59
+ author: this.author,
60
+ };
18
61
  static async beforeEach() {
19
62
  await super.beforeEach();
20
- this.fakeChdir();
21
63
  this.fakeExec();
22
64
  this.fakeFetch();
23
65
  this.fakeMkdir();
@@ -54,7 +96,7 @@ export default class NpmAutopackageTest extends AbstractPackageTest {
54
96
  'Content-Type': 'application/json',
55
97
  },
56
98
  body: JSON.stringify({
57
- name: this.name,
99
+ name: this.packageName,
58
100
  private: false,
59
101
  description: this.description,
60
102
  auto_init: true,
@@ -64,33 +106,37 @@ export default class NpmAutopackageTest extends AbstractPackageTest {
64
106
  },
65
107
  }, 'Did not call fetch as expected!');
66
108
  }
67
- static async thenChdirToInstallDir() {
68
- await this.run();
69
- assert.isEqual(callsToChdir[0], this.installDir, 'Did not change to installDir!');
70
- }
71
109
  static async thenGitClone() {
72
110
  await this.run();
73
- assert.isEqual(callsToExec[0]?.command, `git clone https://github.com/${this.gitNamespace}/${this.name}.git`, 'Did not call git clone!');
74
- }
75
- static async thenChdirToPackageDir() {
76
- await this.run();
77
- assert.isEqual(callsToChdir[1], this.packageDir, 'Did not change to packageDir!');
111
+ assert.isEqualDeep(callsToExec[0], {
112
+ command: `git clone https://github.com/${this.gitNamespace}/${this.packageName}.git`,
113
+ options: { cwd: this.installDir },
114
+ }, 'Did not call git clone!');
78
115
  }
79
116
  static async thenGitFetchOrigin() {
80
117
  await this.run();
81
- assert.isEqual(callsToExec[1]?.command, `git fetch origin`, 'Did not call git fetch origin!');
118
+ assert.isEqualDeep(callsToExec[1], { command: `git fetch origin`, options: { cwd: this.packageDir } }, 'Did not call git fetch origin!');
82
119
  }
83
120
  static async thenGitFetchResetHard() {
84
121
  await this.run();
85
- assert.isEqual(callsToExec[2]?.command, `git reset --hard origin/main`, 'Did not call git reset hard!');
122
+ assert.isEqualDeep(callsToExec[2], {
123
+ command: `git reset --hard origin/main`,
124
+ options: { cwd: this.packageDir },
125
+ }, 'Did not call git reset hard!');
86
126
  }
87
127
  static async thenSpruceCreateModule() {
88
128
  await this.run();
89
- assert.isEqual(callsToExec[4]?.command, this.createModuleCmd, 'Did not call "spruce create.module"!');
129
+ assert.isEqualDeep(callsToExec[4], {
130
+ command: this.createModuleCmd,
131
+ options: { cwd: this.packageDir },
132
+ }, 'Did not call "spruce create.module"!');
90
133
  }
91
134
  static async thenCommitCreatePackage() {
92
135
  await this.run();
93
- assert.isEqualDeep(FakeAutocommit.callsToConstructor[0]?.commitMessage, `patch: create package (@neurodevs/meta-node: ${this.metaNodeVersion})`, 'Did not commit create package changes!');
136
+ assert.isEqualDeep(FakeAutocommit.callsToConstructor[0], {
137
+ commitMessage: `patch: create package (@neurodevs/meta-node: ${this.metaNodeVersion})`,
138
+ cwd: this.packageDir,
139
+ }, 'Did not commit create package changes!');
94
140
  }
95
141
  static async thenReadPackageJson() {
96
142
  await this.run();
@@ -136,7 +182,10 @@ export default class NpmAutopackageTest extends AbstractPackageTest {
136
182
  }
137
183
  static async thenCommitUpdatePackage() {
138
184
  await this.run();
139
- assert.isEqualDeep(FakeAutocommit.callsToConstructor[1]?.commitMessage, `patch: update package.json (@neurodevs/meta-node: ${this.metaNodeVersion})`, 'Did not commit update package changes!');
185
+ assert.isEqualDeep(FakeAutocommit.callsToConstructor[1], {
186
+ commitMessage: `patch: update package.json (@neurodevs/meta-node: ${this.metaNodeVersion})`,
187
+ cwd: this.packageDir,
188
+ }, 'Did not commit update package changes!');
140
189
  }
141
190
  static async thenAddBuildDirToGitignore() {
142
191
  await this.run();
@@ -148,15 +197,24 @@ export default class NpmAutopackageTest extends AbstractPackageTest {
148
197
  }
149
198
  static async thenCommitUpdateGitignore() {
150
199
  await this.run();
151
- assert.isEqualDeep(FakeAutocommit.callsToConstructor[2]?.commitMessage, `patch: add build dir to gitignore (@neurodevs/meta-node: ${this.metaNodeVersion})`, 'Did not commit .gitignore changes!');
200
+ assert.isEqualDeep(FakeAutocommit.callsToConstructor[2], {
201
+ commitMessage: `patch: add build dir to gitignore (@neurodevs/meta-node: ${this.metaNodeVersion})`,
202
+ cwd: this.packageDir,
203
+ }, 'Did not commit .gitignore changes!');
152
204
  }
153
205
  static async thenSpruceSetupVscode() {
154
206
  await this.run();
155
- assert.isEqual(callsToExec[5]?.command, this.setupVscodeCmd, 'Did not call "spruce setup.vscode"!');
207
+ assert.isEqualDeep(callsToExec[5], {
208
+ command: this.setupVscodeCmd,
209
+ options: { cwd: this.packageDir },
210
+ }, 'Did not call "spruce setup.vscode"!');
156
211
  }
157
212
  static async thenCommitVscodeChanges() {
158
213
  await this.run();
159
- assert.isEqualDeep(FakeAutocommit.callsToConstructor[3]?.commitMessage, `patch: setup vscode (@neurodevs/meta-node: ${this.metaNodeVersion})`, 'Did not commit vscode changes!');
214
+ assert.isEqualDeep(FakeAutocommit.callsToConstructor[3], {
215
+ commitMessage: `patch: setup vscode (@neurodevs/meta-node: ${this.metaNodeVersion})`,
216
+ cwd: this.packageDir,
217
+ }, 'Did not commit vscode changes!');
160
218
  }
161
219
  static async thenUpdatesVscodeTasksJson() {
162
220
  await this.run();
@@ -168,38 +226,83 @@ export default class NpmAutopackageTest extends AbstractPackageTest {
168
226
  }
169
227
  static async thenCommitsUpdateVscodeTasksJson() {
170
228
  await this.run();
171
- assert.isEqualDeep(FakeAutocommit.callsToConstructor[4]?.commitMessage, `patch: update vscode tasks.json (@neurodevs/meta-node: ${this.metaNodeVersion})`, 'Did not commit updated vscode tasks.json changes!');
229
+ assert.isEqualDeep(FakeAutocommit.callsToConstructor[4], {
230
+ commitMessage: `patch: update vscode tasks.json (@neurodevs/meta-node: ${this.metaNodeVersion})`,
231
+ cwd: this.packageDir,
232
+ }, 'Did not commit updated vscode tasks.json changes!');
172
233
  }
173
234
  static async thenInstallsDefaultDevDependencies() {
174
235
  await this.run();
175
- assert.isEqual(callsToExec[8]?.command, this.yarnInstallDevDepsCommand, 'Did not install default devDependencies!');
236
+ assert.isEqualDeep(callsToExec[8], {
237
+ command: this.yarnInstallDevDepsCommand,
238
+ options: { cwd: this.packageDir },
239
+ }, 'Did not install default devDependencies!');
176
240
  }
177
241
  static async thenCommitsInstallDefaultDevDependencies() {
178
242
  await this.run();
179
- assert.isEqualDeep(FakeAutocommit.callsToConstructor[5]?.commitMessage, `patch: install default devDependencies (@neurodevs/meta-node: ${this.metaNodeVersion})`, 'Did not commit install devDependencies changes!');
243
+ assert.isEqualDeep(FakeAutocommit.callsToConstructor[5], {
244
+ commitMessage: `patch: install default devDependencies (@neurodevs/meta-node: ${this.metaNodeVersion})`,
245
+ cwd: this.packageDir,
246
+ }, 'Did not commit install devDependencies changes!');
180
247
  }
181
248
  static async thenInstallsTestsDirectory() {
182
249
  await this.run();
183
250
  assert.isEqualDeep(callsToMkdir[0], {
184
- path: 'src/__tests__',
251
+ path: this.testDirPath,
185
252
  options: { recursive: true },
186
253
  }, 'Did not install tests directory!');
187
254
  }
188
255
  static async thenInstallsAbstractPackageTest() {
189
256
  await this.run();
190
257
  assert.isEqualDeep(callsToWriteFile[3], {
191
- file: this.abstractPackageTestPath,
192
- data: this.abstractPackageTestFile,
258
+ file: this.abstractTestPath,
259
+ data: this.abstractTestFile,
193
260
  options: { encoding: 'utf-8' },
194
261
  }, 'Did not install AbstractPackageTest!');
195
262
  }
196
263
  static async thenCommitsInstallAbstractPackageTest() {
197
264
  await this.run();
198
- assert.isEqualDeep(FakeAutocommit.callsToConstructor[6]?.commitMessage, `patch: install AbstractPackageTest (@neurodevs/meta-node: ${this.metaNodeVersion})`, 'Did not commit install AbstractPackageTest changes!');
265
+ assert.isEqualDeep(FakeAutocommit.callsToConstructor[6], {
266
+ commitMessage: `patch: install AbstractPackageTest (@neurodevs/meta-node: ${this.metaNodeVersion})`,
267
+ cwd: this.packageDir,
268
+ }, 'Did not commit install AbstractPackageTest changes!');
199
269
  }
200
270
  static async lastlyOpensVscodeAtEnd() {
201
271
  await this.run();
202
- assert.isEqual(callsToExec[9]?.command, 'code .', 'Did not open vscode at end!');
272
+ assert.isEqualDeep(callsToExec[9], { command: 'code .', options: { cwd: this.packageDir } }, 'Did not open vscode at end!');
273
+ }
274
+ static async installsDevDependenciesIfGenerateIdNotLatest() {
275
+ setFakeExecResult(this.checkGenerateIdVersionCmd, {
276
+ stdout: '0.0.1',
277
+ });
278
+ await this.createAndRunAutopackage();
279
+ const calls = callsToExec.filter((call) => call?.command === this.yarnInstallDevDepsCommand);
280
+ assert.isEqualDeep(calls[0], {
281
+ command: this.yarnInstallDevDepsCommand,
282
+ options: { cwd: this.packageDir },
283
+ }, 'Should install default devDependencies if not already installed!');
284
+ }
285
+ static async installsDevDependenciesIfNodeTddNotLatest() {
286
+ setFakeExecResult(this.checkGenerateIdVersionCmd, {
287
+ stdout: '1.0.0',
288
+ });
289
+ setFakeExecResult(this.checkNodeTddVersionCmd, {
290
+ stdout: '0.0.1',
291
+ });
292
+ await this.createAndRunAutopackage();
293
+ const calls = callsToExec.filter((call) => call?.command === this.yarnInstallDevDepsCommand);
294
+ assert.isEqualDeep(calls[0], {
295
+ command: this.yarnInstallDevDepsCommand,
296
+ options: { cwd: this.packageDir },
297
+ }, 'Should install default devDependencies if not already installed!');
298
+ }
299
+ static async makeNpmNamespaceOptional() {
300
+ resetCallsToWriteFile();
301
+ const instance = this.NpmAutopackage({
302
+ npmNamespace: undefined,
303
+ });
304
+ await instance.run();
305
+ assert.doesInclude(callsToWriteFile[0]?.data, `"name": "${this.packageName}"`, 'Did not handle missing npmNamespace!');
203
306
  }
204
307
  static async doesNotCreateRepoInGithubOrgIfDone() {
205
308
  const fakeResponse = new Response(null, {
@@ -214,7 +317,7 @@ export default class NpmAutopackageTest extends AbstractPackageTest {
214
317
  static async doesNotCloneRepoIfDone() {
215
318
  await this.createAndRunAutopackage();
216
319
  assert.isEqual(callsToExec.filter((call) => call?.command ===
217
- `git clone https://github.com/${this.gitNamespace}/${this.name}.git`).length, 1, 'Did not clone repo once!');
320
+ `git clone https://github.com/${this.gitNamespace}/${this.packageName}.git`).length, 1, 'Did not clone repo once!');
218
321
  }
219
322
  static async doesNotSpruceCreateModuleIfDone() {
220
323
  await this.createAndRunAutopackage();
@@ -257,53 +360,26 @@ export default class NpmAutopackageTest extends AbstractPackageTest {
257
360
  .length, 0, 'Did not update tasks.json once!');
258
361
  }
259
362
  static async doesNotOpenVscodeIfNotCloned() {
260
- setPathShouldExist(this.name, true);
363
+ setPathShouldExist(this.packageDir, true);
261
364
  await this.createAndRunAutopackage();
262
365
  assert.isFalse(callsToExec.some((call) => call?.command === 'code .'), 'Should not open vscode if not cloned!');
263
366
  }
264
- static async installsDevDependenciesIfGenerateIdNotLatest() {
265
- setFakeExecResult(this.checkGenerateIdVersionCmd, {
266
- stdout: '0.0.1',
267
- });
268
- await this.createAndRunAutopackage();
269
- const calls = callsToExec.filter((call) => call?.command === this.yarnInstallDevDepsCommand);
270
- assert.isEqual(calls.length, 1, 'Should not install default devDependencies if already installed!');
271
- }
272
- static async installsDevDependenciesIfNodeTddNotLatest() {
273
- setFakeExecResult(this.checkGenerateIdVersionCmd, {
274
- stdout: '1.0.0',
275
- });
276
- setFakeExecResult(this.checkNodeTddVersionCmd, {
277
- stdout: '0.0.1',
278
- });
279
- await this.createAndRunAutopackage();
280
- const calls = callsToExec.filter((call) => call?.command === this.yarnInstallDevDepsCommand);
281
- assert.isEqual(calls.length, 1, 'Should not install default devDependencies if already installed!');
282
- }
283
367
  static async doesNotThrowIfGenerateIdNotInPackageJson() {
284
368
  setFakeReadFileResult(this.packageJsonPath, this.originalPackageJson.replace('@neurodevs/generate-id', ''));
285
369
  await this.createAndRunAutopackage();
286
370
  }
287
371
  static async doesNotInstallAbstractPackageTestIfTsExists() {
288
- setPathShouldExist(this.abstractPackageTestPath, true);
372
+ setPathShouldExist(this.abstractTestPath, true);
289
373
  await this.createAndRunAutopackage();
290
- const calls = callsToWriteFile.filter((call) => call.file === this.abstractPackageTestPath);
374
+ const calls = callsToWriteFile.filter((call) => call.file === this.abstractTestPath);
291
375
  assert.isEqual(calls.length, 0, 'Should not install AbstractPackageTest.ts if already exists!');
292
376
  }
293
377
  static async doesNotInstallAbstractPackageTestIfTsxExists() {
294
- setPathShouldExist(`${this.abstractPackageTestPath}x`, true);
378
+ setPathShouldExist(`${this.abstractTestPath}x`, true);
295
379
  await this.createAndRunAutopackage();
296
- const calls = callsToWriteFile.filter((call) => call.file === this.abstractPackageTestPath);
380
+ const calls = callsToWriteFile.filter((call) => call.file === this.abstractTestPath);
297
381
  assert.isEqual(calls.length, 0, 'Should not install AbstractPackageTest.tsx if already exists!');
298
382
  }
299
- static async makeNpmNamespaceOptional() {
300
- resetCallsToWriteFile();
301
- const instance = this.NpmAutopackage({
302
- npmNamespace: undefined,
303
- });
304
- await instance.run();
305
- assert.doesInclude(callsToWriteFile[0]?.data, `"name": "${this.name}"`, 'Did not handle missing npmNamespace!');
306
- }
307
383
  static async run() {
308
384
  await this.instance.run();
309
385
  }
@@ -312,20 +388,11 @@ export default class NpmAutopackageTest extends AbstractPackageTest {
312
388
  await instance.run();
313
389
  }
314
390
  static get scopedPackageName() {
315
- return `@${this.npmNamespace}/${this.name}`;
391
+ return `@${this.npmNamespace}/${this.packageName}`;
316
392
  }
317
- static get packageDir() {
318
- return this.name;
319
- }
320
- static packageJsonPath = 'package.json';
321
- static gitignorePath = '.gitignore';
322
- static buildDirGitignorePattern = '\nbuild/\n';
323
393
  static get createModuleCmd() {
324
- return `spruce create.module --name "${this.name}" --destination "." --description "${this.description}"`;
394
+ return `spruce create.module --name "${this.packageName}" --destination "." --description "${this.description}"`;
325
395
  }
326
- static setupVscodeCmd = 'spruce setup.vscode --all true';
327
- static checkGenerateIdVersionCmd = `yarn info @neurodevs/generate-id version --silent`;
328
- static checkNodeTddVersionCmd = `yarn info @neurodevs/node-tdd version --silent`;
329
396
  static orderJsonKeys(json, keyOrder) {
330
397
  const ordered = {};
331
398
  for (const key of keyOrder) {
@@ -341,10 +408,6 @@ export default class NpmAutopackageTest extends AbstractPackageTest {
341
408
  }
342
409
  return ordered;
343
410
  }
344
- static fakeChdir() {
345
- NpmAutopackage.chdir = fakeChdir;
346
- resetCallsToChdir();
347
- }
348
411
  static fakeExec() {
349
412
  NpmAutopackage.exec = fakeExec;
350
413
  resetCallsToExec();
@@ -361,7 +424,7 @@ export default class NpmAutopackageTest extends AbstractPackageTest {
361
424
  static fakePathExists() {
362
425
  NpmAutopackage.pathExists = fakePathExists;
363
426
  resetCallsToPathExists();
364
- setPathShouldExist(this.abstractPackageTestPath, false);
427
+ setPathShouldExist(this.abstractTestPath, false);
365
428
  }
366
429
  static fakeReadFile() {
367
430
  NpmAutopackage.readFile = fakeReadFile;
@@ -384,29 +447,15 @@ export default class NpmAutopackageTest extends AbstractPackageTest {
384
447
  });
385
448
  setFakeFetchResponse(this.reposUrl, fakeResponse);
386
449
  }
387
- static installDir = this.generateId();
388
- static name = this.generateId();
389
- static description = this.generateId();
390
- static gitNamespace = this.generateId();
391
- static npmNamespace = this.generateId();
392
- static keywords = [this.generateId(), this.generateId()];
393
- static license = this.generateId();
394
- static author = this.generateId();
395
- static githubToken = this.generateId();
396
- static randomId = this.generateId();
397
450
  static get reposUrl() {
398
- return `https://api.github.com/repos/${this.gitNamespace}/${this.name}`;
451
+ return `https://api.github.com/repos/${this.gitNamespace}/${this.packageName}`;
399
452
  }
400
453
  static get orgsUrl() {
401
454
  return `https://api.github.com/orgs/${this.gitNamespace}/repos`;
402
455
  }
403
- static dependencies = {
404
- [this.generateId()]: this.generateId(),
405
- [this.generateId()]: this.generateId(),
406
- };
407
456
  static get originalPackageJson() {
408
457
  return JSON.stringify({
409
- name: this.name,
458
+ name: this.packageName,
410
459
  description: 'Old description',
411
460
  dependencies: this.dependencies,
412
461
  devDependencies: {
@@ -424,18 +473,17 @@ export default class NpmAutopackageTest extends AbstractPackageTest {
424
473
  license: this.license,
425
474
  author: this.author,
426
475
  main: 'build/index.js',
427
- homepage: `https://github.com/${this.gitNamespace}/${this.name}`,
476
+ homepage: `https://github.com/${this.gitNamespace}/${this.packageName}`,
428
477
  repository: {
429
478
  type: 'git',
430
- url: `git+https://github.com/${this.gitNamespace}/${this.name}.git`,
479
+ url: `git+https://github.com/${this.gitNamespace}/${this.packageName}.git`,
431
480
  },
432
481
  bugs: {
433
- url: `https://github.com/${this.gitNamespace}/${this.name}/issues`,
482
+ url: `https://github.com/${this.gitNamespace}/${this.packageName}/issues`,
434
483
  },
435
484
  dependencies: this.dependencies,
436
485
  });
437
486
  }
438
- static tasksJsonPath = '.vscode/tasks.json';
439
487
  static originalTasksJson = {
440
488
  [this.randomId]: this.randomId,
441
489
  tasks: [
@@ -478,26 +526,6 @@ export default class NpmAutopackageTest extends AbstractPackageTest {
478
526
  ],
479
527
  }, null, 4);
480
528
  }
481
- static yarnInstallDevDepsCommand = 'yarn add -D @neurodevs/generate-id@latest @neurodevs/node-tdd@latest';
482
- static abstractPackageTestPath = 'src/__tests__/AbstractPackageTest.ts';
483
- static abstractPackageTestFile = `import AbstractModuleTest from '@neurodevs/node-tdd'
484
-
485
- export default abstract class AbstractPackageTest extends AbstractModuleTest {
486
- protected static async beforeEach() {
487
- await super.beforeEach()
488
- }
489
- }
490
- `;
491
- static defaultOptions = {
492
- installDir: this.installDir,
493
- name: this.name,
494
- description: this.description,
495
- gitNamespace: this.gitNamespace,
496
- npmNamespace: this.npmNamespace,
497
- keywords: this.keywords,
498
- license: this.license,
499
- author: this.author,
500
- };
501
529
  static NpmAutopackage(options) {
502
530
  return NpmAutopackage.Create({ ...this.defaultOptions, ...options });
503
531
  }
@@ -511,15 +539,9 @@ __decorate([
511
539
  __decorate([
512
540
  test()
513
541
  ], NpmAutopackageTest, "firstCreateRepoInGithubOrg", null);
514
- __decorate([
515
- test()
516
- ], NpmAutopackageTest, "thenChdirToInstallDir", null);
517
542
  __decorate([
518
543
  test()
519
544
  ], NpmAutopackageTest, "thenGitClone", null);
520
- __decorate([
521
- test()
522
- ], NpmAutopackageTest, "thenChdirToPackageDir", null);
523
545
  __decorate([
524
546
  test()
525
547
  ], NpmAutopackageTest, "thenGitFetchOrigin", null);
@@ -577,6 +599,15 @@ __decorate([
577
599
  __decorate([
578
600
  test()
579
601
  ], NpmAutopackageTest, "lastlyOpensVscodeAtEnd", null);
602
+ __decorate([
603
+ test()
604
+ ], NpmAutopackageTest, "installsDevDependenciesIfGenerateIdNotLatest", null);
605
+ __decorate([
606
+ test()
607
+ ], NpmAutopackageTest, "installsDevDependenciesIfNodeTddNotLatest", null);
608
+ __decorate([
609
+ test()
610
+ ], NpmAutopackageTest, "makeNpmNamespaceOptional", null);
580
611
  __decorate([
581
612
  test()
582
613
  ], NpmAutopackageTest, "doesNotCreateRepoInGithubOrgIfDone", null);
@@ -610,12 +641,6 @@ __decorate([
610
641
  __decorate([
611
642
  test()
612
643
  ], NpmAutopackageTest, "doesNotOpenVscodeIfNotCloned", null);
613
- __decorate([
614
- test()
615
- ], NpmAutopackageTest, "installsDevDependenciesIfGenerateIdNotLatest", null);
616
- __decorate([
617
- test()
618
- ], NpmAutopackageTest, "installsDevDependenciesIfNodeTddNotLatest", null);
619
644
  __decorate([
620
645
  test()
621
646
  ], NpmAutopackageTest, "doesNotThrowIfGenerateIdNotInPackageJson", null);
@@ -625,7 +650,4 @@ __decorate([
625
650
  __decorate([
626
651
  test()
627
652
  ], NpmAutopackageTest, "doesNotInstallAbstractPackageTestIfTsxExists", null);
628
- __decorate([
629
- test()
630
- ], NpmAutopackageTest, "makeNpmNamespaceOptional", null);
631
653
  //# sourceMappingURL=NpmAutopackage.test.js.map