• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

MeindertN / RoboClerk / 17949926739

23 Sep 2025 02:45PM UTC coverage: 84.148% (-0.1%) from 84.243%
17949926739

push

github

MeindertN
All tests now pass

1917 of 2369 branches covered (80.92%)

Branch coverage included in aggregate %.

5865 of 6879 relevant lines covered (85.26%)

146.7 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

97.46
/RoboClerk/DataSources/DataSourcesBase.cs
1
using RoboClerk.Configuration;
2
using System;
3
using System.Collections.Generic;
4
using System.IO;
5
using System.IO.Abstractions;
6
using System.Linq;
7
using System.Text.Json;
8

9
namespace RoboClerk
10
{
11
    public abstract class DataSourcesBase : IDataSources
12
    {
13
        protected readonly IConfiguration configuration = null;
51✔
14
        protected readonly IFileSystem fileSystem = null;
51✔
15
        protected static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
1✔
16

17
        public DataSourcesBase(IConfiguration configuration, IFileSystem fileSystem)
51✔
18
        {
51✔
19
            this.configuration = configuration;
51✔
20
            this.fileSystem = fileSystem;
51✔
21
        }
51✔
22

23
        public abstract List<SOUPItem> GetAllSOUP();
24

25
        public abstract List<EliminatedSOUPItem> GetAllEliminatedSOUP();
26

27
        public abstract List<RiskItem> GetAllRisks();
28

29
        public abstract List<EliminatedRiskItem> GetAllEliminatedRisks();
30

31
        public abstract List<ExternalDependency> GetAllExternalDependencies();
32

33
        public abstract List<TestResult> GetAllTestResults();
34

35
        public abstract List<UnitTestItem> GetAllUnitTests();
36

37
        public abstract List<RequirementItem> GetAllSoftwareRequirements();
38

39
        public abstract List<EliminatedRequirementItem> GetAllEliminatedSoftwareRequirements();
40

41
        public abstract List<RequirementItem> GetAllSystemRequirements();
42

43
        public abstract List<EliminatedRequirementItem> GetAllEliminatedSystemRequirements();
44

45
        public abstract List<RequirementItem> GetAllDocumentationRequirements();
46

47
        public abstract List<EliminatedRequirementItem> GetAllEliminatedDocumentationRequirements();
48

49
        public abstract List<DocContentItem> GetAllDocContents();
50

51
        public abstract List<EliminatedDocContentItem> GetAllEliminatedDocContents();
52

53
        public abstract List<SoftwareSystemTestItem> GetAllSoftwareSystemTests();
54

55
        public abstract List<EliminatedSoftwareSystemTestItem> GetAllEliminatedSoftwareSystemTests();
56

57
        public abstract List<AnomalyItem> GetAllAnomalies();
58

59
        public abstract List<EliminatedAnomalyItem> GetAllEliminatedAnomalies();
60

61
        public List<LinkedItem> GetItems(TraceEntity te)
62
        {
24✔
63
            if (te.ID == "SystemRequirement")
24✔
64
            {
7✔
65
                return GetAllSystemRequirements().Cast<LinkedItem>().ToList();
7✔
66
            }
67
            else if (te.ID == "SoftwareRequirement")
17✔
68
            {
6✔
69
                return GetAllSoftwareRequirements().Cast<LinkedItem>().ToList();
6✔
70
            }
71
            else if (te.ID == "SoftwareSystemTest")
11✔
72
            {
1✔
73
                return GetAllSoftwareSystemTests().Cast<LinkedItem>().ToList();
1✔
74
            }
75
            else if (te.ID == "UnitTest")
10✔
76
            {
1✔
77
                return GetAllUnitTests().Cast<LinkedItem>().ToList();
1✔
78
            }
79
            else if (te.ID == "TestResult")
9!
80
            {
×
81
                return GetAllTestResults().Cast<LinkedItem>().ToList();
×
82
            }
83
            else if (te.ID == "Risk")
9✔
84
            {
1✔
85
                return GetAllRisks().Cast<LinkedItem>().ToList();
1✔
86
            }
87
            else if (te.ID == "SOUP")
8✔
88
            {
1✔
89
                return GetAllSOUP().Cast<LinkedItem>().ToList();
1✔
90
            }
91
            else if (te.ID == "Anomaly")
7✔
92
            {
1✔
93
                return GetAllAnomalies().Cast<LinkedItem>().ToList();
1✔
94
            }
95
            else if (te.ID == "DocumentationRequirement")
6✔
96
            {
2✔
97
                return GetAllDocumentationRequirements().Cast<LinkedItem>().ToList();
2✔
98
            }
99
            else if (te.ID == "DocContent")
4✔
100
            {
2✔
101
                return GetAllDocContents().Cast<LinkedItem>().ToList();
2✔
102
            }
103
            else if (te.ID == "Eliminated")
2✔
104
            {
1✔
105
                return  GetAllEliminatedRisks().Cast<LinkedItem>()
1✔
106
                        .Concat(GetAllEliminatedSystemRequirements())
1✔
107
                        .Concat(GetAllEliminatedSoftwareRequirements())
1✔
108
                        .Concat(GetAllEliminatedDocumentationRequirements())
1✔
109
                        .Concat(GetAllEliminatedSoftwareSystemTests())
1✔
110
                        .Concat(GetAllEliminatedAnomalies())
1✔
111
                        .Concat(GetAllEliminatedDocContents())
1✔
112
                        .Concat(GetAllEliminatedSOUP())
1✔
113
                        .ToList();
1✔
114
            }
115
            else
116
            {
1✔
117
                throw new Exception($"No datasource available for unknown trace entity: {te.ID}");
1✔
118
            }
119
        }
23✔
120

121
        public SOUPItem GetSOUP(string id)
122
        {
3✔
123
            List<SOUPItem> list = GetAllSOUP();
3✔
124
            return list.Find(f => (f.ItemID == id));
6✔
125
        }
3✔
126

127
        public EliminatedSOUPItem GetEliminatedSOUP(string id)
128
        {
1✔
129
            List<EliminatedSOUPItem> list = GetAllEliminatedSOUP();
1✔
130
            return list.Find(f => (f.ItemID == id));
2✔
131
        }
1✔
132

133
        public RiskItem GetRisk(string id)
134
        {
3✔
135
            List<RiskItem> list = GetAllRisks();
3✔
136
            return list.Find(f => (f.ItemID == id));
6✔
137
        }
3✔
138

139
        public EliminatedRiskItem GetEliminatedRisk(string id)
140
        {
1✔
141
            List<EliminatedRiskItem> list = GetAllEliminatedRisks();
1✔
142
            return list.Find(f => (f.ItemID == id));
2✔
143
        }
1✔
144

145
        public UnitTestItem GetUnitTest(string id)
146
        {
3✔
147
            var items = GetAllUnitTests();
3✔
148
            return items.Find(f => (f.ItemID == id));
7✔
149
        }
3✔
150

151
        public RequirementItem GetSoftwareRequirement(string id)
152
        {
3✔
153
            var reqs = GetAllSoftwareRequirements();
3✔
154
            return reqs.Find(f => (f.ItemID == id));
6✔
155
        }
3✔
156

157
        public EliminatedRequirementItem GetEliminatedSoftwareRequirement(string id)
158
        {
1✔
159
            var reqs = GetAllEliminatedSoftwareRequirements();
1✔
160
            return reqs.Find(f => (f.ItemID == id));
2✔
161
        }
1✔
162

163
        public RequirementItem GetSystemRequirement(string id)
164
        {
3✔
165
            var reqs = GetAllSystemRequirements();
3✔
166
            return reqs.Find(f => (f.ItemID == id));
6✔
167
        }
3✔
168

169
        public EliminatedRequirementItem GetEliminatedSystemRequirement(string id)
170
        {
1✔
171
            var reqs = GetAllEliminatedSystemRequirements();
1✔
172
            return reqs.Find(f => (f.ItemID == id));
2✔
173
        }
1✔
174

175
        public RequirementItem GetDocumentationRequirement(string id)
176
        {
3✔
177
            var reqs = GetAllDocumentationRequirements();
3✔
178
            return reqs.Find(f => (f.ItemID == id));
6✔
179
        }
3✔
180

181
        public EliminatedRequirementItem GetEliminatedDocumentationRequirement(string id)
182
        {
1✔
183
            var reqs = GetAllEliminatedDocumentationRequirements();
1✔
184
            return reqs.Find(f => (f.ItemID == id));
2✔
185
        }
1✔
186

187
        public DocContentItem GetDocContent(string id)
188
        {
3✔
189
            var items = GetAllDocContents();
3✔
190
            return items.Find(f => (f.ItemID == id));
6✔
191
        }
3✔
192

193
        public EliminatedDocContentItem GetEliminatedDocContent(string id)
194
        {
1✔
195
            var items = GetAllEliminatedDocContents();
1✔
196
            return items.Find(f => (f.ItemID == id));
2✔
197
        }
1✔
198

199
        public SoftwareSystemTestItem GetSoftwareSystemTest(string id)
200
        {
3✔
201
            var items = GetAllSoftwareSystemTests();
3✔
202
            return items.Find(f => (f.ItemID == id));
6✔
203
        }
3✔
204

205
        public EliminatedSoftwareSystemTestItem GetEliminatedSoftwareSystemTestItem(string id)
206
        {
1✔
207
            var items = GetAllEliminatedSoftwareSystemTests();
1✔
208
            return items.Find(f => (f.ItemID == id));
2✔
209
        }
1✔
210

211
        public AnomalyItem GetAnomaly(string id)
212
        {
3✔
213
            var items = GetAllAnomalies();
3✔
214
            return items.Find(f => (f.ItemID == id));
6✔
215
        }
3✔
216

217
        public EliminatedAnomalyItem GetEliminatedAnomaly(string id)
218
        {
1✔
219
            var items = GetAllEliminatedAnomalies();
1✔
220
            return items.Find(f => (f.ItemID == id));
2✔
221
        }
1✔
222

223
        public Item GetItem(string id) //this will not return eliminated items
224
        {
21✔
225
            var sreq = GetAllSoftwareRequirements();
21✔
226
            int idx = -1;
21✔
227
            if ((idx = sreq.FindIndex(o => o.ItemID == id)) >= 0)
62✔
228
            {
1✔
229
                return sreq[idx];
1✔
230
            }
231
            sreq = GetAllSystemRequirements();
20✔
232
            if ((idx = sreq.FindIndex(o => o.ItemID == id)) >= 0)
56✔
233
            {
11✔
234
                return sreq[idx];
11✔
235
            }
236
            sreq = GetAllDocumentationRequirements();
9✔
237
            if ((idx = sreq.FindIndex(o => o.ItemID == id)) >= 0)
26✔
238
            {
1✔
239
                return sreq[idx];
1✔
240
            }
241
            var dcont = GetAllDocContents();
8✔
242
            if ((idx = dcont.FindIndex(o => o.ItemID == id)) >= 0)
23✔
243
            {
1✔
244
                return dcont[idx];
1✔
245
            }
246
            var tcase = GetAllSoftwareSystemTests();
7✔
247
            if ((idx = tcase.FindIndex(o => o.ItemID == id)) >= 0)
20✔
248
            {
1✔
249
                return tcase[idx];
1✔
250
            }
251
            var utest = GetAllUnitTests();
6✔
252
            if ((idx = utest.FindIndex(o => o.ItemID == id)) >= 0)
25✔
253
            {
1✔
254
                return utest[idx];
1✔
255
            }
256
            var testResults = GetAllTestResults();
5✔
257
            if ((idx = testResults.FindIndex(o => o.ItemID == id)) >= 0)
5!
258
            {
×
259
                return testResults[idx];
×
260
            }
261
            var anomalies = GetAllAnomalies();
5✔
262
            if ((idx = anomalies.FindIndex(o => o.ItemID == id)) >= 0)
14✔
263
            {
1✔
264
                return anomalies[idx];
1✔
265
            }
266
            var SOUPs = GetAllSOUP();
4✔
267
            if ((idx = SOUPs.FindIndex(o => o.ItemID == id)) >= 0)
11✔
268
            {
1✔
269
                return SOUPs[idx];
1✔
270
            }
271
            var Risks = GetAllRisks();
3✔
272
            if ((idx = Risks.FindIndex(o => o.ItemID == id)) >= 0)
8✔
273
            {
1✔
274
                return Risks[idx];
1✔
275
            }
276
            return null;
2✔
277
        }
21✔
278

279
        public string GetConfigValue(string key)
280
        {
2✔
281
            return configuration.ConfigVals.GetValue(key);
2✔
282
        }
2✔
283

284
        public string GetTemplateFile(string fileName)
285
        {
1✔
286
            return fileSystem.File.ReadAllText(fileSystem.Path.Join(configuration.TemplateDir, fileName));
1✔
287
        }
1✔
288

289
        public Stream GetFileStreamFromTemplateDir(string fileName)
290
        {
5✔
291
            var stream = fileSystem.FileStream.New(fileSystem.Path.Join(configuration.TemplateDir, fileName), FileMode.Open);
5✔
292
            return stream;
5✔
293
        }
5✔
294

295
        public string ToJSON()
296
        {
1✔
297
            CheckpointDataStorage storage = new CheckpointDataStorage();
1✔
298
            storage.SystemRequirements = GetAllSystemRequirements();
1✔
299
            storage.SoftwareRequirements = GetAllSoftwareRequirements();
1✔
300
            storage.DocumentationRequirements = GetAllDocumentationRequirements();
1✔
301
            storage.DocContents = GetAllDocContents();
1✔
302
            storage.Risks = GetAllRisks().ToList();
1✔
303
            storage.UnitTests = GetAllUnitTests();
1✔
304
            storage.SoftwareSystemTests = GetAllSoftwareSystemTests();
1✔
305
            storage.SOUPs = GetAllSOUP();
1✔
306
            storage.Anomalies = GetAllAnomalies();
1✔
307
            storage.EliminatedSystemRequirements = GetAllEliminatedSystemRequirements();
1✔
308
            storage.EliminatedSoftwareRequirements = GetAllEliminatedSoftwareRequirements();
1✔
309
            storage.EliminatedDocumentationRequirements = GetAllEliminatedDocumentationRequirements();
1✔
310
            storage.EliminatedSoftwareSystemTests = GetAllEliminatedSoftwareSystemTests();
1✔
311
            storage.EliminatedRisks = GetAllEliminatedRisks();
1✔
312

313
            var options = new JsonSerializerOptions { WriteIndented = true };
1✔
314
            return JsonSerializer.Serialize(storage, options);
1✔
315
        }
1✔
316
    }
317
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc