public void SecurityFeaturesMustHaveDescription() { AssertCustom.IgnoreOnBuildServer(); var baseFeatureClass = typeof(NeptuneBaseFeature); var types = AppDomain.CurrentDomain.GetAssemblies().SelectMany(s => s.GetTypes()).Where(p => baseFeatureClass.IsAssignableFrom(p) && p.Name != baseFeatureClass.Name && !p.IsAbstract); var listOfSecurityFeaturesWithoutDescription = new List <string>(); foreach (var type in types) { Attribute[] attributes = Attribute.GetCustomAttributes(type); if (!attributes.Any(x => x is SecurityFeatureDescription)) { listOfSecurityFeaturesWithoutDescription.Add(type.FullName); } else if (attributes.Where(x => x is SecurityFeatureDescription).Any(attr => ((SecurityFeatureDescription)attr).DescriptionMessage == "")) { listOfSecurityFeaturesWithoutDescription.Add(type.FullName); //Also flag anything where the description is blank } } if (listOfSecurityFeaturesWithoutDescription.Count > 0) { Assert.Fail(Environment.NewLine + Environment.NewLine + String.Join(Environment.NewLine, listOfSecurityFeaturesWithoutDescription)); } }
public void CanSerializeAFeatureCollectionAndEnsureItIsValidTest() { AssertCustom.IgnoreOnBuildServer(); var fc = GetTestFeatureCollection(); var json = JsonConvert.SerializeObject(fc, Formatting.Indented, new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() }); Assert.IsNotNull(json); Trace.WriteLine("You can download spatial maps via http://www.naturalearthdata.com/" + "\r\n" + "\r\n"); Trace.WriteLine(json); var buffer = Encoding.UTF8.GetBytes(json); var webReq = (HttpWebRequest)WebRequest.Create("http://geojsonlint.com/validate"); webReq.Method = "POST"; webReq.ContentLength = buffer.Length; webReq.ContentType = "application/x-www-form-urlencoded"; var reqStream = webReq.GetRequestStream(); reqStream.Write(buffer, 0, buffer.Length); reqStream.Close(); var webRes = webReq.GetResponse(); var resStream = webRes.GetResponseStream(); // ReSharper disable once AssignNullToNotNullAttribute var resReader = new StreamReader(resStream); var resObj = JsonConvert.DeserializeObject <GeoJSONLintResult>(resReader.ReadToEnd()); Assert.AreEqual(resObj.status, "ok"); }
public void CanProperlyCreateCommandLineOptionsForOgr2OgrUsingGeoJSON() { AssertCustom.IgnoreOnBuildServer(); // Arrange // ------- var gdalDataDirectoryInfo = new DirectoryInfo(@"C:\Program Files\GDAL\gdal-data"); const string sourceLayerName = "MySourceLayerName"; var inputGdbFile = new FileInfo(@"C:\temp\MyZippedGdbFile.gdb.zip"); // Act // --- var actualCommandLineArguments = Ogr2OgrCommandLineRunner.BuildCommandLineArgumentsForFileGdbToGeoJson( inputGdbFile, gdalDataDirectoryInfo, sourceLayerName, CoordinateSystemId, true); // Assert // ------ // Expecting a command line something like this: //"C:\Program Files\GDAL\ogr2ogr.exe" --config GDAL_DATA "C:\\Program Files\\GDAL\\gdal-data" -t_srs EPSG:4326 -explodecollections -f GeoJSON /dev/stdout "C:\\svn\\sitkatech\\trunk\\Corral\\Source\\Neptune.Web\\Models\\GdalOgr\\SampleFileGeodatabase.gdb.zip" var expectedCommandLineArguments = new[] { "--config", "GDAL_DATA", gdalDataDirectoryInfo.FullName, "-t_srs", Ogr2OgrCommandLineRunner.GetMapProjection(CoordinateSystemId), "-explodecollections", "-f", "GeoJSON", "/dev/stdout", inputGdbFile.FullName, string.Format("\"{0}\"", sourceLayerName) }; Assert.That(actualCommandLineArguments, Is.EquivalentTo(expectedCommandLineArguments), "Should produce expected arguments"); var expectedCommandLineArgumentsEncodedString = string.Join(" ", expectedCommandLineArguments.Select(ProcessUtility.EncodeArgumentForCommandLine).ToList()); var actualCommandLineArgumentsEncodedString = string.Join(" ", actualCommandLineArguments.Select(ProcessUtility.EncodeArgumentForCommandLine).ToList()); Assert.That(actualCommandLineArgumentsEncodedString, Is.EqualTo(expectedCommandLineArgumentsEncodedString), "Should produce the expected command line argument string in the correct order"); }
public void BuildDhtmlxGridHeaderTest() { AssertCustom.IgnoreOnBuildServer(); var gridSpec = new TestGridSpec(); var result = DhtmlxGridHtmlHelpers.BuildDhtmlxGridHeader(gridSpec, GridName, NeptuneDhtmlxGridHtmlHelpers.ExcelDownloadWithFooterUrl, NeptuneDhtmlxGridHtmlHelpers.ExcelDownloadWithoutFooterUrl); Approvals.Verify(result); }
public void CreateFilteredExcelDownloadIconHtmlTest() { AssertCustom.IgnoreOnBuildServer(); const string gridName = "testGridName"; var result = DhtmlxGridHtmlHelpers.CreateFilteredExcelDownloadIconHtml(gridName, true, NeptuneDhtmlxGridHtmlHelpers.ExcelDownloadWithFooterUrl, NeptuneDhtmlxGridHtmlHelpers.ExcelDownloadWithoutFooterUrl); Approvals.Verify(result); }
public void TestPyqgisLauncher() { AssertCustom.IgnoreOnBuildServer(); var processUtilityResult = QgisRunner.ExecutePyqgisScript(NeptuneWebConfiguration.PathToPyqgisTestScript, NeptuneWebConfiguration.PyqgisWorkingDirectory); Assert.That(processUtilityResult.ReturnCode == 0); }
public void SimpleTableColumns() { var db = new TestDatabaseFksTyped(); var qb = new QueryBuilder(); var q = new Query(db.Child, db.Child.Name, db.Child.ParentId); var result = qb.Build(q); AssertCustom.AreEqual("SELECT c.Name, c.ParentId\r\nFROM Child c", result); }
public void SimpleTable() { var db = new TestDatabaseFksTyped(); var qb = new QueryBuilder(); var q = new Query(db.Parent); var result = qb.Build(q); AssertCustom.AreEqual("SELECT p.Id, p.Name\r\nFROM Parent p", result); }
public void SimpleTableColumnExpression() { var db = new TestDatabaseFksTyped(); var qb = new QueryBuilder(); var q = new Query(db.Child, db.Child.Name, db.Child.ParentId).AddColumn("now", "GetDate()"); var result = qb.Build(q); AssertCustom.AreEqual("SELECT c.Name, c.ParentId, GetDate() AS 'now'\r\nFROM Child c", result); }
public void NotUsingAllowAnonymousAttribute() { AssertCustom.IgnoreOnBuildServer(); var allControllerActionMethods = NeptuneBaseController.AllControllerActionMethods; var usingAllowAnonymous = allControllerActionMethods.Where(m => m.GetCustomAttributes().Any(a => a.GetType() == _typeOfAllowAnonymousAttribute || a.GetType().IsSubclassOf(_typeOfAllowAnonymousAttribute))).ToList(); var x = usingAllowAnonymous.Select(MethodName).ToList(); Assert.That(x, Is.Empty, string.Format("Found some uses of \"{0}\", should be using types of \"{1}\" only.", _typeOfAllowAnonymousAttribute.FullName, _typeOfNeptuneBaseFeature.FullName)); }
public void TestProcessing() { AssertCustom.IgnoreOnBuildServer(); var processUtilityResult = QgisRunner.ExecutePyqgisScript( $"{NeptuneWebConfiguration.PyqgisWorkingDirectory}TestPyqgisProcessing.py", @"C:\Windows\System32\"); Assert.That(processUtilityResult.ReturnCode == 0); }
public void SimpleTableColumnCase() { var db = new TestDatabaseFksTyped(); var qb = new QueryBuilder(); var q = new Query(db.Child, db.Child.Name, db.Child.ParentId).AddColumn("IsParentId1", "CASE WHEN", db.Child.ParentId, "= 1 THEN", db.Child.ParentId, "ELSE 0 END"); var result = qb.Build(q); AssertCustom.AreEqual("SELECT c.Name, c.ParentId, CASE WHEN c.ParentId = 1 THEN c.ParentId ELSE 0 END AS 'IsParentId1'\r\nFROM Child c", result); }
public void WhereExpression() { var db = new TestDatabaseFksTyped(); var qb = new QueryBuilder(); var q = new Query(db.Parent) .Where(db.Parent.Name, "LIKE 'a%'"); var result = qb.Build(q); AssertCustom.AreEqual("SELECT p.Id, p.Name\r\nFROM Parent p\r\nWHERE p.Name LIKE 'a%'", result); }
public void Union() { var db = new TestDatabaseFksTyped(); var qb = new QueryBuilder(); var q = new Query(db.Parent) .Union(new Query(db.Parent)); var result = qb.Build(q); AssertCustom.AreEqual("SELECT p.Id, p.Name\r\nFROM Parent p\r\nUNION\r\nSELECT p.Id, p.Name\r\nFROM Parent p", result); }
public void ParentFieldWithChild() { var db = new TestDatabaseFksTyped(); var qb = new QueryBuilder(); var q = new Query(db.Child) .LeftJoin(db.Parent, db.Parent.Name); var result = qb.Build(q); AssertCustom.AreEqual("SELECT c.Id, c.Name, c.ParentId, p.Name AS 'ParentName'\r\nFROM Child c\r\n" + "LEFT JOIN Parent p ON p.Id = c.ParentId", result); }
public void CanSerializeAFeatureCollectionTest() { AssertCustom.IgnoreOnBuildServer(); var fc = GetTestFeatureCollection(); var json = JsonConvert.SerializeObject(fc, Formatting.Indented, new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() }); Approvals.Verify(json); }
public void EachControllerActionShouldHaveOneFeature() { AssertCustom.IgnoreOnBuildServer(); var allControllerActionMethods = NeptuneBaseController.AllControllerActionMethods; var info = allControllerActionMethods.Select(method => new { Name = MethodName(method), FeatureCount = NumberOfNeptuneFeatureAttributesOnMethod(method) }).ToList(); // Remove exceptions info = info.Where(x => x.Name != "JasmineController.Run").ToList(); Assert.That(info.Where(x => x.FeatureCount == 0).ToList(), Is.Empty, string.Format("All should have at least one {0}", _typeOfNeptuneBaseFeature.Name)); Assert.That(info.Where(x => x.FeatureCount > 1).ToList(), Is.Empty, string.Format("Should have no more than one{0}", _typeOfNeptuneBaseFeature.Name)); }
public void JoinColumnsParentNone_PrefixTableAliasAlways() { var db = new TestDatabaseFksTyped(); var qb = new QueryBuilder(); var q = new Query(db.Child, QueryColumnAliasStrategy.PrefixTableAliasAlways, new None()) .InnerJoin(db.Parent); var result = qb.Build(q); AssertCustom.AreEqual("SELECT p.Id AS 'p_Id', p.Name AS 'p_Name'\r\n" + "FROM Child c\r\n" + "INNER JOIN Parent p ON p.Id = c.ParentId", result); }
public void JoinColumnsParentNone() { var db = new TestDatabaseFksTyped(); var qb = new QueryBuilder(); var q = new Query(db.Child, new None()) .InnerJoin(db.Parent); var result = qb.Build(q); AssertCustom.AreEqual("SELECT p.Id, p.Name\r\n" + "FROM Child c\r\n" + "INNER JOIN Parent p ON p.Id = c.ParentId", result); }
public void JoinWithAlias() { var db = new TestDatabaseFksTyped(); var qb = new QueryBuilder(); var q = new Query(db.Child, QueryColumnAliasStrategy.PrefixTableAliasAlways) .LeftJoinAlias(db.Parent, "ppp"); var result = qb.Build(q); AssertCustom.AreEqual("SELECT c.Id, c.Name, c.ParentId, ppp.Id AS 'ppp_Id', ppp.Name AS 'ppp_Name'\r\n" + "FROM Child c\r\n" + "LEFT JOIN Parent ppp ON ppp.Id = c.ParentId", result); }
public void JoinSameTable() { var db = new TestDatabaseFksTyped(); var qb = new QueryBuilder(); var q = new Query(db.Child) .LeftJoinAlias(db.Parent, "p1") .LeftJoinAlias(db.Parent, "p2"); var result = qb.Build(q); AssertCustom.AreEqual("SELECT c.Id, c.Name, c.ParentId, p1.Id AS 'ParentId', p1.Name AS 'ParentName', p2.Id AS 'ParentId', p2.Name AS 'ParentName'\r\n" + "FROM Child c\r\n" + "LEFT JOIN Parent p1 ON p1.Id = c.ParentId\r\n" + "LEFT JOIN Parent p2 ON p2.Id = c.ParentId", result); }
public void JoinSameTableAndWhere() { var db = new TestDatabaseFksTyped(); var qb = new QueryBuilder(); var q = new Query(db.Child, QueryColumnAliasStrategy.PrefixTableAliasIfNeeded) .LeftJoinAlias(db.Parent, "p1") .LeftJoinAlias(db.Parent, "p2") .Where("p1.", db.Parent.Name, "LIKE 'a%'", "AND", "p2.", db.Parent.Name, "LIKE 'a%'"); var result = qb.Build(q); AssertCustom.AreEqual("SELECT c.Id, c.Name, c.ParentId, p1.Id AS 'p1_Id', p1.Name AS 'p1_Name', p2.Id AS 'p2_Id', p2.Name AS 'p2_Name'\r\n" + "FROM Child c\r\n" + "LEFT JOIN Parent p1 ON p1.Id = c.ParentId\r\n" + "LEFT JOIN Parent p2 ON p2.Id = c.ParentId\r\n" + "WHERE p1.Name LIKE 'a%' AND p2.Name LIKE 'a%'", result); }
public void TableAliases() { var db = new TestDatabaseFksTyped(); var qb = new QueryBuilder(); var p1 = db.Parent.Alias("p1"); var p2 = db.Parent.Alias("p2"); var q = new Query(db.Child) .LeftJoinOn(p1, new Expression(p1.Id, "=", db.Child.ParentId), new None()) .LeftJoinOn(p2, new Expression(p2.Id, "=", p1.Id), new None()); var result = qb.Build(q); AssertCustom.AreEqual("SELECT c.Id, c.Name, c.ParentId\r\n" + "FROM Child c\r\n" + "LEFT JOIN Parent p1 ON p1.Id = c.ParentId\r\n" + "LEFT JOIN Parent p2 ON p2.Id = p1.Id", result); }
public void CanExecuteOgr2OgrFromGeoJsonSingleColumnToExistingMsSql() { AssertCustom.IgnoreOnBuildServer(); var gdbFileInfo = FileUtility.FirstMatchingFileUpDirectoryTree(@"LTInfo.Common\GdalOgr\SampleFileGeodatabase.gdb.zip"); const string sourceLayerName = "MySampleFeatureClass"; // Act // --- const int totalMilliseconds = 110000; const string pathToOgr2OgrExecutable = @"C:\Program Files\GDAL\ogr2ogr.exe"; var ogr2OgrCommandLineRunner = new Ogr2OgrCommandLineRunner(pathToOgr2OgrExecutable, CoordinateSystemId, totalMilliseconds); var geoJson = ogr2OgrCommandLineRunner.ImportFileGdbToGeoJson(gdbFileInfo, sourceLayerName, true); var destinationTableName = "test_table"; var sqlSelectClause = string.Format("mystringcolumn as attribute, {0} as ProjectID", 77); try { CreateOgrRequiredTables(destinationTableName, null); // Act // --- ogr2OgrCommandLineRunner.ImportGeoJsonToMsSql(geoJson, TempDbSqlDatabase.DatabaseConnectionStringToTempDb, destinationTableName, sqlSelectClause); var result = ExecAdHocSql(string.Format("select * from {0}", destinationTableName)); // Assert // ------ Assert.That(result, Is.Not.Null, "Should have found the table imported"); Assert.That(result.Rows.Count, Is.EqualTo(6), "Should have gotten 6 rows"); } finally { // Cleanup // ------- try { ExecAdHocSql("drop table " + destinationTableName); } catch { // ignored } try { ExecAdHocSql("drop table spatial_ref_sys"); } catch { // ignored } try { ExecAdHocSql("drop table geometry_columns"); } catch { // ignored } } }