Skip to content

Commit cb1a8a9

Browse files
author
Jareth Hein
committed
Add test for big table handling, correct a CSV quoting issue, change way sensitive data is loaded for running tests
1 parent e397ca8 commit cb1a8a9

File tree

12 files changed

+89
-98
lines changed

12 files changed

+89
-98
lines changed

.editorconfig

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
; Top-most EditorConfig file
2+
root = true
3+
4+
; 4-column space indentation
5+
[*.cs]
6+
indent_style = space
7+
indent_size = 4
8+
tab_width = 4

.gitignore

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
.svn
22
Intuit.QuickBase.Client/obj/
3+
Intuit.QuickBase.Client/bin/
34
Intuit.QuickBase.Core/obj/
5+
Intuit.QuickBase.Core/bin/
46
QBFunctionTest/obj/
5-
QBFunctionTest/*.config
7+
QBFunctionTest/bin/
8+
QBFunctionTest/TestConfigs.xml
69
TestResults/
710
*.CodeAnalysisLog.xml
811
*.ruleset

Intuit.QuickBase.Client/QRecord.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -212,9 +212,9 @@ public string GetAsCSV(string clist)
212212

213213
private string CSVQuoter(string inStr)
214214
{
215-
//if the string contains quote character(s), newlines or commas, surround the string with quotes
215+
//if the string contains quote character(s), newlines or commas, surround the string with quotes, and double quotes if present
216216
if (inStr.Contains("\"") || inStr.Contains(",") || inStr.Contains("\n") || inStr.Contains("\r"))
217-
return "\"" + inStr + "\"";
217+
return "\"" + inStr.Replace("\"","\"\"") + "\"";
218218
else
219219
return inStr;
220220
}

QBFunctionTest/Properties/Settings.Designer.cs

Lines changed: 0 additions & 45 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,5 @@
11
<?xml version='1.0' encoding='utf-8'?>
2-
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="QBFunctionTest.Properties" GeneratedClassName="Settings">
2+
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
33
<Profiles />
4-
<Settings>
5-
<Setting Name="qbUser" Type="System.String" Scope="Application">
6-
<Value Profile="(Default)">***REMOVED***</Value>
7-
</Setting>
8-
<Setting Name="qbPass" Type="System.String" Scope="Application">
9-
<Value Profile="(Default)">***REMOVED***</Value>
10-
</Setting>
11-
<Setting Name="qbAppToken" Type="System.String" Scope="Application">
12-
<Value Profile="(Default)">***REMOVED***</Value>
13-
</Setting>
14-
<Setting Name="qbSiteURL" Type="System.String" Scope="Application">
15-
<Value Profile="(Default)">***REMOVED***</Value>
16-
</Setting>
17-
<Setting Name="qbAppDBID" Type="System.String" Scope="Application">
18-
<Value Profile="(Default)">***REMOVED***</Value>
19-
</Setting>
20-
</Settings>
4+
<Settings />
215
</SettingsFile>

QBFunctionTest/QBFunctionTest.csproj

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@
3939
<Reference Include="System.Core">
4040
<RequiredTargetFramework>3.5</RequiredTargetFramework>
4141
</Reference>
42+
<Reference Include="System.XML" />
43+
<Reference Include="System.Xml.Linq" />
4244
</ItemGroup>
4345
<Choose>
4446
<When Condition="('$(VisualStudioVersion)' == '10.0' or '$(VisualStudioVersion)' == '') and '$(TargetFrameworkVersion)' == 'v3.5'">
@@ -78,6 +80,11 @@
7880
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
7981
</None>
8082
</ItemGroup>
83+
<ItemGroup>
84+
<Content Include="TestConfigs.xml">
85+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
86+
</Content>
87+
</ItemGroup>
8188
<Choose>
8289
<When Condition="'$(VisualStudioVersion)' == '10.0' And '$(IsCodedUITest)' == 'True'">
8390
<ItemGroup>
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<Settings>
2+
<setting name="qbUser" serializeAs="String">[email protected]</setting>
3+
<setting name="qbPass" serializeAs="String">examplePassword</setting>
4+
<setting name="qbAppToken" serializeAs="String">qbExampleAppToken</setting>
5+
<setting name="qbSiteURL" serializeAs="String">example.quickbase.com</setting>
6+
<setting name="qbAppDBID" serializeAs="String">exampleAppId</setting>
7+
<setting name="qbBigTable" serializeAs="String">exampleTableId</setting>
8+
</Settings>

QBFunctionTest/UnitTest1.cs

Lines changed: 46 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,42 @@
11
using System;
22
using System.Collections.Generic;
3+
using System.Xml.Linq;
34
using System.Linq;
45
using Intuit.QuickBase.Client;
56
using Intuit.QuickBase.Core;
67
using Microsoft.VisualStudio.TestTools.UnitTesting;
7-
using QBFunctionTest.Properties;
88

99
namespace QBFunctionTest
1010
{
1111
[TestClass]
1212
public class UnitTest1
1313
{
1414
private IQApplication qbApp;
15+
private Dictionary<string, string> qbSettings = new Dictionary<string, string>();
16+
17+
18+
private void LoadSettings()
19+
{
20+
try
21+
{
22+
XDocument setDoc = XDocument.Load("TestConfigs.xml");
23+
foreach (XElement xNod in setDoc.Root.Descendants())
24+
{
25+
qbSettings.Add(xNod.Attribute("name").Value, xNod.Value);
26+
}
27+
28+
}
29+
catch (Exception ex)
30+
{
31+
throw new ApplicationException("Can't load TestConfigs.xml file: " + ex.Message, ex);
32+
}
33+
}
1534

1635
public void InitConnection()
1736
{
18-
var client = QuickBase.Login(Settings.Default.qbUser, Settings.Default.qbPass, Settings.Default.qbSiteURL);
19-
qbApp = client.Connect(Settings.Default.qbAppDBID, Settings.Default.qbAppToken);
37+
LoadSettings();
38+
var client = QuickBase.Login(qbSettings["qbUser"], qbSettings["qbPass"], qbSettings["qbSiteURL"]);
39+
qbApp = client.Connect(qbSettings["qbAppDBID"], qbSettings["qbAppToken"]);
2040

2141
}
2242

@@ -73,6 +93,29 @@ public void Setup2ndValues()
7393

7494
}
7595

96+
[TestMethod]
97+
public void LargeTableHandling()
98+
{
99+
InitConnection();
100+
IQTable orderTable = qbApp.GetTable(qbSettings["qbBigTable"]);
101+
Query qry = new Query();
102+
QueryStrings lstQry = new QueryStrings(1, ComparisonOperator.IR, "last 60 d",
103+
LogicalOperator.NONE);
104+
qry.Add(lstQry);
105+
int maxRec = 100000;
106+
orderTable.Query(qry, $"skp-10.num-{maxRec}");
107+
Assert.AreEqual(maxRec, orderTable.Records.Count);
108+
List<string> idLst = new List<string>();
109+
foreach (QRecord rec in orderTable.Records)
110+
{
111+
string id = (string) rec["Record ID#"];
112+
if (idLst.Contains(id))
113+
Assert.Fail("Duplicate ID found!");
114+
else
115+
idLst.Add(id);
116+
}
117+
}
118+
76119
[TestMethod]
77120
public void BasicCreationAndRoundTripTest()
78121
{

QBFunctionTest/app.config

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<?xml version="1.0" encoding="utf-8" ?>
2+
<configuration>
3+
<configSections>
4+
</configSections>
5+
</configuration>

QBFunctionTest/app.config.example

Lines changed: 0 additions & 27 deletions
This file was deleted.

0 commit comments

Comments
 (0)