mirror of
https://github.com/scratchfoundation/scratch-www.git
synced 2025-02-17 00:21:20 -05:00
Add unit tests for project-info.js
This commit is contained in:
parent
7673bf66a0
commit
d342a28c94
1 changed files with 322 additions and 0 deletions
322
test/unit/lib/project-info.test.js
Normal file
322
test/unit/lib/project-info.test.js
Normal file
|
@ -0,0 +1,322 @@
|
|||
/* eslint-disable no-use-before-define */
|
||||
const projectInfo = require('../../../src/lib/project-info');
|
||||
|
||||
describe('unit test lib/project-info.js', () => {
|
||||
test('videoSensing returns true for a version 3 project with video', () => {
|
||||
const result = projectInfo[videoVersion3.projectVersion].videoSensing(videoVersion3);
|
||||
expect(result).toEqual(true);
|
||||
});
|
||||
|
||||
test('videoSensing returns false for a version 3 project with no video', () => {
|
||||
const result = projectInfo[noVideoVersion3.projectVersion].videoSensing(noVideoVersion3);
|
||||
expect(result).toEqual(false);
|
||||
});
|
||||
|
||||
test('videoSensing returns true for a version 2 project with video', () => {
|
||||
const result = projectInfo[videoVersion2.projectVersion].videoSensing(videoVersion2);
|
||||
expect(result).toEqual(true);
|
||||
});
|
||||
});
|
||||
|
||||
const videoVersion3 = {
|
||||
targets: [
|
||||
{
|
||||
isStage: true,
|
||||
name: 'Stage',
|
||||
variables: {
|
||||
'`jEk@4|i[#Fk?(8x)AV.-my variable': [
|
||||
'my variable',
|
||||
'0'
|
||||
]
|
||||
},
|
||||
lists: {},
|
||||
broadcasts: {},
|
||||
blocks: {
|
||||
'FJz[,QI8`P^5;FEjdBhc': {
|
||||
opcode: 'event_whenflagclicked',
|
||||
next: 'f8q%j#X8sU#C+E1z|-oF',
|
||||
parent: null,
|
||||
inputs: {},
|
||||
fields: {},
|
||||
shadow: false,
|
||||
topLevel: true,
|
||||
x: 255,
|
||||
y: 171
|
||||
},
|
||||
'f8q%j#X8sU#C+E1z|-oF': {
|
||||
opcode: 'videoSensing_videoToggle',
|
||||
next: null,
|
||||
parent: 'FJz[,QI8`P^5;FEjdBhc',
|
||||
inputs: {
|
||||
VIDEO_STATE: [
|
||||
1,
|
||||
'a2$KXEUlr`=IW!MX8(M7'
|
||||
]
|
||||
},
|
||||
fields: {},
|
||||
shadow: false,
|
||||
topLevel: false
|
||||
},
|
||||
'a2$KXEUlr`=IW!MX8(M7': {
|
||||
opcode: 'videoSensing_menu_VIDEO_STATE',
|
||||
next: null,
|
||||
parent: 'f8q%j#X8sU#C+E1z|-oF',
|
||||
inputs: {},
|
||||
fields: {
|
||||
VIDEO_STATE: [
|
||||
'on',
|
||||
null
|
||||
]
|
||||
},
|
||||
shadow: true,
|
||||
topLevel: false
|
||||
}
|
||||
},
|
||||
comments: {},
|
||||
currentCostume: 0,
|
||||
costumes: [
|
||||
{
|
||||
name: 'backdrop1',
|
||||
dataFormat: 'svg',
|
||||
assetId: 'cd21514d0531fdffb22204e0ec5ed84a',
|
||||
md5ext: 'cd21514d0531fdffb22204e0ec5ed84a.svg',
|
||||
rotationCenterX: 240,
|
||||
rotationCenterY: 180
|
||||
}
|
||||
],
|
||||
sounds: [
|
||||
{
|
||||
name: 'pop',
|
||||
assetId: '83a9787d4cb6f3b7632b4ddfebf74367',
|
||||
dataFormat: 'wav',
|
||||
format: '',
|
||||
rate: 48000,
|
||||
sampleCount: 1123,
|
||||
md5ext: '83a9787d4cb6f3b7632b4ddfebf74367.wav'
|
||||
}
|
||||
],
|
||||
volume: 100,
|
||||
layerOrder: 0,
|
||||
tempo: 60,
|
||||
videoTransparency: 50,
|
||||
videoState: 'on',
|
||||
textToSpeechLanguage: null
|
||||
}
|
||||
],
|
||||
monitors: [
|
||||
{
|
||||
id: '`jEk@4|i[#Fk?(8x)AV.-my variable',
|
||||
mode: 'default',
|
||||
opcode: 'data_variable',
|
||||
params: {
|
||||
VARIABLE: 'my variable'
|
||||
},
|
||||
spriteName: null,
|
||||
value: '0',
|
||||
width: 0,
|
||||
height: 0,
|
||||
x: 7,
|
||||
y: 17,
|
||||
visible: false,
|
||||
sliderMin: 0,
|
||||
sliderMax: 100,
|
||||
isDiscrete: true
|
||||
}
|
||||
],
|
||||
extensions: [
|
||||
'videoSensing'
|
||||
],
|
||||
meta: {
|
||||
semver: '3.0.0',
|
||||
vm: '1.2.48',
|
||||
// eslint-disable-next-line max-len
|
||||
agent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36'
|
||||
},
|
||||
projectVersion: 3
|
||||
};
|
||||
|
||||
const noVideoVersion3 = {
|
||||
targets: [
|
||||
{
|
||||
isStage: true,
|
||||
name: 'Stage',
|
||||
variables: {
|
||||
'`jEk@4|i[#Fk?(8x)AV.-my variable': [
|
||||
'my variable',
|
||||
'0'
|
||||
]
|
||||
},
|
||||
lists: {},
|
||||
broadcasts: {},
|
||||
blocks: {
|
||||
'FJz[,QI8`P^5;FEjdBhc': {
|
||||
opcode: 'event_whenflagclicked',
|
||||
next: '`CA90wtKfX0xa.mK80[|',
|
||||
parent: null,
|
||||
inputs: {},
|
||||
fields: {},
|
||||
shadow: false,
|
||||
topLevel: true,
|
||||
x: 255,
|
||||
y: 171
|
||||
},
|
||||
'`CA90wtKfX0xa.mK80[|': {
|
||||
opcode: 'data_setvariableto',
|
||||
next: null,
|
||||
parent: 'FJz[,QI8`P^5;FEjdBhc',
|
||||
inputs: {
|
||||
VALUE: [
|
||||
1,
|
||||
[
|
||||
10,
|
||||
'0'
|
||||
]
|
||||
]
|
||||
},
|
||||
fields: {
|
||||
VARIABLE: [
|
||||
'my variable',
|
||||
'`jEk@4|i[#Fk?(8x)AV.-my variable'
|
||||
]
|
||||
},
|
||||
shadow: false,
|
||||
topLevel: false
|
||||
}
|
||||
},
|
||||
comments: {},
|
||||
currentCostume: 0,
|
||||
costumes: [
|
||||
{
|
||||
name: 'backdrop1',
|
||||
dataFormat: 'svg',
|
||||
assetId: 'cd21514d0531fdffb22204e0ec5ed84a',
|
||||
md5ext: 'cd21514d0531fdffb22204e0ec5ed84a.svg',
|
||||
rotationCenterX: 240,
|
||||
rotationCenterY: 180
|
||||
}
|
||||
],
|
||||
sounds: [
|
||||
{
|
||||
name: 'pop',
|
||||
assetId: '83a9787d4cb6f3b7632b4ddfebf74367',
|
||||
dataFormat: 'wav',
|
||||
format: '',
|
||||
rate: 48000,
|
||||
sampleCount: 1123,
|
||||
md5ext: '83a9787d4cb6f3b7632b4ddfebf74367.wav'
|
||||
}
|
||||
],
|
||||
volume: 100,
|
||||
layerOrder: 0,
|
||||
tempo: 60,
|
||||
videoTransparency: 50,
|
||||
videoState: 'on',
|
||||
textToSpeechLanguage: null
|
||||
}
|
||||
],
|
||||
monitors: [
|
||||
{
|
||||
id: '`jEk@4|i[#Fk?(8x)AV.-my variable',
|
||||
mode: 'default',
|
||||
opcode: 'data_variable',
|
||||
params: {
|
||||
VARIABLE: 'my variable'
|
||||
},
|
||||
spriteName: null,
|
||||
value: '0',
|
||||
width: 0,
|
||||
height: 0,
|
||||
x: 7,
|
||||
y: 17,
|
||||
visible: false,
|
||||
sliderMin: 0,
|
||||
sliderMax: 100,
|
||||
isDiscrete: true
|
||||
}
|
||||
],
|
||||
extensions: [],
|
||||
meta: {
|
||||
semver: '3.0.0',
|
||||
vm: '1.2.48',
|
||||
// eslint-disable-next-line max-len
|
||||
agent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36'
|
||||
},
|
||||
projectVersion: 3
|
||||
};
|
||||
|
||||
const videoVersion2 = {
|
||||
objName: 'Stage',
|
||||
sounds: [{
|
||||
soundName: 'pop',
|
||||
soundID: 1,
|
||||
md5: '83a9787d4cb6f3b7632b4ddfebf74367.wav',
|
||||
sampleCount: 258,
|
||||
rate: 11025,
|
||||
format: ''
|
||||
}],
|
||||
costumes: [{
|
||||
costumeName: 'backdrop1',
|
||||
baseLayerID: 3,
|
||||
baseLayerMD5: '739b5e2a2435f6e1ec2993791b423146.png',
|
||||
bitmapResolution: 1,
|
||||
rotationCenterX: 240,
|
||||
rotationCenterY: 180
|
||||
}],
|
||||
currentCostumeIndex: 0,
|
||||
penLayerMD5: '5c81a336fab8be57adc039a8a2b33ca9.png',
|
||||
penLayerID: 0,
|
||||
tempoBPM: 60,
|
||||
videoAlpha: 0.5,
|
||||
children: [{
|
||||
objName: 'Sprite1',
|
||||
scripts: [[62,
|
||||
85,
|
||||
[['whenGreenFlag'], ['doForever', [['say:', ['senseVideoMotion', 'motion', 'this sprite']]]]]],
|
||||
[70, 216, [['setVideoState', 'on']]],
|
||||
[66, 281, [['setVideoTransparency', 50]]]],
|
||||
sounds: [{
|
||||
soundName: 'meow',
|
||||
soundID: 0,
|
||||
md5: '83c36d806dc92327b9e7049a565c6bff.wav',
|
||||
sampleCount: 18688,
|
||||
rate: 22050,
|
||||
format: ''
|
||||
}],
|
||||
costumes: [{
|
||||
costumeName: 'costume1',
|
||||
baseLayerID: 1,
|
||||
baseLayerMD5: 'f9a1c175dbe2e5dee472858dd30d16bb.svg',
|
||||
bitmapResolution: 1,
|
||||
rotationCenterX: 47,
|
||||
rotationCenterY: 55
|
||||
},
|
||||
{
|
||||
costumeName: 'costume2',
|
||||
baseLayerID: 2,
|
||||
baseLayerMD5: '6e8bd9ae68fdb02b7e1e3df656a75635.svg',
|
||||
bitmapResolution: 1,
|
||||
rotationCenterX: 47,
|
||||
rotationCenterY: 55
|
||||
}],
|
||||
currentCostumeIndex: 0,
|
||||
scratchX: 0,
|
||||
scratchY: 0,
|
||||
scale: 1,
|
||||
direction: 90,
|
||||
rotationStyle: 'normal',
|
||||
isDraggable: false,
|
||||
indexInLibrary: 1,
|
||||
visible: true,
|
||||
spriteInfo: {
|
||||
}
|
||||
}],
|
||||
info: {
|
||||
userAgent: 'Scratch 2.0 Offline Editor',
|
||||
flashVersion: 'WIN 33,1,1,743',
|
||||
spriteCount: 1,
|
||||
videoOn: false,
|
||||
scriptCount: 1,
|
||||
swfVersion: 'v461'
|
||||
},
|
||||
projectVersion: 2
|
||||
};
|
Loading…
Reference in a new issue