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

rwjdk / TrelloDotNet / 15715919831

17 Jun 2025 07:01PM UTC coverage: 79.816% (-0.5%) from 80.303%
15715919831

push

github

rwjdk
Version 2.0.6

2539 of 3460 branches covered (73.38%)

Branch coverage included in aggregate %.

27 of 75 new or added lines in 9 files covered. (36.0%)

6 existing lines in 2 files now uncovered.

4480 of 5334 relevant lines covered (83.99%)

107.47 hits per line

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

82.95
/src/TrelloDotNet/Control/QueryParametersBuilder.cs
1
using System;
2
using System.Collections.Generic;
3
using System.Linq;
4
using System.Reflection;
5
using System.Text.Json.Serialization;
6
using TrelloDotNet.Model;
7

8
namespace TrelloDotNet.Control
9
{
10
    internal class QueryParametersBuilder
11
    {
12
        internal QueryParameter[] GetViaQueryParameterAttributes<T>(T instance)
13
        {
14
            var type = instance.GetType();
504✔
15
            var propertyInfos = type.GetProperties();
504✔
16
            List<QueryParameter> parameters = new List<QueryParameter>();
504✔
17
            foreach (PropertyInfo updateableProperty in propertyInfos)
17,450✔
18
            {
19
                var updateableAttributes = updateableProperty.GetCustomAttributes(typeof(QueryParameterAttribute), true);
8,221✔
20
                if (!updateableAttributes.Any())
8,221✔
21
                {
22
                    continue;
23
                }
24

25
                var jsonPropertyNameAttributes = updateableProperty.GetCustomAttributes(typeof(JsonPropertyNameAttribute), true);
3,319✔
26
                if (!jsonPropertyNameAttributes.Any())
3,319✔
27
                {
28
                    continue;
29
                }
30

31
                var jsonPropertyName = (JsonPropertyNameAttribute)jsonPropertyNameAttributes.First();
3,319✔
32
                var updateableAttribute = (QueryParameterAttribute)updateableAttributes.First();
3,319✔
33
                var updateablePropertyType = updateableProperty.PropertyType;
3,319✔
34

35
                var rawValue = updateableProperty.GetValue(instance);
3,319✔
36
                if (rawValue == null && !updateableAttribute.IncludeIfNull)
3,319✔
37
                {
38
                    continue;
39
                }
40

41
                if (updateablePropertyType == typeof(string))
3,318✔
42
                {
43
                    parameters.Add(rawValue == null ? new QueryParameter(jsonPropertyName.Name, string.Empty) : new QueryParameter(jsonPropertyName.Name, (string)rawValue));
1,476✔
44
                }
45
                else if (updateablePropertyType == typeof(int) || updateablePropertyType == typeof(int?))
1,842!
46
                {
47
                    parameters.Add(new QueryParameter(jsonPropertyName.Name, (int?)rawValue));
×
48
                }
49
                else if (updateablePropertyType == typeof(decimal) || updateablePropertyType == typeof(decimal?))
1,842✔
50
                {
51
                    parameters.Add(new QueryParameter(jsonPropertyName.Name, (decimal?)rawValue));
331✔
52
                }
53
                else if (updateablePropertyType == typeof(DateTimeOffset) || updateablePropertyType == typeof(DateTimeOffset?))
1,511✔
54
                {
55
                    parameters.Add(new QueryParameter(jsonPropertyName.Name, (DateTimeOffset?)rawValue));
293✔
56
                }
57
                else if (updateablePropertyType == typeof(bool))
1,218✔
58
                {
59
                    parameters.Add(new QueryParameter(jsonPropertyName.Name, (bool?)rawValue));
802✔
60
                }
61
                else if (updateablePropertyType == typeof(bool?))
416!
62
                {
NEW
63
                    parameters.Add(new QueryParameter(jsonPropertyName.Name, (bool?)rawValue));
×
64
                }
65
                else if (updateablePropertyType == typeof(List<string>))
416✔
66
                {
67
                    var list = (List<string>)rawValue;
258✔
68
                    parameters.Add(list == null ? new QueryParameter(jsonPropertyName.Name, string.Empty) : new QueryParameter(jsonPropertyName.Name, list));
258!
69
                }
70
                else if (updateablePropertyType.BaseType == typeof(Enum))
158!
71
                {
72
                    parameters.Add(new QueryParameter(jsonPropertyName.Name, ((Enum)rawValue).GetJsonPropertyName()));
158✔
73
                }
74
                else
75
                {
76
                    throw new Exception($"Unsupported type of Property: {jsonPropertyName.Name} - Type: {updateablePropertyType}");
×
77
                }
78
            }
79

80
            return parameters.ToArray();
504✔
81
        }
82

83
        internal void AdjustForNamedPosition(IEnumerable<QueryParameter> parameters, NamedPosition? namedPosition)
84
        {
85
            if (!namedPosition.HasValue)
308✔
86
            {
87
                return;
177✔
88
            }
89

90
            QueryParameter parameter = parameters.FirstOrDefault(x => x.Name == "pos");
780✔
91
            if (parameter != null)
131!
92
            {
93
                parameter.Type = QueryParameterType.String;
131✔
94
                switch (namedPosition.Value)
131!
95
                {
96
                    case NamedPosition.Top:
97
                        parameter.SetRawValue("top");
×
98
                        break;
×
99
                    case NamedPosition.Bottom:
100
                        parameter.SetRawValue("bottom");
131✔
101
                        break;
131✔
102
                    default:
103
                        throw new ArgumentOutOfRangeException();
×
104
                }
105
            }
106
        }
×
107
    }
108
}
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

© 2025 Coveralls, Inc