/*
* Copyright 2015 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.dashbuilder.displayer.client.widgets.sourcecode;
import java.util.HashMap;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import org.uberfire.mvp.Command;
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
@RunWith(MockitoJUnitRunner.class)
public class SourceCodeEditorTest {
@Mock
SourceCodeEditor.View view;
@Mock
Command onChange;
@Mock
HtmlValidator htmlValidator;
@Mock
JsValidator jsValidator;
SourceCodeEditor presenter;
@Before
public void init() {
presenter = new SourceCodeEditor(view, htmlValidator, jsValidator);
presenter.init(SourceCodeType.HTML, "Hi", new HashMap<>(), onChange);
}
@Test
public void testInitialization() {
verify(view).edit(SourceCodeType.HTML, "Hi");
}
@Test
public void testEmpty() {
reset(htmlValidator);
presenter.init(SourceCodeType.HTML, null, new HashMap<>(), onChange);
verify(htmlValidator, never()).validate(any());
reset(htmlValidator);
presenter.init(SourceCodeType.HTML, "", new HashMap<>(), onChange);
verify(htmlValidator, never()).validate(any());
reset(jsValidator);
presenter.init(SourceCodeType.JAVASCRIPT, null, new HashMap<>(), onChange);
verify(jsValidator, never()).validate(any(), anyCollection());
reset(jsValidator);
presenter.init(SourceCodeType.JAVASCRIPT, "", new HashMap<>(), onChange);
verify(jsValidator, never()).validate(any(), anyCollection());
}
@Test
public void testOnChange() {
presenter.onSourceCodeChanged("howdy?");
assertEquals(presenter.getCode(), "howdy?");
assertEquals(presenter.hasErrors(), false);
verify(htmlValidator).validate("howdy?");
verify(onChange).execute();
verify(view, never()).error(anyString());
}
@Test
public void testError() {
when(htmlValidator.validate("howdy?")).thenReturn("Error");
boolean ok = presenter.onSourceCodeChanged("howdy?");
assertFalse(ok);
assertEquals(presenter.getCode(), "Hi");
assertEquals(presenter.hasErrors(), true );
verify(htmlValidator).validate("howdy?");
verify(onChange, never()).execute();
verify(view).error("Error");
}
}