From 10bcf44dee88cb3febd428935d0606d25a92ac90 Mon Sep 17 00:00:00 2001 From: Pascal Schumacher Date: Sun, 24 Apr 2016 21:57:16 +0200 Subject: [PATCH] Added Commerce --- .../java/com/github/javafaker/Commerce.java | 48 +++++++++++++++++++ src/main/java/com/github/javafaker/Faker.java | 6 +++ .../com/github/javafaker/CommerceTest.java | 38 +++++++++++++++ 3 files changed, 92 insertions(+) create mode 100644 src/main/java/com/github/javafaker/Commerce.java create mode 100644 src/test/java/com/github/javafaker/CommerceTest.java 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 cbd412a2..2f91a382 100644 --- a/src/main/java/com/github/javafaker/Faker.java +++ b/src/main/java/com/github/javafaker/Faker.java @@ -29,6 +29,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 Options options; private final Code code; @@ -63,6 +64,7 @@ public class Faker implements Resolver { this.book = new Book(this, proxiedFakeValueService); this.business = new Business(proxiedFakeValueService); this.color = new Color(proxiedFakeValueService); + this.commerce = new Commerce(proxiedFakeValueService, randomService); this.company = new Company(this, proxiedFakeValueService); this.options = new Options(randomService); this.code = new Code(randomService); @@ -148,6 +150,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+")); + } + +}