Created
October 24, 2016 19:55
-
-
Save jirkapenzes/9d2dde6a470ecdde2ffd2467cd78ca06 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.util.Date; | |
public interface DateTimeProvider { | |
Date getCurrentDate(); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.util.Date; | |
public class DefaultProvider implements DateTimeProvider { | |
public Date getCurrentDate() { | |
return new Date(); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.util.Date; | |
public class FakeTimeProvider implements DateTimeProvider { | |
public Date getCurrentDate() { | |
return new Date(2016, 1, 1); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.util.ArrayList; | |
import java.util.Date; | |
import java.util.List; | |
public class Logger { | |
private DateTimeProvider dateTimeProvider; | |
private List<Message> messages; | |
public Logger(DateTimeProvider dateTimeProvider) { | |
this.dateTimeProvider = dateTimeProvider; | |
this.messages = new ArrayList<Message>(); | |
} | |
public void log(String message) { | |
Date currentTime = dateTimeProvider.getCurrentDate(); | |
messages.add(new Message(currentTime, message)); | |
} | |
public List<Message> getMessages() { | |
return messages; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import org.junit.Assert; | |
import org.junit.Before; | |
import org.junit.Test; | |
import java.util.Date; | |
import static org.mockito.Mockito.*; | |
import static org.junit.Assert.*; | |
public class LoggerTest { | |
@Test | |
public void shouldLogMessageWithCurrentTime_1() throws Exception { | |
DateTimeProvider dateTimeProvider = mock(DateTimeProvider.class); | |
// nez aktualni je lepsi pouzit nejaky fake cas, | |
// aby kazde spusteni testu pracovalo se stejnym casem | |
// takto: | |
// Date currentDate = new Date(2016, 1, 1); | |
// pro ukazku tu mam ale opravdu aktualni cas: | |
Date currentDate = new Date(); | |
when(dateTimeProvider.getCurrentDate()).thenReturn(currentDate); | |
Logger logger = new Logger(dateTimeProvider); | |
logger.log("Hello message"); | |
Message actualMessage = logger.getMessages().get(0); | |
Assert.assertEquals(currentDate, actualMessage.getDate()); | |
} | |
@Test | |
public void shouldLogMessageWithCurrentTime_2() throws Exception { | |
DateTimeProvider dateTimeProvider = new FakeTimeProvider(); | |
Logger logger = new Logger(dateTimeProvider); | |
logger.log("Hello message"); | |
Message actualMessage = logger.getMessages().get(0); | |
Assert.assertEquals(new Date(2016, 1, 1), actualMessage.getDate()); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.util.Date; | |
public class Message { | |
private Date date; | |
private String message; | |
public Message(Date date, String message) { | |
this.date = date; | |
this.message = message; | |
} | |
public Date getDate() { | |
return date; | |
} | |
public String getMessage() { | |
return message; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment