|
1 | 1 | using System;
|
2 | 2 | using System.Diagnostics;
|
| 3 | +using System.Linq; |
3 | 4 | using CommandLine;
|
4 | 5 | using Medallion.Shell;
|
5 | 6 | using NUnit.Framework;
|
@@ -76,6 +77,70 @@ public void PocoSettingTest(string url, string version, int n)
|
76 | 77 | Assert.IsFalse(output.Contains("public class Product :")); // -i is not set
|
77 | 78 | }
|
78 | 79 |
|
| 80 | + [Test] |
| 81 | + public void PocoWithInheritanceTest() |
| 82 | + { |
| 83 | + var url = "http://services.odata.org/V4/TripPinServiceRW/" ; |
| 84 | + var a = $"-r {url} -v"; |
| 85 | + |
| 86 | + var tuble = RunCommand(a); |
| 87 | + var output = tuble.Item2; |
| 88 | + |
| 89 | + Assert.IsTrue(output.Contains("public class PublicTransportation : PlanItem")); |
| 90 | + } |
| 91 | + |
| 92 | + [Test(Description = "If model inheritance is used (the default) check that the propterties of a base calsss are not duplicated inderived classes")] |
| 93 | + public void PropertyInheritenceTest() |
| 94 | + { |
| 95 | + var url = "http://services.odata.org/V4/TripPinServiceRW/"; |
| 96 | + var a = $"-r {url} -v"; |
| 97 | + |
| 98 | + var tuble = RunCommand(a); |
| 99 | + var output = tuble.Item2; |
| 100 | + |
| 101 | + var lines = output.Split('\n'); |
| 102 | + var occurneces = lines.Count(l => l.Contains("public int PlanItemId")); |
| 103 | + |
| 104 | + Assert.IsTrue(occurneces == 1); // For inheritance, check that PlanItemId property only occurs in the base class |
| 105 | + |
| 106 | + } |
| 107 | + [Test] |
| 108 | + public void PocoWithBaseClassTest() |
| 109 | + { |
| 110 | + var url = "http://services.odata.org/V4/TripPinServiceRW/"; |
| 111 | + const string myBaseClass = nameof(myBaseClass); |
| 112 | + |
| 113 | + var a = $"-r {url} -v -i {myBaseClass}"; |
| 114 | + |
| 115 | + var tuble = RunCommand(a); |
| 116 | + var output = tuble.Item2; |
| 117 | + |
| 118 | + Assert.IsTrue(output.Contains($"public class PublicTransportation : {myBaseClass}")); |
| 119 | + |
| 120 | + var lines = output.Split('\n'); |
| 121 | + var occurneces = lines.Count(l => l.Contains("public int PlanItemId")); |
| 122 | + |
| 123 | + Assert.IsTrue(occurneces > 1); |
| 124 | + } |
| 125 | + |
| 126 | + [Test(Description = "If model inheritance is not used, the properties from a base class should by duplicated in the derived classes.")] |
| 127 | + public void PropertyDuplicationTest() |
| 128 | + { |
| 129 | + var url = "http://services.odata.org/V4/TripPinServiceRW/"; |
| 130 | + const string myBaseClass = nameof(myBaseClass); |
| 131 | + |
| 132 | + var a = $"-r {url} -v -i {myBaseClass}"; |
| 133 | + |
| 134 | + var tuble = RunCommand(a); |
| 135 | + var output = tuble.Item2; |
| 136 | + |
| 137 | + var lines = output.Split('\n'); |
| 138 | + var occurneces = lines.Count(l => l.Contains("public int PlanItemId")); |
| 139 | + |
| 140 | + Assert.IsTrue(occurneces > 1); // If not using model inheritance, check that the PlanItemId property is duplicated in derived classes |
| 141 | + |
| 142 | + } |
| 143 | + |
79 | 144 | [Test]
|
80 | 145 | [TestCaseSource(typeof(TestSample), "UrlCases")]
|
81 | 146 | public void NullableDatatypeTest(string url, string version, int n)
|
|
0 commit comments