Skip to content

Commit c170a0d

Browse files
author
nickchecan
committed
chore: tdding ollama client helper
1 parent f8b7e88 commit c170a0d

File tree

8 files changed

+273
-2
lines changed

8 files changed

+273
-2
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package com.developer.nefarious.zjoule.plugin.login.api;
2+
3+
import java.util.List;
4+
5+
import com.developer.nefarious.zjoule.plugin.models.OllamaModel;
6+
7+
public class GetOllamaModelsResponse {
8+
9+
private List<OllamaModel> models;
10+
11+
// Getters and Setters
12+
public List<OllamaModel> getModels() {
13+
return models;
14+
}
15+
16+
public void setModels(final List<OllamaModel> models) {
17+
this.models = models;
18+
}
19+
20+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.developer.nefarious.zjoule.plugin.login.api;
2+
3+
public interface IOllamaLoginClient {
4+
5+
GetOllamaModelsResponse getModels();
6+
7+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.developer.nefarious.zjoule.plugin.login.api;
2+
3+
import java.net.URI;
4+
5+
public interface IOllamaLoginClientHelper {
6+
7+
URI createUri(final String endpoint);
8+
9+
GetOllamaModelsResponse parseOllamaModelsResponseToObject(final String responseBody);
10+
11+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.developer.nefarious.zjoule.plugin.login.api;
2+
3+
public class OllamaLoginClient implements IOllamaLoginClient {
4+
5+
@Override
6+
public GetOllamaModelsResponse getModels() {
7+
// TODO Auto-generated method stub
8+
return null;
9+
}
10+
11+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package com.developer.nefarious.zjoule.plugin.login.api;
2+
3+
import java.net.URI;
4+
5+
import com.google.gson.Gson;
6+
7+
public class OllamaLoginClientHelper implements IOllamaLoginClientHelper {
8+
9+
private Gson gson;
10+
11+
public OllamaLoginClientHelper() {
12+
gson = new Gson();
13+
}
14+
15+
@Override
16+
public URI createUri(final String endpoint) {
17+
return URI.create(endpoint);
18+
}
19+
20+
@Override
21+
public GetOllamaModelsResponse parseOllamaModelsResponseToObject(final String responseBody) {
22+
return gson.fromJson(responseBody, GetOllamaModelsResponse.class);
23+
}
24+
25+
}

com.developer.nefarious.zjoule.plugin/src/com/developer/nefarious/zjoule/plugin/login/pages/SecondOllamaLoginPage.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public SecondOllamaLoginPage() {
2828
}
2929

3030
@Override
31-
public void createControl(Composite parent) {
31+
public void createControl(final Composite parent) {
3232
Composite container = new Composite(parent, SWT.NONE);
3333
container.setLayout(new GridLayout(2, false));
3434

@@ -46,7 +46,7 @@ private void selectModel() {
4646
setPageComplete(true);
4747
}
4848

49-
public void setModelsForSelection(List<String> modelsForSelection) {
49+
public void setModelsForSelection(final List<String> modelsForSelection) {
5050
modelDropdown.setItems(modelsForSelection.toArray(new String[0]));
5151
}
5252

Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,138 @@
1+
package com.developer.nefarious.zjoule.plugin.models;
2+
3+
import java.util.List;
4+
5+
import com.google.gson.annotations.SerializedName;
6+
7+
public class OllamaModel {
8+
9+
private String name;
10+
11+
private String model;
12+
13+
@SerializedName("modified_at")
14+
private String modifiedAt;
15+
16+
private long size;
17+
18+
private String digest;
19+
20+
private OllamaModelDetails details;
21+
22+
// Getters and Setters
23+
public String getName() {
24+
return name;
25+
}
26+
27+
public void setName(final String name) {
28+
this.name = name;
29+
}
30+
31+
public String getModel() {
32+
return model;
33+
}
34+
35+
public void setModel(final String model) {
36+
this.model = model;
37+
}
38+
39+
public String getModifiedAt() {
40+
return modifiedAt;
41+
}
42+
43+
public void setModifiedAt(final String modifiedAt) {
44+
this.modifiedAt = modifiedAt;
45+
}
46+
47+
public long getSize() {
48+
return size;
49+
}
50+
51+
public void setSize(final long size) {
52+
this.size = size;
53+
}
54+
55+
public String getDigest() {
56+
return digest;
57+
}
58+
59+
public void setDigest(final String digest) {
60+
this.digest = digest;
61+
}
62+
63+
public OllamaModelDetails getDetails() {
64+
return details;
65+
}
66+
67+
public void setDetails(final OllamaModelDetails details) {
68+
this.details = details;
69+
}
70+
71+
}
72+
73+
class OllamaModelDetails {
74+
75+
@SerializedName("parent_model")
76+
private String parentModel;
77+
78+
private String format;
79+
80+
private String family;
81+
82+
private List<String> families;
83+
84+
@SerializedName("parameter_size")
85+
private String parameterSize;
86+
87+
@SerializedName("quantization_level")
88+
private String quantizationLevel;
89+
90+
// Getters and Setters
91+
public String getParentModel() {
92+
return parentModel;
93+
}
94+
95+
public void setParentModel(final String parentModel) {
96+
this.parentModel = parentModel;
97+
}
98+
99+
public String getFormat() {
100+
return format;
101+
}
102+
103+
public void setFormat(final String format) {
104+
this.format = format;
105+
}
106+
107+
public String getFamily() {
108+
return family;
109+
}
110+
111+
public void setFamily(final String family) {
112+
this.family = family;
113+
}
114+
115+
public List<String> getFamilies() {
116+
return families;
117+
}
118+
119+
public void setFamilies(final List<String> families) {
120+
this.families = families;
121+
}
122+
123+
public String getParameterSize() {
124+
return parameterSize;
125+
}
126+
127+
public void setParameterSize(final String parameterSize) {
128+
this.parameterSize = parameterSize;
129+
}
130+
131+
public String getQuantizationLevel() {
132+
return quantizationLevel;
133+
}
134+
135+
public void setQuantizationLevel(final String quantizationLevel) {
136+
this.quantizationLevel = quantizationLevel;
137+
}
138+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package com.developer.nefarious.zjoule.test.login.api;
2+
3+
import static org.junit.jupiter.api.Assertions.assertEquals;
4+
import static org.mockito.Mockito.mock;
5+
import static org.mockito.Mockito.mockStatic;
6+
7+
import java.net.URI;
8+
import java.util.concurrent.ThreadLocalRandom;
9+
10+
import org.junit.jupiter.api.BeforeEach;
11+
import org.junit.jupiter.api.Test;
12+
import org.mockito.MockedStatic;
13+
14+
import com.developer.nefarious.zjoule.plugin.login.api.GetOllamaModelsResponse;
15+
import com.developer.nefarious.zjoule.plugin.login.api.OllamaLoginClientHelper;
16+
import com.google.gson.Gson;
17+
18+
public class OllamaLoginClientHelperTest {
19+
20+
private OllamaLoginClientHelper cut;
21+
22+
private String randomWord() {
23+
final String[] WORDS = { "apple", "banana", "grape" };
24+
int randomIndex = ThreadLocalRandom.current().nextInt(WORDS.length);
25+
return WORDS[randomIndex];
26+
}
27+
28+
@BeforeEach
29+
public void setUp() {
30+
cut = new OllamaLoginClientHelper();
31+
}
32+
33+
@Test
34+
public void shouldConvertTheModelsResponseBodyToObject() {
35+
// Arrange
36+
Gson gson = new Gson();
37+
String mockResponseBody = "{\"models\": [{\"name\": \"llama3.2:latest\"}]}";
38+
GetOllamaModelsResponse expectedObject = gson.fromJson(mockResponseBody, GetOllamaModelsResponse.class);
39+
// Act
40+
GetOllamaModelsResponse returnObject = cut.parseOllamaModelsResponseToObject(mockResponseBody);
41+
// Assert
42+
assertEquals(returnObject.getModels().getFirst().getName(), expectedObject.getModels().getFirst().getName());
43+
}
44+
45+
@Test
46+
public void shouldCreateTheUri() {
47+
// Arrange
48+
URI expectedObject = mock(URI.class);
49+
String mockEndpoint = randomWord();
50+
try (MockedStatic<URI> uriStatic = mockStatic(URI.class)) {
51+
uriStatic.when(() -> URI.create(mockEndpoint)).thenReturn(expectedObject);
52+
// Act
53+
URI returnObject = cut.createUri(mockEndpoint);
54+
// Assert
55+
assertEquals(returnObject, expectedObject);
56+
}
57+
}
58+
59+
}

0 commit comments

Comments
 (0)