/**
* Copyright (c) 2009 - 2012 Red Hat, Inc.
*
* This software is licensed to you under the GNU General Public License,
* version 2 (GPLv2). There is NO WARRANTY for this software, express or
* implied, including the implied warranties of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
* along with this software; if not, see
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
*
* Red Hat trademarks are not licensed under GPLv2. No permission is
* granted to use or replicate Red Hat trademarks that are incorporated
* in this software or its documentation.
*/
package org.candlepin.model;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import org.candlepin.test.DatabaseTestFixture;
import org.junit.Test;
import javax.inject.Inject;
/**
* RulesCuratorTest
*/
public class RulesCuratorTest extends DatabaseTestFixture {
@Inject private RulesCurator rulesCurator;
@Test
public void deleteRules() {
Rules origRules = rulesCurator.getRules();
Rules rules = new Rules("// Version: 2.0\n//these are the new rules");
Rules newRules = rulesCurator.update(rules);
rulesCurator.delete(newRules);
Rules latestRules = rulesCurator.getRules();
assertEquals(origRules.getRules(), latestRules.getRules());
}
@Test
public void ignoreOldRulesInDb() throws Exception {
Rules oldRules = new Rules("// Version: 1.9\n//oldrules");
rulesCurator.create(oldRules);
Rules rules = rulesCurator.getRules();
assertFalse("1.9".equals(rules.getVersion()));
}
/*
* While this is a little unorthodox, we need to make sure we stop slipping in use
* of "for each", which is not a part of standard Javascript and thus a problem for
* those who are using our rules with other interpreters.
*/
@Test
public void noForEachInRules() throws Exception {
Rules rules = rulesCurator.getRules();
assertEquals(-1, rules.getRules().indexOf("for each"));
}
@Test
public void ignoreOldRulesInDbDefaultVersion() throws Exception {
// Default version set by upgrade script:
Rules oldRules = new Rules("// Version: 0.0\n//oldrules");
rulesCurator.create(oldRules);
Rules rules = rulesCurator.getRules();
assertFalse("0.0".equals(rules.getVersion()));
}
@Test
public void getRules() {
rulesCurator.getRules();
}
@Test
public void deleteDefaultRules() {
Rules rules = rulesCurator.getRules();
rulesCurator.delete(rules);
rulesCurator.getRules();
}
@Test
public void uploadRules() {
Rules rules = new Rules("// Version: 5.1000\n//these are the new rules");
rulesCurator.update(rules);
Rules updateRules = rulesCurator.getRules();
assertEquals(rules.getRules(), updateRules.getRules());
}
@Test
public void uploadMultipleRules() {
Rules rules = new Rules("// Version: 5.1000\n// rules1 ");
rulesCurator.update(rules);
Rules rules2 = new Rules("// Version: 5.1001\n// rules2 ");
rulesCurator.update(rules2);
Rules updateRules = rulesCurator.getRules();
assertEquals(rules2.getRules(), updateRules.getRules());
}
}