import * as React from 'react';
import {mount} from 'enzyme';
import {TestModule, TestModuleDefinitions} from './TestModule';
import {TestModuleWithNameNonAlphaChars, MODULE_NAME_CONTAINING_A_HYPHEN} from './TestModuleWithNameNonAlphaChars';
import {TestModuleWithNameTooShort, TOO_SHORT_MODULE_NAME} from './TestModuleWithNameTooShort';
import {TestModuleWithNameTooLong, TOO_LONG_MODULE_NAME} from './TestModuleWithNameTooLong';
import {TestAdaptor} from '../../../adaptors/framework/_tests/TestAdaptor';
import {TestProvider} from './TestProvider';
import {TestProviderImpl} from './TestProviderImpl';
describe('BaseModuleTesting', () => {
const testAdaptor: TestAdaptor = new TestAdaptor();
const testProvider: TestProvider = new TestProviderImpl();
const defaultTestModuleProps : TestModuleDefinitions.Props = new TestModuleDefinitions.Props(
testAdaptor, testProvider);
it('Should allow modules to be registered if the name is OK.', () : void => {
const registeredBeforeMount = testAdaptor.isRegistered(TestModuleDefinitions.TEST_MODULE_NAME);
expect(registeredBeforeMount).toEqual(false);
const providerPriorToMount = testAdaptor.getProviderByModuleName(TestModuleDefinitions.TEST_MODULE_NAME);
expect(providerPriorToMount).toBeUndefined();
mount();
const providerAfterMount = testAdaptor.getProviderByModuleName(TestModuleDefinitions.TEST_MODULE_NAME);
expect(providerAfterMount).toBeDefined();
const castTestProvider = providerAfterMount as TestProvider;
expect(castTestProvider === testProvider).toEqual(true);
});
it('Should not allow modules to be registered if the name is too short.', () : void => {
expect(function() : void {
mount();
}).toThrow();
const registered = testAdaptor.isRegistered(TOO_SHORT_MODULE_NAME);
expect(registered).toEqual(false);
});
it('Should not allow modules to be registered if the name is too long.', () : void => {
expect(function() : void {
mount();
}).toThrow();
const registered = testAdaptor.isRegistered(TOO_LONG_MODULE_NAME);
expect(registered).toEqual(false);
});
it('Should not allow modules to be registered if the name contains a hyphen.', () : void => {
expect(function() : void {
mount();
}).toThrow();
const registered = testAdaptor.isRegistered(MODULE_NAME_CONTAINING_A_HYPHEN);
expect(registered).toEqual(false);
});
});