1 package de.juplo.httpresources;
2
3 import org.junit.jupiter.api.BeforeEach;
4 import org.junit.jupiter.api.DisplayName;
5 import org.junit.jupiter.api.Test;
6 import org.junit.jupiter.api.extension.ExtendWith;
7 import org.mockito.Mock;
8 import org.mockito.junit.jupiter.MockitoExtension;
9 import org.mockito.junit.jupiter.MockitoSettings;
10 import org.mockito.quality.Strictness;
11 import org.slf4j.Logger;
12 import org.slf4j.LoggerFactory;
13 import org.springframework.cache.support.NoOpCache;
14 import org.springframework.http.HttpHeaders;
15 import org.springframework.test.context.junit.jupiter.SpringExtension;
16
17 import java.net.URI;
18 import java.time.Clock;
19 import java.time.ZoneId;
20
21 import static de.juplo.httpresources.TestUtil.*;
22 import static org.assertj.core.api.Assertions.assertThat;
23 import static org.mockito.ArgumentMatchers.any;
24 import static org.mockito.Mockito.*;
25
26
27 @DisplayName(("HttpResource - Fetched - Not Expired - Fetch: Unmodified"))
28 @ExtendWith({ SpringExtension.class, MockitoExtension.class })
29 @MockitoSettings(strictness = Strictness.LENIENT)
30 public class HttpResourceNotExpiredFetchUnmodifiedTest
31 {
32 private final static Logger LOG = LoggerFactory.getLogger(HttpResourceNotExpiredFetchUnmodifiedTest.class);
33
34 @Mock
35 HttpResourceFetcher fetcher;
36
37 HttpResources resources;
38 URI uri;
39 HttpResource resource;
40
41
42
43
44 @BeforeEach
45 public void setUp()
46 {
47 Clock clock = Clock.fixed(NOW.toInstant(), ZoneId.of("GMT"));
48 resources = new HttpResources(fetcher, clock);
49 uri = URI.create("http://foo/bar");
50 resource = new HttpResource(resources, fetcher, clock, uri);
51 resource.data = DATA_NOT_EXPIRED;
52
53
54
55 HttpHeaders headers = new HttpHeaders();
56 headers.setContentType(MIME_TYPE_CONTENT_TYPE_HTML);
57
58 when(fetcher.fetch(any(), any())).thenReturn(DATA_NOT_EXPIRED_DUMMY);
59 }
60
61
62
63
64
65
66
67 @Test
68 @DisplayName(("fetch() returns false, if fetcher returned false"))
69 public void test_fetch_ReturnsFalseIfFetcherReturnedFalse()
70 {
71 LOG.info("<-- start of test-case");
72
73 assertThat(resource.fetch()).isFalse();
74 }
75
76
77
78
79 @Test
80 @DisplayName(("fetch() updates data"))
81 public void test_fetch_UpdatesData()
82 {
83 LOG.info("<-- start of test-case");
84
85 resource.fetch();
86
87 assertThat(resource.data).isSameAs(DATA_NOT_EXPIRED_DUMMY);
88 }
89 }