diff --git a/src/main/java/com/github/javafaker/Commerce.java b/src/main/java/com/github/javafaker/Commerce.java new file mode 100644 index 00000000..8bb06f12 --- /dev/null +++ b/src/main/java/com/github/javafaker/Commerce.java @@ -0,0 +1,48 @@ +package com.github.javafaker; + +import java.util.SortedSet; +import java.util.TreeSet; + +import org.apache.commons.lang.StringUtils; + +import com.github.javafaker.service.FakeValuesServiceInterface; +import com.github.javafaker.service.RandomService; + +public class Commerce { + + private final FakeValuesServiceInterface fakeValuesService; + private final RandomService randomService; + + public Commerce(FakeValuesServiceInterface fakeValuesService, RandomService randomService) { + this.fakeValuesService = fakeValuesService; + this.randomService = randomService; + } + + public String color() { + return fakeValuesService.fetchString("color.name"); + } + + public String department() { + int numberOfDepartments = Math.max(randomService.nextInt(4), 1); + SortedSet departments = new TreeSet(); + while (departments.size() < numberOfDepartments) { + departments.add(fakeValuesService.fetchString("commerce.department")); + } + if (departments.size() > 1) { + String lastDepartment = departments.last(); + return StringUtils.join(departments.headSet(lastDepartment), ", ") + " & " + lastDepartment; + } else { + return departments.first(); + } + } + + public String productName() { + return StringUtils.join(new String[] { fakeValuesService.fetchString("commerce.product_name.adjective"), + fakeValuesService.fetchString("commerce.product_name.material"), + fakeValuesService.fetchString("commerce.product_name.product") }, " "); + } + + public String material() { + return fakeValuesService.fetchString("commerce.product_name.material"); + } +} diff --git a/src/main/java/com/github/javafaker/Faker.java b/src/main/java/com/github/javafaker/Faker.java index 517e88f0..68eb316a 100644 --- a/src/main/java/com/github/javafaker/Faker.java +++ b/src/main/java/com/github/javafaker/Faker.java @@ -30,6 +30,7 @@ public class Faker implements Resolver { private final Business business; private final Book book; private final Color color; + private final Commerce commerce; private final Company company; private final Hacker hacker; private final Options options; @@ -68,6 +69,7 @@ public class Faker implements Resolver { this.color = new Color(proxiedFakeValueService); this.hacker = new Hacker(proxiedFakeValueService); this.company = new Company(this, proxiedFakeValueService, randomService); + this.commerce = new Commerce(proxiedFakeValueService, randomService); this.options = new Options(randomService); this.code = new Code(randomService); this.finance = new Finance(proxiedFakeValueService, randomService); @@ -163,6 +165,10 @@ public class Faker implements Resolver { return color; } + public Commerce commerce() { + return commerce; + } + public Company company() { return company; } diff --git a/src/test/java/com/github/javafaker/CommerceTest.java b/src/test/java/com/github/javafaker/CommerceTest.java new file mode 100644 index 00000000..b7b85e71 --- /dev/null +++ b/src/test/java/com/github/javafaker/CommerceTest.java @@ -0,0 +1,38 @@ +package com.github.javafaker; + +import static com.github.javafaker.matchers.MatchesRegularExpression.matchesRegularExpression; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.Before; +import org.junit.Test; + +public class CommerceTest { + + private Faker faker; + + @Before + public void before() { + faker = new Faker(); + } + + @Test + public void testColor() { + assertThat(faker.commerce().color(), matchesRegularExpression("(\\w+ ?){1,2}")); + } + + @Test + public void testDepartment() { + assertThat(faker.commerce().department(), matchesRegularExpression("(\\w+(, | & )?){1,3}")); + } + + @Test + public void testProductName() { + assertThat(faker.commerce().productName(), matchesRegularExpression("(\\w+ ?){3,4}")); + } + + @Test + public void testMaterial() { + assertThat(faker.commerce().material(), matchesRegularExpression("\\w+")); + } + +}