package validators;
import models.ProductModel;
import org.junit.Test;
import util.InMemoryDbTest;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
public class ProductValidatorTest extends InMemoryDbTest {
@Test
public void testNormal(){
ProductValidator validator = new ProductValidator();
ProductModel product = new ProductModel();
product.id = 0L;
product.name = "ABC";
product.price = 1000;
ValidationResult result = validator.validateModel(product);
assertTrue(result.ok);
assertEquals("validationErrors.size",0,result.validationErrors.size());
}
@Test
public void testNoName (){
ProductValidator validator = new ProductValidator();
ProductModel model = new ProductModel();
model.id = 0L;
model.price = 100;
model.name = "";
ValidationResult result = validator.validateModel(model);
assertTrue(result.ok==false);
assertEquals("validationErrors.size",1,result.validationErrors.size());
assertEquals("validationErrors.name", ValidationErrorType.PRODUCT_NAME_MISSING,result.validationErrors.get(0).errorType);
}
public void testNoSKU (){
ProductValidator validator = new ProductValidator();
ProductModel model = new ProductModel();
model.id = 0L;
model.price = 100;
model.name = "";
ValidationResult result = validator.validateModel(model);
assertTrue(result.ok==false);
assertEquals("validationErrors.size",1,result.validationErrors.size());
assertEquals("validationErrors.sku", ValidationErrorType.PRODUCT_SKU_MISSING,result.validationErrors.get(0).errorType);
}
@Test
public void testNoPrice (){
ProductValidator validator = new ProductValidator();
ProductModel model = new ProductModel();
model.id = 0L;
model.price = null;
model.name = "X";
ValidationResult result = validator.validateModel(model);
assertTrue(result.ok==false);
assertEquals("validationErrors.size",1,result.validationErrors.size());
assertEquals("validationErrors.price", ValidationErrorType.PRODUCT_PRICE_MISSING,result.validationErrors.get(0).errorType);
}
@Test
public void testNegativePrice (){
ProductValidator validator = new ProductValidator();
ProductModel model = new ProductModel();
model.id = 0L;
model.price = -100;
model.name = "X";
ValidationResult result = validator.validateModel(model);
assertTrue(result.ok==false);
assertEquals("validationErrors.size",1,result.validationErrors.size());
assertEquals("validationErrors.price", ValidationErrorType.PRODUCT_PRICE_NEGATIVE,result.validationErrors.get(0).errorType);
}
}