/*
 * #%L
 * Wisdom-Framework
 * %%
 * Copyright (C) 2013 - 2014 Wisdom Framework
 * %%
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      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.
 * #L%
 */
package org.wisdom.cache.ehcache;

import org.joda.time.Duration;
import org.junit.Test;
import org.wisdom.api.configuration.ApplicationConfiguration;

import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;

/**
 * Check the creation of the EhCache-based cache service implementation.
 */
public class EhCacheServiceTest {

    @Test
    public void test() throws InterruptedException {
        ApplicationConfiguration configuration = mock(ApplicationConfiguration.class);
        EhCacheService svc = new EhCacheService(configuration);

        assertThat(svc.get("key")).isNull();
        svc.set("key", "value", Duration.standardSeconds(1));
        assertThat(svc.get("key")).isEqualTo("value");

        Thread.sleep(1000);
        assertThat(svc.get("key")).isNull();

        svc.set("key", "value", 0);
        assertThat(svc.get("key")).isEqualTo("value");
        assertThat(svc.remove("key")).isTrue();
        assertThat(svc.get("key")).isNull();
        assertThat(svc.remove("missing")).isFalse();

        svc.stop();
    }
}

@@ -1407,25 +1407,26 @@
     
-Thread.sleep(1000
+waitForCleanup(svc
 );%0A 
@@ -1704,24 +1704,24 @@
 isFalse();%0A%0A
-
         svc.
@@ -1733,11 +1733,327 @@
 );%0A    %7D
+%0A%0A    private void waitForCleanup(EhCacheService svc) throws InterruptedException %7B%0A        for (int count = 0; count %3C 5; count++) %7B%0A            Object obj = svc.get(%22key%22);%0A            if (obj == null) %7B%0A                return;%0A            %7D else %7B%0A                Thread.sleep(1000);%0A            %7D%0A        %7D%0A    %7D
 %0A%7D%0A

Fix #225