Browse Source

test(server): Fix non-deterministic asset ids on Windows

Michael Bromley 7 years ago
parent
commit
32edf9976f

+ 5 - 1
server/mock-data/mock-data.service.ts

@@ -325,7 +325,11 @@ export class MockDataService {
 
 
     async populateAssets(): Promise<Asset[]> {
     async populateAssets(): Promise<Asset[]> {
         const fileNames = await fs.readdir(path.join(__dirname, 'assets'));
         const fileNames = await fs.readdir(path.join(__dirname, 'assets'));
-        const filePaths = fileNames.map(fileName => path.join(__dirname, 'assets', fileName));
+        const filePaths = fileNames
+            .map(fileName => path.join(__dirname, 'assets', fileName))
+            // Sorting is needed because readdir order is not determnistic on Windows.
+            // See https://github.com/nodejs/node/issues/3232
+            .sort((a, b) => (a > b ? 1 : -1));
         return this.client.uploadAssets(filePaths).then(response => {
         return this.client.uploadAssets(filePaths).then(response => {
             this.log(`Created ${response.createAssets.length} Assets`);
             this.log(`Created ${response.createAssets.length} Assets`);
             return response.createAssets;
             return response.createAssets;

+ 2 - 1
server/src/api/resolvers/import.resolver.ts

@@ -16,7 +16,8 @@ export class ImportResolver {
         @Ctx() ctx: RequestContext,
         @Ctx() ctx: RequestContext,
         @Args() args: ImportProductsMutationArgs,
         @Args() args: ImportProductsMutationArgs,
     ): Promise<ImportInfo> {
     ): Promise<ImportInfo> {
-        const { stream, filename, mimetype, encoding } = await args.csvFile;
+        const { createReadStream, filename, mimetype, encoding } = await args.csvFile;
+        const stream = createReadStream();
         return this.importer.parseAndImport(stream, ctx).toPromise();
         return this.importer.parseAndImport(stream, ctx).toPromise();
     }
     }
 }
 }