Initial commit of 001code-html Scratch frontend project.
Includes scratch-gui, scratch-vm, scratch-blocks, scratch-render, scratch-l10n, and deployment config. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
110
scratch-gui/test/unit/util/sb-file-uploader-hoc.test.jsx
Normal file
110
scratch-gui/test/unit/util/sb-file-uploader-hoc.test.jsx
Normal file
@@ -0,0 +1,110 @@
|
||||
import 'web-audio-test-api';
|
||||
|
||||
import React from 'react';
|
||||
import configureStore from 'redux-mock-store';
|
||||
import {mountWithIntl, shallowWithIntl} from '../../helpers/intl-helpers.jsx';
|
||||
import {LoadingState} from '../../../src/reducers/project-state';
|
||||
import VM from 'scratch-vm';
|
||||
|
||||
import SBFileUploaderHOC from '../../../src/lib/sb-file-uploader-hoc.jsx';
|
||||
|
||||
describe('SBFileUploaderHOC', () => {
|
||||
const mockStore = configureStore();
|
||||
let store;
|
||||
let vm;
|
||||
|
||||
// Wrap this in a function so it gets test specific states and can be reused.
|
||||
const getContainer = function () {
|
||||
const Component = () => <div />;
|
||||
return SBFileUploaderHOC(Component);
|
||||
};
|
||||
|
||||
const shallowMountWithContext = component => (
|
||||
shallowWithIntl(component, {context: {store}})
|
||||
);
|
||||
|
||||
const unwrappedInstance = () => {
|
||||
const WrappedComponent = getContainer();
|
||||
// default starting state: looking at a project you created, not logged in
|
||||
const wrapper = shallowMountWithContext(
|
||||
<WrappedComponent
|
||||
projectChanged
|
||||
canSave={false}
|
||||
cancelFileUpload={jest.fn()}
|
||||
closeFileMenu={jest.fn()}
|
||||
requestProjectUpload={jest.fn()}
|
||||
userOwnsProject={false}
|
||||
vm={vm}
|
||||
onLoadingFinished={jest.fn()}
|
||||
onLoadingStarted={jest.fn()}
|
||||
onUpdateProjectTitle={jest.fn()}
|
||||
/>
|
||||
);
|
||||
return wrapper
|
||||
.dive() // unwrap intl
|
||||
.dive() // unwrap redux Connect(SBFileUploaderComponent)
|
||||
.instance(); // SBFileUploaderComponent
|
||||
};
|
||||
|
||||
beforeEach(() => {
|
||||
vm = new VM();
|
||||
store = mockStore({
|
||||
scratchGui: {
|
||||
projectState: {
|
||||
loadingState: LoadingState.SHOWING_WITHOUT_ID
|
||||
},
|
||||
vm: {}
|
||||
},
|
||||
locales: {
|
||||
locale: 'en'
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
test('correctly sets title with .sb3 filename', () => {
|
||||
const projectName = unwrappedInstance().getProjectTitleFromFilename('my project is great.sb3');
|
||||
expect(projectName).toBe('my project is great');
|
||||
});
|
||||
|
||||
test('correctly sets title with .sb2 filename', () => {
|
||||
const projectName = unwrappedInstance().getProjectTitleFromFilename('my project is great.sb2');
|
||||
expect(projectName).toBe('my project is great');
|
||||
});
|
||||
|
||||
test('correctly sets title with .sb filename', () => {
|
||||
const projectName = unwrappedInstance().getProjectTitleFromFilename('my project is great.sb');
|
||||
expect(projectName).toBe('my project is great');
|
||||
});
|
||||
|
||||
test('sets blank title with filename with no extension', () => {
|
||||
const projectName = unwrappedInstance().getProjectTitleFromFilename('my project is great');
|
||||
expect(projectName).toBe('');
|
||||
});
|
||||
|
||||
/* tw: test is broken by flag required to fix issues with multiple instances
|
||||
test('if isLoadingUpload becomes true, without fileToUpload set, will call cancelFileUpload', () => {
|
||||
const mockedCancelFileUpload = jest.fn();
|
||||
const WrappedComponent = getContainer();
|
||||
const mounted = mountWithIntl(
|
||||
<WrappedComponent
|
||||
projectChanged
|
||||
canSave={false}
|
||||
cancelFileUpload={mockedCancelFileUpload}
|
||||
closeFileMenu={jest.fn()}
|
||||
isLoadingUpload={false}
|
||||
requestProjectUpload={jest.fn()}
|
||||
store={store}
|
||||
userOwnsProject={false}
|
||||
vm={vm}
|
||||
onLoadingFinished={jest.fn()}
|
||||
onLoadingStarted={jest.fn()}
|
||||
onUpdateProjectTitle={jest.fn()}
|
||||
/>
|
||||
);
|
||||
mounted.setProps({
|
||||
isLoadingUpload: true
|
||||
});
|
||||
expect(mockedCancelFileUpload).toHaveBeenCalled();
|
||||
});
|
||||
*/
|
||||
});
|
||||
Reference in New Issue
Block a user