package com.yoursway.databinding.resources.tests.shallow; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFolder; import org.eclipse.core.resources.WorkspaceJob; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.jmock.Expectations; import org.junit.Before; import org.junit.Test; import com.yoursway.tests.commons.SetChangeEventMatcher; public final class NonExistantContainer extends AbstractShallowChildrenTests { private IFolder parentFolder; private IFolder folder; private IFile file; @Before public void setUp() throws CoreException { parentFolder = project.getFolder("bar"); folder = parentFolder.getFolder("boz"); file = folder.getFile("foo"); observe(folder); addSetChangeListener(); } @Test public void isReportedAsEmpty() { assertContents(); } @Test public void handlesWhenContainerAppears() throws Exception { context.checking(new Expectations() { { one(listener).handleSetChange(with(new SetChangeEventMatcher().additions(file))); } }); create(parentFolder); WorkspaceJob job = new WorkspaceJob("Test") { @Override public IStatus runInWorkspace(IProgressMonitor monitor) throws CoreException { create(folder); create(file); return Status.OK_STATUS; } }; job.schedule(); job.join(); realm.runAsyncTasks(); context.assertIsSatisfied(); } @Test public void handlesWhenGrandContainerAppears() throws Exception { context.checking(new Expectations() { { one(listener).handleSetChange(with(new SetChangeEventMatcher().additions(file))); } }); WorkspaceJob job = new WorkspaceJob("Test") { @Override public IStatus runInWorkspace(IProgressMonitor monitor) throws CoreException { create(parentFolder); create(folder); create(file); return Status.OK_STATUS; } }; job.schedule(); job.join(); realm.runAsyncTasks(); context.assertIsSatisfied(); } }