package org.ff4j.test.store; /* * #%L ff4j-store-jdbc %% Copyright (C) 2013 Ff4J %% 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% */ import java.util.Set; import org.ff4j.core.Feature; import org.ff4j.core.FeatureStore; import org.ff4j.exception.FeatureNotFoundException; import org.ff4j.property.PropertyInt; import org.ff4j.property.PropertyString; import org.ff4j.utils.Util; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import static org.ff4j.test.TestsFf4jConstants.*; /** * Testing JDBC Store with spring ans conf as XML. * * @author <a href="mailto:cedrick.lunven@gmail.com">Cedrick LUNVEN</a> */ @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("classpath:*applicationContext-jdbc-test.xml") public class SpringJdbcXMLDataSourceStoreTest extends FeatureStoreTestSupport { @Autowired private FeatureStore store; /** {@inheritDoc} */ @Override protected FeatureStore initStore() { return store; } /** * TDD. */ @Test @Override public void testStoreHasBeenInitialized() { // Given assertFf4j.assertThatStoreHasSize(EXPECTED_FEATURES_NUMBERS); assertFf4j.assertThatFeatureFlipped(F1); } /** * TDD : Exact same code from upper class */ @Test(expected = FeatureNotFoundException.class) @Override public void testRemoveFromGroupFeatureDoeNotExist() { // Given assertFf4j.assertThatGroupExist(G1); assertFf4j.assertThatFeatureDoesNotExist(F_DOESNOTEXIST); // When testedStore.removeFromGroup(F_DOESNOTEXIST, G1); // Then, expected error } /** * TDD. */ @Test @Override public void testReadAllGroup() { // Given assertFf4j.assertThatGroupExist(G0); assertFf4j.assertThatGroupExist(G1); // When Set<String> groups = testedStore.readAllGroups(); // Then Assert.assertEquals(2, groups.size()); Assert.assertTrue(groups.contains(G0)); Assert.assertTrue(groups.contains(G1)); } /** * TDD. */ @Test @Override public void testUpdateFlipLessAutorisation() { // Given assertFf4j.assertThatFeatureExist(F1); assertFf4j.assertThatFeatureHasRole(F1, ROLE_USER); // When testedStore.update(new Feature(F1, false, null)); // Then assertFf4j.assertThatFeatureHasNotRole(F1, ROLE_USER); } /** * TDD. */ @Test @Override public void testGrantRoleToFeatureRoleDoesNotExist() throws Exception { // Given assertFf4j.assertThatFeatureExist(F1); assertFf4j.assertThatFeatureHasNotRole(F1, ROLE_NEW); // When testedStore.grantRoleOnFeature(F1, ROLE_NEW); // Then assertFf4j.assertThatFeatureHasRole(F1, ROLE_NEW); } /** * TDD. */ @Test @Override @SuppressWarnings("unchecked") public void testUpdateEditPropertyAddFixedValues() { // Given assertFf4j.assertThatFeatureExist(F1); Feature myFeature = ff4j.getFeatureStore().read(F1); myFeature = ff4j.getFeatureStore().read(F1); assertFf4j.assertThatFeatureHasProperty(F1, "digitValue"); Set < Integer > fixValues = (Set<Integer>) ff4j .getFeatureStore().read(F1)// .getCustomProperties().get("digitValue") .getFixedValues(); Assert.assertEquals(4, fixValues.size()); // When PropertyInt p1 = new PropertyInt("digitValue"); p1.setFixedValues(Util.set(0,1,2,3,4)); p1.setValue(4); myFeature.getCustomProperties().put(p1.getName(), p1); testedStore.update(myFeature); // Then Set < Integer > fixValues2 = (Set<Integer>) ff4j .getFeatureStore().read(F1)// .getCustomProperties().get("digitValue") .getFixedValues(); Assert.assertEquals(5, fixValues2.size()); } /** * TDD. */ @Test @Override @SuppressWarnings("unchecked") public void testUpdateEditPropertyRemoveFixedValues() { // Given assertFf4j.assertThatFeatureExist(F1); assertFf4j.assertThatFeatureHasProperty(F1, "regionIdentifier"); Set < String > fixValues = (Set<String>) ff4j .getFeatureStore().read(F1)// .getCustomProperties().get("regionIdentifier") .getFixedValues(); Assert.assertEquals(3, fixValues.size()); // When Feature myFeature = ff4j.getFeatureStore().read(F1); PropertyString p1 = new PropertyString("regionIdentifier"); p1.setValue("AMER"); p1.setFixedValues(Util.set("AMER", "SSSS")); myFeature.getCustomProperties().put(p1.getName(), p1); testedStore.update(myFeature); // Then Set < Integer > fixValues2 = (Set<Integer>) ff4j .getFeatureStore().read(F1)// .getCustomProperties().get("regionIdentifier") .getFixedValues(); Assert.assertEquals(2, fixValues2.size()); } }