🔀 Merge branch 'release/v82'
[Sone.git] / src / test / java / net / pterodactylus / sone / test / TestImageBuilder.java
1 package net.pterodactylus.sone.test;
2
3 import static java.util.UUID.randomUUID;
4 import static org.mockito.Mockito.mock;
5 import static org.mockito.Mockito.when;
6
7 import net.pterodactylus.sone.data.Image;
8 import net.pterodactylus.sone.data.Sone;
9 import net.pterodactylus.sone.database.ImageBuilder;
10
11 /**
12  * {@link ImageBuilder} implementation that returns a mocked {@link Image}.
13  */
14 public class TestImageBuilder implements ImageBuilder {
15
16         private final Image image;
17
18         public TestImageBuilder() {
19                 image = mock(Image.class);
20                 Image.Modifier imageModifier = new Image.Modifier() {
21                         private Sone sone = image.getSone();
22                         private long creationTime = image.getCreationTime();
23                         private String key = image.getKey();
24                         private String title = image.getTitle();
25                         private String description = image.getDescription();
26                         private int width = image.getWidth();
27                         private int height = image.getHeight();
28
29                         @Override
30                         public Image.Modifier setSone(Sone sone) {
31                                 this.sone = sone;
32                                 return this;
33                         }
34
35                         @Override
36                         public Image.Modifier setCreationTime(long creationTime) {
37                                 this.creationTime = creationTime;
38                                 return this;
39                         }
40
41                         @Override
42                         public Image.Modifier setKey(String key) {
43                                 this.key = key;
44                                 return this;
45                         }
46
47                         @Override
48                         public Image.Modifier setTitle(String title) {
49                                 this.title = title;
50                                 return this;
51                         }
52
53                         @Override
54                         public Image.Modifier setDescription(String description) {
55                                 this.description = description;
56                                 return this;
57                         }
58
59                         @Override
60                         public Image.Modifier setWidth(int width) {
61                                 this.width = width;
62                                 return this;
63                         }
64
65                         @Override
66                         public Image.Modifier setHeight(int height) {
67                                 this.height = height;
68                                 return this;
69                         }
70
71                         @Override
72                         public Image update() throws IllegalStateException {
73                                 when(image.getSone()).thenReturn(sone);
74                                 when(image.getCreationTime()).thenReturn(creationTime);
75                                 when(image.getKey()).thenReturn(key);
76                                 when(image.getTitle()).thenReturn(title);
77                                 when(image.getDescription()).thenReturn(description);
78                                 when(image.getWidth()).thenReturn(width);
79                                 when(image.getHeight()).thenReturn(height);
80                                 return image;
81                         }
82                 };
83                 when(image.modify()).thenReturn(imageModifier);
84         }
85
86         @Override
87         public ImageBuilder randomId() {
88                 when(image.getId()).thenReturn(randomUUID().toString());
89                 return this;
90         }
91
92         @Override
93         public ImageBuilder withId(String id) {
94                 when(image.getId()).thenReturn(id);
95                 return this;
96         }
97
98         @Override
99         public Image build() throws IllegalStateException {
100                 return image;
101         }
102
103 }