Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Comparing changes

Choose two branches to see what's changed or to start a new pull request. If you need to, you can also compare across forks.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also compare across forks.
  • 3 commits
  • 26 files changed
  • 0 commit comments
  • 1 contributor
Showing with 280 additions and 200 deletions.
  1. +1 −0  .gitignore
  2. 0  ...oders/EpisodeOnePresentCodeCasts/{PresentNoCodeCasts → GivenNoCodecastsPresentNoCodecasts}/content.txt
  3. 0  ...rs/EpisodeOnePresentCodeCasts/{PresentNoCodeCasts → GivenNoCodecastsPresentNoCodecasts}/properties.xml
  4. 0  ...odecasts/{PresentDownloadableCodecasts → PresentDownloadableCodecastsInChronologicalOrder}/content.txt
  5. 0  ...casts/{PresentDownloadableCodecasts → PresentDownloadableCodecastsInChronologicalOrder}/properties.xml
  6. 0  ...PresentCodecasts/{PresentViewableCodecasts → PresentViewableCodecastsInChronologicalOrder}/content.txt
  7. 0  ...sentCodecasts/{PresentViewableCodecasts → PresentViewableCodecastsInChronologicalOrder}/properties.xml
  8. +1 −1  FitNesseRoot/CleanCoders/SetUp/content.txt
  9. +1 −1  FitNesseRoot/CleanCoders/content.txt
  10. +1 −9 src/cleancoderscom/{Gateway.java → CodecastGateway.java}
  11. +3 −1 src/cleancoderscom/Context.java
  12. +5 −1 src/cleancoderscom/Entity.java
  13. +9 −0 src/cleancoderscom/LicenseGateway.java
  14. +0 −75 src/cleancoderscom/MockGateway.java
  15. +2 −2 src/cleancoderscom/PresentCodecastUseCase.java
  16. +0 −94 src/cleancoderscom/PresentCodecastUseCaseTest.java
  17. +7 −0 src/cleancoderscom/UserGateway.java
  18. +119 −0 test/cleancoderscom/tests/PresentCodecastUseCaseTest.java
  19. +14 −0 test/cleancoderscom/tests/TestSetup.java
  20. +45 −0 test/cleancoderscom/tests/doubles/GatewayUtilities.java
  21. +25 −0 test/cleancoderscom/tests/doubles/InMemoryCodecastGateway.java
  22. +16 −0 test/cleancoderscom/tests/doubles/InMemoryLicenseGateway.java
  23. +14 −0 test/cleancoderscom/tests/doubles/InMemoryUserGateway.java
  24. +14 −13 {src/cleancoderscom → test/cleancoderscom/tests}/fixtures/CodecastPresentation.java
  25. +2 −2 {src/cleancoderscom → test/cleancoderscom/tests}/fixtures/GivenCodecasts.java
  26. +1 −1  {src/cleancoderscom → test/cleancoderscom/tests}/fixtures/OfCodeCasts.java
View
1  .gitignore
@@ -7,4 +7,5 @@ FitNesseRoot/RecentChanges
out
cleancoderscom.iml
fitnesse-standalone.jar
+target
View
0  ...nePresentCodeCasts/PresentNoCodeCasts/content.txt → ...ts/GivenNoCodecastsPresentNoCodecasts/content.txt
File renamed without changes
View
0  ...resentCodeCasts/PresentNoCodeCasts/properties.xml → ...GivenNoCodecastsPresentNoCodecasts/properties.xml
File renamed without changes
View
0  ...odecasts/PresentDownloadableCodecasts/content.txt → ...loadableCodecastsInChronologicalOrder/content.txt
File renamed without changes
View
0  ...casts/PresentDownloadableCodecasts/properties.xml → ...dableCodecastsInChronologicalOrder/properties.xml
File renamed without changes
View
0  ...entCodecasts/PresentViewableCodecasts/content.txt → ...ViewableCodecastsInChronologicalOrder/content.txt
File renamed without changes
View
0  ...Codecasts/PresentViewableCodecasts/properties.xml → ...wableCodecastsInChronologicalOrder/properties.xml
File renamed without changes
View
2  FitNesseRoot/CleanCoders/SetUp/content.txt
@@ -1,5 +1,5 @@
|import|
-|cleancoderscom.fixtures|
+|cleancoderscom.tests.fixtures|
|library|
|codecast presentation|
View
2  FitNesseRoot/CleanCoders/content.txt
@@ -2,4 +2,4 @@
----
!define TEST_SYSTEM {slim}
-!path out/production/cleancoderscom
+!path target/classes
View
10 src/cleancoderscom/Gateway.java → src/cleancoderscom/CodecastGateway.java
@@ -2,20 +2,12 @@
import java.util.List;
-public interface Gateway {
+public interface CodecastGateway {
List<Codecast> findAllCodecastsSortedChronologically();
void delete(Codecast codecast);
Codecast save(Codecast codecast);
- User save(User user);
-
- void save(License license);
-
- User findUser(String username);
-
Codecast findCodecastByTitle(String codecastTitle);
-
- List<License> findLicensesForUserAndCodecast(User user, Codecast codecast);
}
View
4 src/cleancoderscom/Context.java
@@ -1,5 +1,7 @@
package cleancoderscom;
public class Context {
- public static Gateway gateway;
+ public static UserGateway userGateway;
+ public static CodecastGateway codecastGateway;
+ public static LicenseGateway licenseGateway;
}
View
6 src/cleancoderscom/Entity.java
@@ -2,7 +2,7 @@
import java.util.Objects;
-public class Entity {
+public class Entity implements Cloneable {
private String id;
public boolean isSame(Entity entity) {
@@ -16,4 +16,8 @@ public void setId(String id) {
public String getId() {
return id;
}
+
+ public Object clone() throws CloneNotSupportedException {
+ return super.clone();
+ }
}
View
9 src/cleancoderscom/LicenseGateway.java
@@ -0,0 +1,9 @@
+package cleancoderscom;
+
+import java.util.List;
+
+public interface LicenseGateway {
+ License save(License license);
+
+ List<License> findLicensesForUserAndCodecast(User user, Codecast codecast);
+}
View
75 src/cleancoderscom/MockGateway.java
@@ -1,75 +0,0 @@
-package cleancoderscom;
-
-import java.util.*;
-
-public class MockGateway implements Gateway {
-
- private List<Codecast> codecasts;
- private List<User> users;
- private ArrayList<License> licenses;
-
- public MockGateway() {
- codecasts = new ArrayList<Codecast>();
- users = new ArrayList<User>();
- licenses = new ArrayList<License>();
- }
-
- public List<Codecast> findAllCodecastsSortedChronologically()
- {
- List<Codecast> sortedCodecasts = new ArrayList<Codecast>(codecasts);
- Collections.sort(sortedCodecasts, new Comparator<Codecast>() {
- public int compare(Codecast o1, Codecast o2) {
- return o1.getPublicationDate().compareTo(o2.getPublicationDate());
- }
- });
- return sortedCodecasts;
- }
-
- public void delete(Codecast codecast) {
- codecasts.remove(codecast);
- }
-
- public Codecast save(Codecast codecast) {
- codecasts.add((Codecast)establishId(codecast));
- return codecast;
- }
-
- public User save(User user) {
- users.add((User)establishId(user));
- return user;
- }
-
- private Entity establishId(Entity entity) {
- if(entity.getId() == null)
- entity.setId(UUID.randomUUID().toString());
- return entity;
- }
-
- public void save(License license) {
- licenses.add(license);
- }
-
- public User findUser(String username) {
- for (User user : users) {
- if (user.getUserName().equals(username))
- return user;
- }
- return null;
- }
-
- public Codecast findCodecastByTitle(String codecastTitle) {
- for (Codecast codecast : codecasts)
- if (codecast.getTitle().equals(codecastTitle))
- return codecast;
- return null;
- }
-
- public List<License> findLicensesForUserAndCodecast(User user, Codecast codecast) {
- List<License> results = new ArrayList<License>();
- for (License license : licenses) {
- if (license.getUser().isSame(user) && license.getCodecast().isSame(codecast))
- results.add(license);
- }
- return results;
- }
-}
View
4 src/cleancoderscom/PresentCodecastUseCase.java
@@ -12,7 +12,7 @@
public List<PresentableCodecast> presentCodecasts(User loggedInUser) {
ArrayList<PresentableCodecast> presentableCodecasts = new ArrayList<PresentableCodecast>();
- List<Codecast> allCodecasts = Context.gateway.findAllCodecastsSortedChronologically();
+ List<Codecast> allCodecasts = Context.codecastGateway.findAllCodecastsSortedChronologically();
for (Codecast codecast : allCodecasts)
presentableCodecasts.add(formatCodecast(loggedInUser, codecast));
@@ -30,7 +30,7 @@ private PresentableCodecast formatCodecast(User loggedInUser, Codecast codecast)
}
public boolean isLicensedFor(License.LicenseType licenseType, User user, Codecast codecast) {
- List<License> licenses = Context.gateway.findLicensesForUserAndCodecast(user, codecast);
+ List<License> licenses = Context.licenseGateway.findLicensesForUserAndCodecast(user, codecast);
for (License l : licenses) {
if (l.getType() == licenseType)
return true;
View
94 src/cleancoderscom/PresentCodecastUseCaseTest.java
@@ -1,94 +0,0 @@
-package cleancoderscom;
-
-import org.junit.Before;
-import org.junit.Test;
-
-import java.util.Date;
-import java.util.GregorianCalendar;
-import java.util.List;
-
-import static cleancoderscom.License.LicenseType.*;
-import static org.junit.Assert.*;
-
-public class PresentCodecastUseCaseTest {
-
- private User user;
- private Codecast codecast;
- private PresentCodecastUseCase useCase;
-
- @Before
- public void setUp() {
- Context.gateway = new MockGateway();
- user = Context.gateway.save(new User("User"));
- codecast = Context.gateway.save(new Codecast());
- useCase = new PresentCodecastUseCase();
- }
-
- @Test
- public void userWithoutViewLicense_cannotViewCodecast() throws Exception {
- assertFalse(useCase.isLicensedFor(VIEWING, user, codecast));
- }
-
- @Test
- public void userWithViewLicense_canViewCodecast() throws Exception {
- License viewLicense = new License(VIEWING, user, codecast);
- Context.gateway.save(viewLicense);
- assertTrue(useCase.isLicensedFor(VIEWING, user, codecast));
- }
-
- @Test
- public void userWithoutViewLicense_cannotViewOtherUsersCodecast() throws Exception {
- User otherUser = Context.gateway.save(new User("otherUser"));
-
- License viewLicense = new License(VIEWING, user, codecast);
- Context.gateway.save(viewLicense);
- assertFalse(useCase.isLicensedFor(VIEWING, otherUser, codecast));
- }
-
- @Test
- public void presentingNoCodecasts() throws Exception {
- Context.gateway.delete(codecast);
- List<PresentableCodecast> presentableCodecasts = useCase.presentCodecasts(user);
-
- assertEquals(0, presentableCodecasts.size());
- }
-
- @Test
- public void presentOneCodecast() throws Exception {
- codecast.setTitle("Some Title");
- Date now = new GregorianCalendar(2014, 4, 19).getTime();
- codecast.setPublicationDate(now);
- List<PresentableCodecast> presentableCodecasts = useCase.presentCodecasts(user);
- assertEquals(1, presentableCodecasts.size());
- PresentableCodecast presentableCodecast = presentableCodecasts.get(0);
- assertEquals("Some Title", presentableCodecast.title);
- assertEquals("5/19/2014", presentableCodecast.publicationDate);
- }
-
- @Test
- public void presentedCodecastIsNotViewableIfNoLicense() throws Exception {
- List<PresentableCodecast> presentableCodecasts = useCase.presentCodecasts(user);
- PresentableCodecast presentableCodecast = presentableCodecasts.get(0);
- assertFalse(presentableCodecast.isViewable);
- }
-
- @Test
- public void presentedCodecastIsViewableIfLicenseExists() throws Exception {
- Context.gateway.save(new License(VIEWING, user, codecast));
- List<PresentableCodecast> presentableCodecasts = useCase.presentCodecasts(user);
- PresentableCodecast presentableCodecast = presentableCodecasts.get(0);
- assertTrue(presentableCodecast.isViewable);
- }
-
- @Test
- public void prestedCodecastIsDownloadableIfDownloadLicenseExists() throws Exception {
- License downloadLicense = new License(DOWNLOADING, user, codecast);
- Context.gateway.save(downloadLicense);
- List<PresentableCodecast> presentableCodecasts = useCase.presentCodecasts(user);
- PresentableCodecast presentableCodecast = presentableCodecasts.get(0);
- assertTrue(presentableCodecast.isDownloadable);
- assertFalse(presentableCodecast.isViewable);
- }
-
-
-}
View
7 src/cleancoderscom/UserGateway.java
@@ -0,0 +1,7 @@
+package cleancoderscom;
+
+public interface UserGateway {
+ User save(User user);
+
+ User findUserByName(String username);
+}
View
119 test/cleancoderscom/tests/PresentCodecastUseCaseTest.java
@@ -0,0 +1,119 @@
+package cleancoderscom.tests;
+
+import cleancoderscom.*;
+import de.bechte.junit.runners.HierarchicalContextRunner;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.List;
+
+import static cleancoderscom.License.LicenseType.DOWNLOADING;
+import static cleancoderscom.License.LicenseType.VIEWING;
+import static org.junit.Assert.*;
+
+@RunWith(HierarchicalContextRunner.class)
+public class PresentCodecastUseCaseTest {
+ private User user;
+ private PresentCodecastUseCase useCase;
+
+ @Before
+ public void setUp() {
+ TestSetup.addInMemoryGatewaysToContext();
+ user = Context.userGateway.save(new User("User"));
+ useCase = new PresentCodecastUseCase();
+ }
+
+ public class GivenNoCodecasts {
+ @Test
+ public void noneArePresented() throws Exception {
+ List<PresentableCodecast> presentableCodecasts = useCase.presentCodecasts(user);
+
+ assertEquals(0, presentableCodecasts.size());
+ }
+ }
+
+ public class GivenOneCodecast {
+ private Codecast codecast;
+
+ @Before
+ public void setupCodecast() {
+ codecast = Context.codecastGateway.save(new Codecast());
+ }
+
+ @Test
+ public void oneIsPresented() throws Exception {
+ codecast.setTitle("Some Title");
+ Date now = new GregorianCalendar(2014, 4, 19).getTime();
+ codecast.setPublicationDate(now);
+ List<PresentableCodecast> presentableCodecasts = useCase.presentCodecasts(user);
+ assertEquals(1, presentableCodecasts.size());
+ PresentableCodecast presentableCodecast = presentableCodecasts.get(0);
+ assertEquals("Some Title", presentableCodecast.title);
+ assertEquals("5/19/2014", presentableCodecast.publicationDate);
+ }
+
+ public class GivenNoLicenses {
+ @Test
+ public void userCannotViewCodecast() throws Exception {
+ assertFalse(useCase.isLicensedFor(VIEWING, user, codecast));
+ }
+
+ @Test
+ public void presentedCodecastShowsNotViewable() throws Exception {
+ List<PresentableCodecast> presentableCodecasts = useCase.presentCodecasts(user);
+ PresentableCodecast presentableCodecast = presentableCodecasts.get(0);
+ assertFalse(presentableCodecast.isViewable);
+ }
+ }
+
+ public class GivenOneViewingLicenseForTheUser {
+ private License viewLicense;
+
+ @Before
+ public void setupLicense() {
+ viewLicense = new License(VIEWING, user, codecast);
+ Context.licenseGateway.save(viewLicense);
+ }
+
+ @Test
+ public void userCanViewCodecast() throws Exception {
+ assertTrue(useCase.isLicensedFor(VIEWING, user, codecast));
+ }
+
+ @Test
+ public void unlicensedUserCannotViewOtherUsersCodecast() throws Exception {
+ User otherUser = Context.userGateway.save(new User("otherUser"));
+ assertFalse(useCase.isLicensedFor(VIEWING, otherUser, codecast));
+ }
+
+ @Test
+ public void presentedCodecastIsViewable() throws Exception {
+ Context.licenseGateway.save(new License(VIEWING, user, codecast));
+ List<PresentableCodecast> presentableCodecasts = useCase.presentCodecasts(user);
+ PresentableCodecast presentableCodecast = presentableCodecasts.get(0);
+ assertTrue(presentableCodecast.isViewable);
+ }
+ }
+
+ public class GivenOneDownloadLicenseForTheUser {
+ private License downloadLicense;
+
+ @Before
+ public void setupDownloadLicense() {
+ downloadLicense = new License(DOWNLOADING, user, codecast);
+ Context.licenseGateway.save(downloadLicense);
+ }
+
+ @Test
+ public void presentedCodecastIsDownloadable() throws Exception {
+ List<PresentableCodecast> presentableCodecasts = useCase.presentCodecasts(user);
+ PresentableCodecast presentableCodecast = presentableCodecasts.get(0);
+ assertTrue(presentableCodecast.isDownloadable);
+ assertFalse(presentableCodecast.isViewable);
+ }
+ }
+ }
+}
View
14 test/cleancoderscom/tests/TestSetup.java
@@ -0,0 +1,14 @@
+package cleancoderscom.tests;
+
+import cleancoderscom.Context;
+import cleancoderscom.tests.doubles.InMemoryCodecastGateway;
+import cleancoderscom.tests.doubles.InMemoryLicenseGateway;
+import cleancoderscom.tests.doubles.InMemoryUserGateway;
+
+public class TestSetup {
+ public static void addInMemoryGatewaysToContext() {
+ Context.userGateway = new InMemoryUserGateway();
+ Context.licenseGateway = new InMemoryLicenseGateway();
+ Context.codecastGateway = new InMemoryCodecastGateway();
+ }
+}
View
45 test/cleancoderscom/tests/doubles/GatewayUtilities.java
@@ -0,0 +1,45 @@
+package cleancoderscom.tests.doubles;
+
+import cleancoderscom.Entity;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
+
+public class GatewayUtilities<T extends Entity> {
+ private List<T> entities;
+
+ public GatewayUtilities() {
+ this.entities = new ArrayList<T>();
+ }
+
+ protected T establishId(T entity) {
+ if(entity.getId() == null)
+ entity.setId(UUID.randomUUID().toString());
+ return entity;
+ }
+
+ @SuppressWarnings("unchecked")
+ public List<T> getEntities() {
+ List<T> newEntities = new ArrayList<T>();
+ for (T entity : entities)
+ try {
+ newEntities.add((T) entity.clone());
+ } catch (CloneNotSupportedException e) {
+ throw new UnCloneableEntity();
+ }
+ return newEntities;
+ }
+
+ public T save(T entity) {
+ entities.add(establishId(entity));
+ return entity;
+ }
+
+ public void delete(T entity) {
+ entities.remove(entity);
+ }
+
+ private static class UnCloneableEntity extends RuntimeException {
+ }
+}
View
25 test/cleancoderscom/tests/doubles/InMemoryCodecastGateway.java
@@ -0,0 +1,25 @@
+package cleancoderscom.tests.doubles;
+
+import cleancoderscom.*;
+
+import java.util.*;
+
+public class InMemoryCodecastGateway extends GatewayUtilities<Codecast> implements CodecastGateway {
+ public List<Codecast> findAllCodecastsSortedChronologically()
+ {
+ List<Codecast> sortedCodecasts = new ArrayList<Codecast>(getEntities());
+ Collections.sort(sortedCodecasts, new Comparator<Codecast>() {
+ public int compare(Codecast o1, Codecast o2) {
+ return o1.getPublicationDate().compareTo(o2.getPublicationDate());
+ }
+ });
+ return sortedCodecasts;
+ }
+
+ public Codecast findCodecastByTitle(String codecastTitle) {
+ for (Codecast codecast : getEntities())
+ if (codecast.getTitle().equals(codecastTitle))
+ return codecast;
+ return null;
+ }
+}
View
16 test/cleancoderscom/tests/doubles/InMemoryLicenseGateway.java
@@ -0,0 +1,16 @@
+package cleancoderscom.tests.doubles;
+
+import cleancoderscom.*;
+
+import java.util.*;
+
+public class InMemoryLicenseGateway extends GatewayUtilities<License> implements LicenseGateway {
+ public List<License> findLicensesForUserAndCodecast(User user, Codecast codecast) {
+ List<License> results = new ArrayList<License>();
+ for (License license : getEntities()) {
+ if (license.getUser().isSame(user) && license.getCodecast().isSame(codecast))
+ results.add(license);
+ }
+ return results;
+ }
+}
View
14 test/cleancoderscom/tests/doubles/InMemoryUserGateway.java
@@ -0,0 +1,14 @@
+package cleancoderscom.tests.doubles;
+
+import cleancoderscom.User;
+import cleancoderscom.UserGateway;
+
+public class InMemoryUserGateway extends GatewayUtilities<User> implements UserGateway {
+ public User findUserByName(String username) {
+ for (User user : getEntities()) {
+ if (user.getUserName().equals(username))
+ return user;
+ }
+ return null;
+ }
+}
View
27 ...cleancoderscom/fixtures/CodecastPresentation.java → ...oderscom/tests/fixtures/CodecastPresentation.java
@@ -1,6 +1,7 @@
-package cleancoderscom.fixtures;
+package cleancoderscom.tests.fixtures;
import cleancoderscom.*;
+import cleancoderscom.tests.TestSetup;
import java.util.ArrayList;
import java.util.List;
@@ -13,16 +14,16 @@
public static GateKeeper gateKeeper = new GateKeeper();
public CodecastPresentation() {
- Context.gateway = new MockGateway();
+ TestSetup.addInMemoryGatewaysToContext();
}
public boolean addUser(String username) {
- Context.gateway.save(new User(username));
+ Context.userGateway.save(new User(username));
return true;
}
public boolean loginUser(String username) {
- User user = Context.gateway.findUser(username);
+ User user = Context.userGateway.findUserByName(username);
if (user != null) {
gateKeeper.setLoggedInUser(user);
return true;
@@ -32,18 +33,18 @@ public boolean loginUser(String username) {
}
public boolean createLicenseForViewing(String username, String codecastTitle) {
- User user = Context.gateway.findUser(username);
- Codecast codecast = Context.gateway.findCodecastByTitle(codecastTitle);
+ User user = Context.userGateway.findUserByName(username);
+ Codecast codecast = Context.codecastGateway.findCodecastByTitle(codecastTitle);
License license = new License(VIEWING, user, codecast);
- Context.gateway.save(license);
+ Context.licenseGateway.save(license);
return useCase.isLicensedFor(VIEWING, user, codecast);
}
public boolean createLicenseForDownloading(String username, String codecastTitle) {
- User user = Context.gateway.findUser(username);
- Codecast codecast = Context.gateway.findCodecastByTitle(codecastTitle);
+ User user = Context.userGateway.findUserByName(username);
+ Codecast codecast = Context.codecastGateway.findCodecastByTitle(codecastTitle);
License license = new License(DOWNLOADING, user, codecast);
- Context.gateway.save(license);
+ Context.licenseGateway.save(license);
return useCase.isLicensedFor(DOWNLOADING, user, codecast);
}
@@ -52,11 +53,11 @@ public String presentationUser() {
}
public boolean clearCodecasts() {
- List<Codecast> codecasts = Context.gateway.findAllCodecastsSortedChronologically();
+ List<Codecast> codecasts = Context.codecastGateway.findAllCodecastsSortedChronologically();
for (Codecast codecast : new ArrayList<Codecast>(codecasts)) {
- Context.gateway.delete(codecast);
+ Context.codecastGateway.delete(codecast);
}
- return Context.gateway.findAllCodecastsSortedChronologically().size() == 0;
+ return Context.codecastGateway.findAllCodecastsSortedChronologically().size() == 0;
}
public int countOfCodecastsPresented() {
View
4 src/cleancoderscom/fixtures/GivenCodecasts.java → ...cleancoderscom/tests/fixtures/GivenCodecasts.java
@@ -1,4 +1,4 @@
-package cleancoderscom.fixtures;
+package cleancoderscom.tests.fixtures;
import cleancoderscom.Codecast;
import cleancoderscom.Context;
@@ -25,7 +25,7 @@ public void execute() throws ParseException {
System.out.println(publicationDate);
System.out.println(dateFormat.parse(publicationDate));
codecast.setPublicationDate(dateFormat.parse(publicationDate));
- Context.gateway.save(codecast);
+ Context.codecastGateway.save(codecast);
}
}
View
2  src/cleancoderscom/fixtures/OfCodeCasts.java → test/cleancoderscom/tests/fixtures/OfCodeCasts.java
@@ -1,4 +1,4 @@
-package cleancoderscom.fixtures;
+package cleancoderscom.tests.fixtures;
import cleancoderscom.PresentCodecastUseCase;
import cleancoderscom.PresentableCodecast;

No commit comments for this range

Something went wrong with that request. Please try again.