package com.puremvc.core; import com.puremvc.patterns.proxy.Proxy; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.mockito.internal.util.reflection.Whitebox; import java.util.Map; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; import static org.mockito.BDDMockito.given; import static org.mockito.Mockito.verify; import static org.mockito.MockitoAnnotations.initMocks; public class CoreModelTest { private CoreModel coreModel; @Mock private Proxy proxy; @Before public void setUp() throws Exception { initMocks(this); coreModel = new CoreModel(); given(proxy.getProxyName()).willReturn("defaultProxyName"); } @Test public void shouldAbleToRegisterProxyWithProxyName() throws Exception { coreModel.registerProxy(proxy); Map<String, Proxy> proxyMap = getProxyMap(); assertThat(proxyMap.size(), is(1)); assertThat(proxyMap.get("defaultProxyName"), is(proxy)); verify(proxy).onRegister(); } @Test public void shouldAbleToRemoveProxy() throws Exception { coreModel.registerProxy(proxy); coreModel.removeProxy("defaultProxyName"); Map<String, Proxy> proxyMap = getProxyMap(); assertThat(proxyMap.size(), is(0)); verify(proxy).onRemove(); } private Map<String, Proxy> getProxyMap() { return (Map<String, Proxy>) Whitebox.getInternalState(coreModel, "proxyMap"); } }