tweaks and improvements
This commit is contained in:
@@ -13,6 +13,7 @@ function createHarness() {
|
||||
const dialogs = [];
|
||||
const exports = [];
|
||||
const errors = [];
|
||||
let formResult;
|
||||
const project = { multiactor_actor_names: JSON.stringify({ 1: 'player', 2: 'wolf' }) };
|
||||
const context = {
|
||||
Project: project,
|
||||
@@ -20,6 +21,7 @@ function createHarness() {
|
||||
Dialog: class {
|
||||
constructor(options) { this.options = options; dialogs.push(options); }
|
||||
show() {}
|
||||
getFormResult() { return formResult ?? defaults(this.options.form); }
|
||||
},
|
||||
Blockbench: {
|
||||
export(options, callback) { exports.push(JSON.parse(options.content)); callback(); },
|
||||
@@ -43,7 +45,7 @@ function createHarness() {
|
||||
context.adTest.showAnimationDefinitionReviewDialog(group, analysis);
|
||||
return dialogs.at(-1);
|
||||
}
|
||||
return { open, exports, errors, project, analysis };
|
||||
return { open, exports, errors, project, analysis, setFormResult(result) { formResult = result; } };
|
||||
}
|
||||
|
||||
function defaults(form) {
|
||||
@@ -52,6 +54,42 @@ function defaults(form) {
|
||||
.map(([key, field]) => [key, field.value]));
|
||||
}
|
||||
|
||||
test('Save retains definition fields in the project without exporting and restores them on reopen', () => {
|
||||
const h = createHarness(), dialog = h.open(), result = defaults(dialog.form);
|
||||
assert.deepEqual(Array.from(dialog.buttons), ['Cancel', 'Save', 'Create Animdef']);
|
||||
assert.equal(dialog.confirmIndex, 2);
|
||||
result.display_name = 'Saved definition';
|
||||
result.content_tags = 'saved, tags';
|
||||
result.weight = '3';
|
||||
result.stub_stage_1_peaked = true;
|
||||
result.stub_stage_2_peaked = false;
|
||||
h.setFormResult(result);
|
||||
assert.equal(dialog.onButton(1), false);
|
||||
assert.equal(h.exports.length, 0);
|
||||
assert.deepEqual(h.errors, []);
|
||||
assert.equal(h.project.saved, false);
|
||||
const reopened = h.open();
|
||||
assert.equal(reopened.form.display_name.value, result.display_name);
|
||||
assert.equal(reopened.form.content_tags.value, result.content_tags);
|
||||
assert.equal(reopened.form.weight.value, 3);
|
||||
assert.equal(reopened.form.stub_stage_1_peaked.value, true);
|
||||
assert.equal(reopened.form.stub_stage_2_peaked.value, false);
|
||||
assert.equal(reopened.onConfirm(defaults(reopened.form)), true);
|
||||
assert.equal(h.exports[0].display_name, result.display_name);
|
||||
});
|
||||
|
||||
test('invalid Save leaves previously saved fields intact', () => {
|
||||
const h = createHarness(), dialog = h.open(), result = defaults(dialog.form);
|
||||
result.display_name = 'Original';
|
||||
h.setFormResult(result); dialog.onButton(1);
|
||||
const original = h.project.animationdirector_animdef_definitions;
|
||||
h.setFormResult({ ...result, display_name: 'Invalid', weight: '0' });
|
||||
dialog.onButton(1);
|
||||
assert.equal(h.project.animationdirector_animdef_definitions, original);
|
||||
assert.equal(h.exports.length, 0);
|
||||
assert.equal(h.errors.length, 1);
|
||||
});
|
||||
|
||||
test('metadata-only playback stages remain editable and survive definition export', () => {
|
||||
const h = createHarness();
|
||||
h.analysis.stages = h.analysis.stages.slice(0, 1);
|
||||
|
||||
Reference in New Issue
Block a user