Skip to content

Commit 7541a0c

Browse files
committed
Improve tests #15 - initial check-in for non-auth tests
1 parent de1e799 commit 7541a0c

File tree

5 files changed

+237
-2
lines changed

5 files changed

+237
-2
lines changed

FunctionalTests/FunctionalTests.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
</ItemGroup>
1717

1818
<ItemGroup>
19-
<ProjectReference Include="..\src\OsmApiClient.csproj" />
19+
<ProjectReference Include="..\src\OsmSharp.IO.API.csproj" />
2020
</ItemGroup>
2121

2222
<ItemGroup>

OsmApiClient.sln

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ VisualStudioVersion = 16.0.29009.5
55
MinimumVisualStudioVersion = 10.0.40219.1
66
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FunctionalTests", "FunctionalTests\FunctionalTests.csproj", "{5CF184D1-FD7F-4E23-968C-5E62D47C8763}"
77
EndProject
8-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OsmApiClient", "src\OsmApiClient.csproj", "{2D5EBE3D-2EC0-41AE-8326-E866BC2DB23C}"
8+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OsmSharp.IO.API", "src\OsmSharp.IO.API.csproj", "{2D5EBE3D-2EC0-41AE-8326-E866BC2DB23C}"
99
EndProject
1010
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{02AFE1C4-242D-4443-9CBE-6F69B8D32E6B}"
1111
ProjectSection(SolutionItems) = preProject
@@ -14,6 +14,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
1414
README.md = README.md
1515
EndProjectSection
1616
EndProject
17+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OsmSharp.IO.API.Tests", "OsmSharp.IO.API.Tests\OsmSharp.IO.API.Tests.csproj", "{DEB65369-465C-46BA-B545-868E0CE8ED8B}"
18+
EndProject
1719
Global
1820
GlobalSection(SolutionConfigurationPlatforms) = preSolution
1921
Debug|Any CPU = Debug|Any CPU
@@ -28,6 +30,10 @@ Global
2830
{2D5EBE3D-2EC0-41AE-8326-E866BC2DB23C}.Debug|Any CPU.Build.0 = Debug|Any CPU
2931
{2D5EBE3D-2EC0-41AE-8326-E866BC2DB23C}.Release|Any CPU.ActiveCfg = Release|Any CPU
3032
{2D5EBE3D-2EC0-41AE-8326-E866BC2DB23C}.Release|Any CPU.Build.0 = Release|Any CPU
33+
{DEB65369-465C-46BA-B545-868E0CE8ED8B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
34+
{DEB65369-465C-46BA-B545-868E0CE8ED8B}.Debug|Any CPU.Build.0 = Debug|Any CPU
35+
{DEB65369-465C-46BA-B545-868E0CE8ED8B}.Release|Any CPU.ActiveCfg = Release|Any CPU
36+
{DEB65369-465C-46BA-B545-868E0CE8ED8B}.Release|Any CPU.Build.0 = Release|Any CPU
3137
EndGlobalSection
3238
GlobalSection(SolutionProperties) = preSolution
3339
HideSolutionNode = FALSE
Lines changed: 207 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,207 @@
1+
using Microsoft.Extensions.Logging;
2+
using Microsoft.VisualStudio.TestTools.UnitTesting;
3+
using OsmSharp;
4+
using OsmSharp.API;
5+
using OsmSharp.Db;
6+
using OsmSharp.IO.API;
7+
using System;
8+
using System.Collections.Generic;
9+
using System.Linq;
10+
using System.Net.Http;
11+
using System.Threading.Tasks;
12+
13+
namespace OsmApiClientTests
14+
{
15+
[TestClass]
16+
public class NonAuthTests
17+
{
18+
private INonAuthClient client;
19+
20+
private readonly Bounds WashingtonDC = new Bounds()
21+
{
22+
MinLongitude = -77.0671918f,
23+
MinLatitude = 38.9007186f,
24+
MaxLongitude = -77.00099990f,
25+
MaxLatitude = 38.98734f
26+
};
27+
28+
private readonly Bounds TraceArea = new Bounds()
29+
{
30+
MinLongitude = 0,
31+
MinLatitude = 51.5f,
32+
MaxLongitude = 0.25f,
33+
MaxLatitude = 51.75f,
34+
};
35+
36+
private readonly Bounds NoteBounds = new Bounds()
37+
{
38+
MinLongitude = 0,
39+
MinLatitude = 50f,
40+
MaxLongitude = 5f,
41+
MaxLatitude = 55f,
42+
};
43+
44+
private Task<Osm> GetWashingtonObject()
45+
{
46+
return client.GetMap(WashingtonDC);
47+
}
48+
49+
private async Task<Node> GetFirstNodeInWashington()
50+
{
51+
var map = await client.GetMap(WashingtonDC);
52+
return await client.GetNode(map.Nodes.First().Id.Value);
53+
}
54+
55+
[TestInitialize]
56+
public void TestInitialize()
57+
{
58+
using var loggerFactory = LoggerFactory.Create(b => b.AddConsole());
59+
var logger = loggerFactory.CreateLogger("Tests");
60+
var clientFactory = new ClientsFactory(logger, new HttpClient(), "https://master.apis.dev.openstreetmap.org/api/");
61+
client = clientFactory.CreateNonAuthClient();
62+
}
63+
64+
[TestMethod]
65+
public async Task TestCapabilities()
66+
{
67+
var capabilities = await client.GetCapabilities();
68+
Assert.IsNotNull(capabilities?.Api?.Status?.Api);
69+
Assert.IsNotNull(capabilities?.Policy);
70+
}
71+
72+
[TestMethod]
73+
public async Task TestApiVersion()
74+
{
75+
var apiVersion = await client.GetVersions();
76+
Assert.IsNotNull(apiVersion);
77+
}
78+
79+
[TestMethod]
80+
public async Task TestMap()
81+
{
82+
var map = await GetWashingtonObject();
83+
Assert.IsNotNull(map?.Nodes?.FirstOrDefault());
84+
Assert.IsNotNull(map?.Ways?.FirstOrDefault());
85+
Assert.IsNotNull(map?.Relations?.FirstOrDefault());
86+
}
87+
88+
[TestMethod]
89+
public async Task TestNode()
90+
{
91+
var map = await GetWashingtonObject();
92+
var nodeId = map.Nodes.First().Id.Value;
93+
var node = await client.GetNode(nodeId);
94+
Assert.IsNotNull(node);
95+
var nodeVersion = client.GetNodeVersion(nodeId, 1);
96+
Assert.IsNotNull(nodeVersion);
97+
var nodeHistory = await client.GetNodeHistory(nodeId);
98+
Assert.IsTrue(nodeHistory.Any());
99+
var multifetchNodes = await client.GetNodes(new Dictionary<long, long?>() { { nodeId, null }, { nodeId + 1, 1 } });
100+
Assert.IsTrue(multifetchNodes.Any());
101+
var nodeRelations = await client.GetNodeRelations(nodeId);
102+
Assert.IsNotNull(nodeRelations);
103+
var nodeWays = await client.GetNodeWays(nodeId);
104+
Assert.IsNotNull(nodeWays);
105+
}
106+
107+
[TestMethod]
108+
public async Task TestWay()
109+
{
110+
var map = await GetWashingtonObject();
111+
var wayId = map.Ways.First().Id.Value;
112+
var way = await client.GetWay(wayId);
113+
Assert.IsNotNull(way);
114+
var wayComplete = await client.GetCompleteWay(wayId);
115+
Assert.IsNotNull(wayComplete);
116+
}
117+
118+
[TestMethod]
119+
public async Task TestRelation()
120+
{
121+
var map = await GetWashingtonObject();
122+
var relationId = map.Relations.First().Id.Value;
123+
var relation = client.GetRelation(relationId).Result;
124+
Assert.IsNotNull(relation);
125+
var relationComplete = client.GetCompleteRelation(relationId).Result;
126+
Assert.IsNotNull(relationComplete);
127+
}
128+
129+
[TestMethod]
130+
public async Task TestGetElements()
131+
{
132+
var map = await GetWashingtonObject();
133+
var multifetchElements = await client.GetElements(
134+
map.Nodes.Select(n => new OsmGeoKey(n)).Concat(map.Ways.Select(n => new OsmGeoKey(n))).ToArray());
135+
Assert.IsNotNull(multifetchElements);
136+
}
137+
138+
[TestMethod]
139+
public async Task TestGetChangeset()
140+
{
141+
var node = await GetFirstNodeInWashington();
142+
var changeset = await client.GetChangeset(node.ChangeSetId.Value);
143+
Assert.IsNotNull(changeset);
144+
var changesetWithDiscussion = await client.GetChangeset(node.ChangeSetId.Value, true);
145+
Assert.IsNotNull(changesetWithDiscussion?.Discussion);
146+
}
147+
148+
[TestMethod]
149+
public async Task TestQueryChangesets()
150+
{
151+
var node = await GetFirstNodeInWashington();
152+
var changesets = await client.QueryChangesets(WashingtonDC, null, null, null, null, false, false, null);
153+
Assert.IsTrue(changesets.Any());
154+
changesets = await client.QueryChangesets(null, node.UserId, null, null, null, false, false, null);
155+
Assert.IsTrue(changesets.Any());
156+
changesets = await client.QueryChangesets(null, node.UserId, null, DateTime.MinValue, null, false, false, null);
157+
Assert.IsTrue(changesets.Any());
158+
changesets = await client.QueryChangesets(null, null, node.UserName, null, null, false, false, null);
159+
Assert.IsTrue(changesets.Any());
160+
changesets = await client.QueryChangesets(null, null, null, null, null, false, false, new long[] { 151176, 151177 });
161+
Assert.AreEqual(2, changesets.Length);
162+
}
163+
164+
[TestMethod]
165+
public async Task TestUser()
166+
{
167+
var node = await GetFirstNodeInWashington();
168+
var user = await client.GetUser(node.UserId.Value);
169+
Assert.IsNotNull(user);
170+
var users = await client.GetUsers(node.UserId.Value, node.UserId.Value + 1);
171+
Assert.IsTrue(users.Any());
172+
}
173+
174+
[TestMethod]
175+
public async Task TestTrack()
176+
{
177+
var gpx = await client.GetTrackPoints(TraceArea);
178+
Assert.IsNotNull(gpx);
179+
}
180+
181+
[TestMethod]
182+
public async Task TestNotes()
183+
{
184+
var notes = await client.GetNotes(NoteBounds);
185+
Assert.IsTrue(notes?.Length > 0);
186+
Assert.IsTrue(notes[0].Id.HasValue);
187+
var noteId = notes[0].Id.Value;
188+
var note = await client.GetNote(noteId);
189+
Assert.IsTrue(note?.Id == noteId);
190+
var feed = await client.GetNotesRssFeed(NoteBounds);
191+
Assert.IsNotNull(feed);
192+
var node = await GetFirstNodeInWashington();
193+
await client.QueryNotes("ThisIsANote", null, null, null, null, null, null);
194+
await client.QueryNotes("ThisIsANote", node.UserId, null, null, null, null, null);
195+
await client.QueryNotes("ThisIsANote", null, node.UserName, null, null, null, null);
196+
await client.QueryNotes("ThisIsANote", null, null, 100, null, null, null);
197+
await client.QueryNotes("ThisIsANote", null, null, null, 1, null, null);
198+
await client.QueryNotes("ThisIsANote", null, null, null, null, DateTime.Now.Subtract(TimeSpan.FromDays(100)), null);
199+
await client.QueryNotes("ThisIsANote", null, null, null, null, null, DateTime.Now.Subtract(TimeSpan.FromDays(2)));
200+
var newNote = await client.CreateNote(10.1f, 10.2f, "HelloWorld");
201+
Assert.IsTrue(newNote?.Comments?.Comments?.FirstOrDefault()?.Text == "HelloWorld");
202+
Assert.IsTrue(newNote?.Comments?.Comments?.FirstOrDefault()?.Action == Note.Comment.CommentAction.Opened);
203+
Assert.IsTrue(newNote?.Comments?.Comments?.FirstOrDefault()?.UserId == null);
204+
Assert.AreEqual(Note.NoteStatus.Open, newNote?.Status);
205+
}
206+
}
207+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<TargetFramework>netcoreapp31</TargetFramework>
5+
6+
<IsPackable>false</IsPackable>
7+
</PropertyGroup>
8+
9+
<ItemGroup>
10+
<PackageReference Include="Microsoft.Extensions.Logging" Version="3.1.4" />
11+
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="3.1.4" />
12+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.5.0" />
13+
<PackageReference Include="MSTest.TestAdapter" Version="2.1.0" />
14+
<PackageReference Include="MSTest.TestFramework" Version="2.1.0" />
15+
<PackageReference Include="coverlet.collector" Version="1.2.0" />
16+
</ItemGroup>
17+
18+
<ItemGroup>
19+
<ProjectReference Include="..\src\OsmSharp.IO.API.csproj" />
20+
</ItemGroup>
21+
22+
</Project>
File renamed without changes.

0 commit comments

Comments
 (0)