They've changed to proper new-style handlers, so the URL also changed. This will let us get the fix for green checkmarks showing up as audit users pass FBE units, even though those units aren't actually complete. AA-409
91 lines
2.9 KiB
JavaScript
91 lines
2.9 KiB
JavaScript
import { Factory } from 'rosie'; // eslint-disable-line import/no-extraneous-dependencies
|
|
import '../../../shared/data/__factories__/block.factory';
|
|
import { buildSimpleCourseBlocks } from '../../../shared/data/__factories__/courseBlocks.factory';
|
|
|
|
Factory.define('sequenceMetadata')
|
|
.option('courseId', (courseId) => {
|
|
if (courseId) {
|
|
return courseId;
|
|
}
|
|
throw new Error('courseId must be specified for sequenceMetadata factory.');
|
|
})
|
|
// An array of units
|
|
.option('unitBlocks', ['courseId'], courseId => ([
|
|
Factory.build(
|
|
'block',
|
|
{ type: 'vertical' },
|
|
{ courseId },
|
|
),
|
|
]))
|
|
.option(
|
|
'sequenceBlock', ['courseId', 'unitBlocks'], (courseId, unitBlocks) => (
|
|
Factory.build(
|
|
'block',
|
|
{ type: 'sequential', children: unitBlocks.map(unitBlock => unitBlock.id) },
|
|
{ courseId },
|
|
)
|
|
),
|
|
)
|
|
.attr('element_id', ['sequenceBlock'], sequenceBlock => sequenceBlock.block_id)
|
|
.attr('item_id', ['sequenceBlock'], sequenceBlock => sequenceBlock.id)
|
|
.attr('display_name', ['sequenceBlock'], sequenceBlock => sequenceBlock.display_name)
|
|
.attr('gated_content', ['sequenceBlock'], sequenceBlock => ({
|
|
gated: false,
|
|
prereq_url: null,
|
|
prereq_id: `${sequenceBlock.id}-prereq`,
|
|
prereq_section_name: `${sequenceBlock.display_name}-prereq`,
|
|
gated_section_name: sequenceBlock.display_name,
|
|
}))
|
|
.attr('items', ['unitBlocks', 'sequenceBlock'], (unitBlocks, sequenceBlock) => unitBlocks.map(
|
|
unitBlock => ({
|
|
href: '',
|
|
graded: unitBlock.graded,
|
|
id: unitBlock.id,
|
|
bookmarked: unitBlock.bookmarked || false,
|
|
path: `Chapter Display Name > ${sequenceBlock.display_name} > ${unitBlock.display_name}`,
|
|
type: unitBlock.type,
|
|
complete: unitBlock.complete || null,
|
|
content: '',
|
|
page_title: unitBlock.display_name,
|
|
contains_content_type_gated_content: unitBlock.contains_content_type_gated_content,
|
|
}),
|
|
))
|
|
.attrs({
|
|
exclude_units: true,
|
|
position: null,
|
|
next_url: null,
|
|
tag: 'sequential',
|
|
save_position: true,
|
|
prev_url: null,
|
|
is_time_limited: false,
|
|
show_completion: true,
|
|
banner_text: null,
|
|
format: 'Homework',
|
|
});
|
|
|
|
/**
|
|
* Build a simple course and simple metadata for its sequence.
|
|
*/
|
|
export default function buildSimpleCourseAndSequenceMetadata(options = {}) {
|
|
const courseMetadata = options.courseMetadata || Factory.build('courseMetadata', {
|
|
can_load_courseware: {
|
|
has_access: false,
|
|
},
|
|
});
|
|
const courseId = courseMetadata.id;
|
|
const simpleCourseBlocks = buildSimpleCourseBlocks(courseId, courseMetadata.name, options);
|
|
const { unitBlocks, sequenceBlocks } = simpleCourseBlocks;
|
|
const sequenceMetadata = options.sequenceMetadata || sequenceBlocks.map(block => Factory.build(
|
|
'sequenceMetadata',
|
|
{},
|
|
{
|
|
courseId, unitBlocks, sequenceBlock: block,
|
|
},
|
|
));
|
|
return {
|
|
...simpleCourseBlocks,
|
|
courseMetadata,
|
|
sequenceMetadata,
|
|
};
|
|
}
|