Skip to content

Commit ee6891d

Browse files
committed
Creates default files if no root-level .html file is provided
1 parent 728c427 commit ee6891d

File tree

4 files changed

+372
-235
lines changed

4 files changed

+372
-235
lines changed

server/controllers/__test__/project.controller.test.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
* @jest-environment node
33
*/
44
import { Response } from 'jest-express';
5-
import sinon from 'sinon';
65

76
import Project, { createMock, createInstanceMock } from '../../models/project';
87
import createProject, { apiCreateProject } from '../project.controller/createProject';

server/domain-objects/Project.js

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import pick from 'lodash/pick';
33
import Project from '../models/project';
44
import createId from '../utils/createId';
55
import createApplicationErrorClass from '../utils/createApplicationErrorClass';
6+
import createDefaultFiles from './createDefaultFiles';
67

78
export const FileValidationError = createApplicationErrorClass('FileValidationError');
89

@@ -103,17 +104,26 @@ export function transformFiles(tree = {}) {
103104
return files;
104105
}
105106

107+
export function containsRootHtmlFile(tree) {
108+
return Object.keys(tree).find(name => /\.html$/.test(name)) != null;
109+
}
110+
106111
/**
107112
* This converts between the public API's Project object
108113
* properties and a mongoose Project model
109114
*
110115
*/
111116
export function toModel(object) {
112117
let files = [];
118+
let tree = object.files;
119+
120+
if (isPlainObject(tree)) {
121+
if (!containsRootHtmlFile(tree)) {
122+
tree = Object.assign(createDefaultFiles(), tree);
123+
}
113124

114-
if (isPlainObject(object.files)) {
115-
files = transformFiles(object.files);
116-
} else if (object.files != null) {
125+
files = transformFiles(tree);
126+
} else if (tree != null) {
117127
throw new FileValidationError('\'files\' must be an object');
118128
}
119129

0 commit comments

Comments
 (0)