Skip to content
This repository was archived by the owner on Feb 12, 2025. It is now read-only.

Commit 12d766f

Browse files
authored
Merge pull request #18 from managedcode/refactoring_me
Refactoring
2 parents b7067d2 + e1de3ad commit 12d766f

File tree

71 files changed

+432
-394
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

71 files changed

+432
-394
lines changed

ManagedCode.OpenAI.Tests/ChatTests.cs

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
1-
using System.ComponentModel.DataAnnotations;
2-
using ManagedCode.OpenAI.API;
31
using ManagedCode.OpenAI.Chat;
4-
using ManagedCode.OpenAI.Chat.Extensions;
52
using ManagedCode.OpenAI.Client;
6-
using ManagedCode.OpenAI.Client.Extensions;
73
using Xunit;
84
using Xunit.Abstractions;
95
using static System.String;
@@ -12,6 +8,7 @@ namespace ManagedCode.OpenAI.Tests;
128

139
public class ChatTests
1410
{
11+
private const string SKIP = $"Class {nameof(ChatTests)} disabled";
1512
private readonly ITestOutputHelper _output;
1613
private readonly IGptClient _client = Mocks.Client();
1714

@@ -20,7 +17,7 @@ public ChatTests(ITestOutputHelper output)
2017
_output = output;
2118
}
2219

23-
[Fact]
20+
[Fact(Skip = SKIP)]
2421
public async Task AskSingle_Success()
2522
{
2623
var chat = _client.OpenChat();
@@ -39,7 +36,7 @@ public async Task AskSingle_Success()
3936
Assert.False(IsNullOrWhiteSpace(answer2.Data.Content));
4037
}
4138

42-
[Fact]
39+
[Fact(Skip = SKIP)]
4340
public async Task AskMultiple_Success()
4441
{
4542
var chat = _client.OpenChat();
@@ -56,7 +53,7 @@ public async Task AskMultiple_Success()
5653
}
5754

5855

59-
[Fact]
56+
[Fact(Skip = SKIP)]
6057
public async Task ChatSessionSaveLoad_Success()
6158
{
6259
var chat = _client.OpenChat();

ManagedCode.OpenAI.Tests/FileTest.cs

Lines changed: 26 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,21 @@
1-
using System.Diagnostics;
21
using ManagedCode.OpenAI.Client;
3-
using ManagedCode.OpenAI.Files.Abstractions;
2+
using ManagedCode.OpenAI.Files;
43
using Xunit;
54
using Xunit.Abstractions;
5+
using Xunit.Sdk;
66

77
namespace ManagedCode.OpenAI.Tests;
88

99

1010

1111
public class FileTest
1212
{
13+
private const string SKIP = $"Class {nameof(FileTest)} disabled";
14+
15+
1316
private readonly ITestOutputHelper _output;
1417
private readonly IGptClient _client = Mocks.Client();
15-
private readonly IFileManager _fileManager;
18+
private readonly IFileClient _fileClient;
1619

1720

1821
private const string fileContent =
@@ -22,16 +25,16 @@ public class FileTest
2225
public FileTest(ITestOutputHelper output)
2326
{
2427
_output = output;
25-
_fileManager = _client.FileManager();
28+
_fileClient = _client.FileClient;
2629
}
2730

28-
[Fact]
31+
[Fact(Skip = SKIP)]
2932
public async Task UploadFile_Success()
3033
{
3134
const string fileName = "test.txt";
3235

3336

34-
var file = await _fileManager.CreateFileAsync(fileContent, fileName);
37+
var file = await _fileClient.CreateFileAsync(fileContent, fileName);
3538

3639
Log($"File id: {file.Id}");
3740

@@ -40,30 +43,30 @@ public async Task UploadFile_Success()
4043
Assert.Equal(fileContent.Length, file.Bytes);
4144
}
4245

43-
46+
4447
// Needs premium account
45-
// [Fact]
48+
[Fact(Skip = SKIP)]
4649
public async Task ContentFile_Success()
4750
{
48-
string fileId = await _fileManager.FileListAsync()
51+
string fileId = await _fileClient.FileListAsync()
4952
.ContinueWith(t => t.Result[0].Id);
5053

51-
var content = await _fileManager.FileContentAsync(fileId);
54+
var content = await _fileClient.FileContentAsync(fileId);
5255

5356
Log($"File content: {content}");
5457

5558
Assert.Equal(fileContent, content);
5659
}
57-
58-
[Fact]
60+
61+
[Fact(Skip = SKIP)]
5962
public async Task FileList_Success()
6063
{
6164
const string fileName = "test.txt";
6265

63-
var newFile = await _fileManager.CreateFileAsync(fileContent, fileName);
66+
var newFile = await _fileClient.CreateFileAsync(fileContent, fileName);
6467
Assert.NotNull(newFile);
6568

66-
var files = await _fileManager.FileListAsync();
69+
var files = await _fileClient.FileListAsync();
6770
Assert.NotEmpty(files);
6871

6972

@@ -78,35 +81,35 @@ public async Task FileList_Success()
7881
Assert.Equal(newFile.Filename, lastFiles.Filename);
7982
Assert.Equal(newFile.Bytes, lastFiles.Bytes);
8083
}
81-
82-
[Fact]
84+
85+
[Fact(Skip = SKIP)]
8386
public async Task DeleteFile_Success()
8487
{
8588
const string fileName = "test.txt";
8689

87-
var newFile = await _fileManager.CreateFileAsync(fileContent, fileName);
90+
var newFile = await _fileClient.CreateFileAsync(fileContent, fileName);
8891
Assert.NotNull(newFile);
8992

9093
//Waiting for file to be deleted
9194
Thread.Sleep(5000);
9295

93-
var deleted = await _fileManager.DeleteFileAsync(newFile);
96+
var deleted = await _fileClient.DeleteFileAsync(newFile);
9497
Log(deleted.ToString());
9598
Assert.True(deleted);
9699

97-
var files = await _fileManager.FileListAsync();
100+
var files = await _fileClient.FileListAsync();
98101
Assert.NotEqual(newFile.Id, files.Last().Id);
99102
}
100-
101-
[Fact]
103+
104+
[Fact(Skip = SKIP)]
102105
public async Task FileInfo_Success()
103106
{
104107
const string fileName = "test.txt";
105108

106-
var newFile = await _fileManager.CreateFileAsync(fileContent, fileName);
109+
var newFile = await _fileClient.CreateFileAsync(fileContent, fileName);
107110
Assert.NotNull(newFile);
108111

109-
var fileInfo = await _fileManager.FileInfoAsync(newFile.Id);
112+
var fileInfo = await _fileClient.FileInfoAsync(newFile.Id);
110113
Assert.NotNull(fileInfo);
111114

112115
Assert.Equal(newFile.Id, fileInfo.Id);

ManagedCode.OpenAI.Tests/ImageTests.cs

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,13 @@
11
using ManagedCode.OpenAI.Client;
2-
using System;
3-
using System.Collections.Generic;
4-
using System.Linq;
5-
using System.Text;
6-
using System.Threading.Tasks;
72
using ManagedCode.OpenAI.Image;
83
using Xunit;
94
using Xunit.Abstractions;
10-
using ManagedCode.OpenAI.Image.Extensions;
115

126
namespace ManagedCode.OpenAI.Tests
137
{
148
public class ImageTests
159
{
10+
private const string SKIP = $"Class {nameof(ImageTests)} disabled";
1611
private readonly ITestOutputHelper _output;
1712
private readonly IGptClient _client = Mocks.Client();
1813

@@ -21,24 +16,24 @@ public ImageTests(ITestOutputHelper output)
2116
_output = output;
2217
}
2318

24-
[Fact]
19+
[Fact(Skip = SKIP)]
2520
public async Task GenerateImage_Success()
2621
{
27-
var image = await _client.GenerateImage("Red dragon")
28-
.SetImageResolution(ImageResolution._512x512).GenerateAsync();
22+
var image = await _client.ImageClient.GenerateImage("Red dragon")
23+
.SetImageResolution(ImageResolution._512x512).ExecuteAsync();
2924

3025
Log($"Image url: {image.Content}");
3126
Assert.False(string.IsNullOrWhiteSpace(image.Content));
3227
}
3328

34-
[Fact]
29+
[Fact(Skip = SKIP)]
3530
public async Task EditImage_Success()
3631
{
3732
var edited = await _client
38-
.EditImage("change color to blue",
33+
.ImageClient.EditImage("change color to blue",
3934
x=> x.FromBytes(Properties.Resources.Dog))
4035
.AsUrl()
41-
.EditAsync();
36+
.ExecuteAsync();
4237

4338
Log($"Edited dog: {edited}");
4439
Assert.False(string.IsNullOrWhiteSpace(edited.Content));

ManagedCode.OpenAI.Tests/Mocks.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ namespace ManagedCode.OpenAI.Tests
44
{
55
internal static class Mocks
66
{
7-
private const string API_KEY = "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";
7+
private const string API_KEY = "#YOUR_GPT_API_KEY#";
88

99
public static IGptClient Client()
1010
{

ManagedCode.OpenAI.Tests/ModerationTests.cs

Lines changed: 15 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,60 +1,54 @@
1+
using ManagedCode.OpenAI.Chat;
12
using ManagedCode.OpenAI.Client;
2-
using ManagedCode.OpenAI.Files.Abstractions;
3-
using ManagedCode.OpenAI.Moderations.Abstractions;
3+
using ManagedCode.OpenAI.Moderation;
44
using Newtonsoft.Json;
55
using Xunit;
66
using Xunit.Abstractions;
7+
using ManagedCode.OpenAI.Image;
78

89
namespace ManagedCode.OpenAI.Tests;
910

1011
public class ModerationTests
1112
{
13+
private const string SKIP = $"Class {nameof(ImageTests)} disabled";
1214
private readonly ITestOutputHelper _output;
1315
private readonly IGptClient _client = Mocks.Client();
14-
private IModerationBuilder ModerationBuilder => _client.ModerationBuilder();
16+
private IModerationBuilder ModerationBuilder => _client.Moderation();
1517

1618
public ModerationTests(ITestOutputHelper output)
1719
{
1820
_output = output;
1921
}
20-
21-
[Fact]
22+
23+
[Fact(Skip = SKIP)]
2224
public async Task CreateModeration_Success()
2325
{
2426
var moderation = await ModerationBuilder
25-
.AddInput("I kill you")
26-
.ExecuteAsync();
27+
.ExecuteAsync("I kill you");
2728

2829
Assert.NotNull(moderation);
2930

3031
Assert.NotNull(moderation.Categories);
31-
Assert.NotNull(moderation.CateroryScores);
32+
Assert.NotNull(moderation.CategoryScores);
3233

3334
Log("Moderation has next content:");
3435
Log(ToJson(moderation));
3536
}
3637

37-
[Fact]
38+
[Fact(Skip = SKIP)]
3839
public async Task CreateMultipleModeration_Success()
3940
{
40-
var moderations = await ModerationBuilder
41-
.AddInput("I kill you")
42-
.AddInput("You are a bad man")
43-
.ExecuteMultipleAsync();
41+
var moderation = await ModerationBuilder
42+
.ExecuteMultipleAsync("I kill you", "You are a bad man");
4443

45-
Assert.NotNull(moderations);
44+
Assert.NotNull(moderation);
4645

47-
Assert.Equal(2, moderations.Length);
46+
Assert.Equal(2, moderation.Length);
4847

4948
Log("Moderations have next content:");
50-
Log(ToJson(moderations));
49+
Log(ToJson(moderation));
5150
}
5251

53-
54-
55-
56-
57-
5852
void Log(object obj) => Log(obj.ToString());
5953

6054
void Log(string str) => _output.WriteLine(str);

ManagedCode.OpenAI/API/Abstractions/IOpenAiWebClient.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
using ManagedCode.OpenAI.API.Edit;
2+
using ManagedCode.OpenAI.API.File;
23
using ManagedCode.OpenAI.API.Image;
3-
using ManagedCode.OpenAI.API.Moderations;
4-
using ManagedCode.OpenAI.Files.Models;
4+
using ManagedCode.OpenAI.API.Moderation;
55

66
namespace ManagedCode.OpenAI.API
77
{

ManagedCode.OpenAI/API/Chat/ChatChoiceDto.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
namespace ManagedCode.OpenAI.API;
44

5-
public class ChatChoiceDto
5+
internal class ChatChoiceDto
66
{
77
[JsonPropertyName("index")]
88
public int Index { get; set; }

ManagedCode.OpenAI/API/Chat/MessageDto.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
namespace ManagedCode.OpenAI.API;
44

5-
public class MessageDto
5+
internal class MessageDto
66
{
77
[JsonPropertyName("role")]
88
public string Role { get; set; }

ManagedCode.OpenAI/API/Chat/UsageDto.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
namespace ManagedCode.OpenAI.API;
66

7-
public class UsageDto
7+
internal class UsageDto
88
{
99
[JsonPropertyName("prompt_tokens")]
1010
public int PromptTokens { get; set; }

ManagedCode.OpenAI/API/Completions/CompletionChoiceDto.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
namespace ManagedCode.OpenAI.API
44
{
5-
public class CompletionChoiceDto
5+
internal class CompletionChoiceDto
66
{
77
[JsonPropertyName("text")]
88
public string Text { get; set; }

ManagedCode.OpenAI/API/Completions/CompletionRequestDto.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
namespace ManagedCode.OpenAI.API;
55

6-
public class CompletionRequestDto
6+
internal class CompletionRequestDto
77
{
88
[JsonPropertyName("model")]
99
public string Model { get; set; }

ManagedCode.OpenAI/API/Edit/EditChoiceDto.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
namespace ManagedCode.OpenAI.API.Edit;
44

5-
public class EditChoiceDto
5+
internal class EditChoiceDto
66
{
77
[JsonPropertyName("text")]
88
public string Text { get; set; }

ManagedCode.OpenAI/API/Edit/EditRequestDto.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
namespace ManagedCode.OpenAI.API.Edit;
55

6-
public class EditRequestDto
6+
internal class EditRequestDto
77
{
88
[JsonPropertyName("model")]
99
public string Model { get; set; }

ManagedCode.OpenAI/API/File/FileDeleteResponseDto.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
using System.Text.Json.Serialization;
22

3-
namespace ManagedCode.OpenAI.Files.Models;
3+
namespace ManagedCode.OpenAI.API.File;
44

55
internal class FileDeleteResponseDto
66
{

ManagedCode.OpenAI/API/File/FileInfoDto.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
using System.Text.Json.Serialization;
22

3-
namespace ManagedCode.OpenAI.Files.Models;
3+
namespace ManagedCode.OpenAI.API.File;
44

55
internal class FileInfoDto
66
{

0 commit comments

Comments
 (0)