Skip to content

Commit 590fda1

Browse files
authored
Merge pull request #6 from Ignia/TopicTrimming
Maintenance: Removal of vestigial elements
2 parents 8c46db9 + a910ca1 commit 590fda1

87 files changed

Lines changed: 737 additions & 917 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Ignia.Topics.Data.Caching/CachedTopicRepository.cs

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,9 @@
44
| Project Topics Library
55
\=============================================================================================================================*/
66
using System;
7-
using System.Collections.Generic;
8-
using System.Linq;
9-
using System.Text;
10-
using System.Threading.Tasks;
11-
using Ignia.Topics.Repositories;
127
using System.Diagnostics.Contracts;
13-
using System.Configuration;
14-
using System.Data;
15-
using System.Xml;
16-
using System.Globalization;
178
using Ignia.Topics.Collections;
9+
using Ignia.Topics.Repositories;
1810

1911
namespace Ignia.Topics.Data.Caching {
2012

Ignia.Topics.Data.Sql/SqlTopicRepository.cs

Lines changed: 11 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,18 @@
55
\=============================================================================================================================*/
66
using System;
77
using System.Collections.Generic;
8+
using System.Data;
9+
using System.Data.SqlClient;
10+
using System.Diagnostics;
11+
using System.Diagnostics.Contracts;
12+
using System.Globalization;
813
using System.Linq;
914
using System.Text;
10-
using System.Threading.Tasks;
11-
using Ignia.Topics.Repositories;
12-
using System.Diagnostics.Contracts;
13-
using System.Data.SqlClient;
14-
using System.Data;
15-
using System.Xml;
1615
using System.Web;
17-
using System.Globalization;
16+
using System.Xml;
1817
using Ignia.Topics.Collections;
19-
using System.Diagnostics;
2018
using Ignia.Topics.Querying;
19+
using Ignia.Topics.Repositories;
2120

2221
namespace Ignia.Topics.Data.Sql {
2322

@@ -67,7 +66,7 @@ public SqlTopicRepository(string connectionString) : base() {
6766
/*==========================================================================================================================
6867
| METHOD: ADD TOPIC
6968
\-------------------------------------------------------------------------------------------------------------------------*/
70-
private static void AddTopic(SqlDataReader reader, Dictionary<int, Topic> topics, out int sortOrder) {
69+
private static void AddTopic(SqlDataReader reader, Dictionary<int, Topic> topics) {
7170

7271
/*------------------------------------------------------------------------------------------------------------------------
7372
| Identify attributes
@@ -77,8 +76,6 @@ private static void AddTopic(SqlDataReader reader, Dictionary<int, Topic> topics
7776
var contentType = reader?["ContentType"]?.ToString();
7877
var key = reader?["TopicKey"]?.ToString();
7978

80-
sortOrder = Int32.Parse(reader?["SortOrder"]?.ToString(), CultureInfo.InvariantCulture);
81-
8279
// Handle ParentID (could be null for root topic)
8380
Int32.TryParse(reader?["ParentID"]?.ToString(), out parentId);
8481

@@ -88,13 +85,6 @@ private static void AddTopic(SqlDataReader reader, Dictionary<int, Topic> topics
8885
var current = TopicFactory.Create(key, contentType, id);
8986
topics.Add(current.Id, current);
9087

91-
/*------------------------------------------------------------------------------------------------------------------------
92-
| Assign sort order, based on database order
93-
\-----------------------------------------------------------------------------------------------------------------------*/
94-
if (current.SortOrder < 0) {
95-
current.SortOrder = sortOrder++;
96-
}
97-
9888
/*------------------------------------------------------------------------------------------------------------------------
9989
| Assign parent
10090
\-----------------------------------------------------------------------------------------------------------------------*/
@@ -467,7 +457,6 @@ public override Topic Load(int topicId, bool isRecursive = true) {
467457
var topics = new Dictionary<int, Topic>();
468458
var connection = new SqlConnection(_connectionString);
469459
var command = new SqlCommand("topics_GetTopics", connection);
470-
var sortOrder = 0;
471460

472461
command.CommandType = CommandType.StoredProcedure;
473462
command.CommandTimeout = 120;
@@ -497,7 +486,7 @@ public override Topic Load(int topicId, bool isRecursive = true) {
497486
\---------------------------------------------------------------------------------------------------------------------*/
498487
Debug.WriteLine("SqlTopicRepository.Load(): AddTopic() [" + DateTime.Now + "]");
499488
while (reader.Read()) {
500-
AddTopic(reader, topics, out sortOrder);
489+
AddTopic(reader, topics);
501490
}
502491

503492
/*----------------------------------------------------------------------------------------------------------------------
@@ -579,7 +568,7 @@ public override Topic Load(int topicId, bool isRecursive = true) {
579568
/*------------------------------------------------------------------------------------------------------------------------
580569
| Return objects
581570
\-----------------------------------------------------------------------------------------------------------------------*/
582-
if (topics.Count == 0) return new Topic();
571+
if (topics.Count == 0) return null;
583572
return topics[topics.Keys.ElementAt(0)];
584573

585574
}
@@ -607,7 +596,6 @@ public override Topic Load(int topicId, DateTime version) {
607596
var topics = new Dictionary<int, Topic>();
608597
var connection = new SqlConnection(_connectionString);
609598
var command = new SqlCommand("topics_GetVersion", connection);
610-
var sortOrder = 0;
611599

612600
command.CommandType = CommandType.StoredProcedure;
613601
command.CommandTimeout = 120;
@@ -637,7 +625,7 @@ public override Topic Load(int topicId, DateTime version) {
637625
| Populate topics
638626
\---------------------------------------------------------------------------------------------------------------------*/
639627
while (reader.Read()) {
640-
AddTopic(reader, topics, out sortOrder);
628+
AddTopic(reader, topics);
641629
}
642630

643631
/*----------------------------------------------------------------------------------------------------------------------

Ignia.Topics.Tests/AttributeValueCollectionTest.cs

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,78 @@ public void AttributeValueCollection_GetValueTest() {
3131
Assert.AreEqual<string>("Test", topic.Attributes.GetValue("Key"));
3232
}
3333

34+
/*==========================================================================================================================
35+
| TEST: GET INTEGER
36+
\-------------------------------------------------------------------------------------------------------------------------*/
37+
/// <summary>
38+
/// Ensures that integer values can be set and retrieved as expected.
39+
/// </summary>
40+
[TestMethod]
41+
public void AttributeValueCollection_GetIntegerTest() {
42+
43+
var topic = TopicFactory.Create("Test", "Container");
44+
45+
topic.Attributes.SetInteger("Number1", 1);
46+
topic.Attributes.SetInteger("Number2", 2);
47+
topic.Attributes.SetValue("Number3", "Invalid");
48+
49+
Assert.AreEqual<int>(1, topic.Attributes.GetInteger("Number1", 5));
50+
Assert.AreEqual<int>(2, topic.Attributes.GetInteger("Number2", 5));
51+
Assert.AreEqual<int>(5, topic.Attributes.GetInteger("Number3", 5));
52+
Assert.AreEqual<int>(5, topic.Attributes.GetInteger("InvalidKey", 5));
53+
54+
}
55+
56+
/*==========================================================================================================================
57+
| TEST: GET DATETIME
58+
\-------------------------------------------------------------------------------------------------------------------------*/
59+
/// <summary>
60+
/// Ensures that integer values can be set and retrieved as expected.
61+
/// </summary>
62+
[TestMethod]
63+
public void AttributeValueCollection_GetDateTimeTest() {
64+
65+
var topic = TopicFactory.Create("Test", "Container");
66+
var dateTime1 = new DateTime(1976, 10, 15);
67+
var dateTime2 = new DateTime(1981, 06, 03);
68+
69+
topic.Attributes.SetDateTime("DateTime1", dateTime1);
70+
topic.Attributes.SetDateTime("DateTime2", dateTime2);
71+
topic.Attributes.SetValue("DateTime3", "Invalid");
72+
73+
Assert.AreEqual<DateTime>(dateTime1, topic.Attributes.GetDateTime("DateTime1", DateTime.MinValue));
74+
Assert.AreEqual<DateTime>(dateTime2, topic.Attributes.GetDateTime("DateTime2", DateTime.MinValue));
75+
Assert.AreEqual<DateTime>(dateTime1, topic.Attributes.GetDateTime("DateTime3", dateTime1));
76+
Assert.AreEqual<DateTime>(dateTime2, topic.Attributes.GetDateTime("InvalidKey", dateTime2));
77+
78+
}
79+
80+
/*==========================================================================================================================
81+
| TEST: GET BOOLEAN
82+
\-------------------------------------------------------------------------------------------------------------------------*/
83+
/// <summary>
84+
/// Ensures that boolean values can be set and retrieved as expected.
85+
/// </summary>
86+
[TestMethod]
87+
public void AttributeValueCollection_GetBooleanTest() {
88+
89+
var topic = TopicFactory.Create("Test", "Container");
90+
91+
topic.Attributes.SetBoolean("IsValue1", true);
92+
topic.Attributes.SetBoolean("IsValue2", false);
93+
topic.Attributes.SetValue("IsValue3", "Invalid");
94+
95+
Assert.IsTrue(topic.Attributes.GetBoolean("IsValue1", false));
96+
Assert.IsFalse(topic.Attributes.GetBoolean("IsValue2", true));
97+
Assert.IsTrue(topic.Attributes.GetBoolean("IsValue3", true));
98+
Assert.IsFalse(topic.Attributes.GetBoolean("IsValue3", false));
99+
Assert.IsTrue(topic.Attributes.GetBoolean("InvalidKey", true));
100+
Assert.IsFalse(topic.Attributes.GetBoolean("InvalidKey", false));
101+
102+
}
103+
104+
105+
34106
/*==========================================================================================================================
35107
| TEST: DEFAULT VALUE
36108
\-------------------------------------------------------------------------------------------------------------------------*/

Ignia.Topics.Tests/Controllers/ErrorController.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
| Client Ignia, LLC
44
| Project Topics Library
55
\=============================================================================================================================*/
6-
using System.Web.Mvc;
76
using Ignia.Topics.ViewModels;
87
using Ignia.Topics.Web.Mvc.Controllers;
98

Ignia.Topics.Tests/Controllers/LayoutController.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
| Client Ignia, LLC
44
| Project Topics Library
55
\=============================================================================================================================*/
6-
using System.Web.Mvc;
76
using Ignia.Topics.Mapping;
87
using Ignia.Topics.Repositories;
98
using Ignia.Topics.ViewModels;

Ignia.Topics.Tests/ITopicRepositoryTest.cs

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
\=============================================================================================================================*/
66
using System;
77
using System.Linq;
8-
using System.Reflection;
98
using Ignia.Topics.Collections;
109
using Ignia.Topics.Data.Caching;
1110
using Ignia.Topics.Repositories;
@@ -120,6 +119,33 @@ public void ITopicRepository_MoveTest() {
120119

121120
}
122121

122+
/*==========================================================================================================================
123+
| TEST: MOVE TO SIBLING
124+
\-------------------------------------------------------------------------------------------------------------------------*/
125+
/// <summary>
126+
/// Moves topic next to a different sibling and ensures it ends up in the correct location.
127+
/// </summary>
128+
[TestMethod]
129+
public void ITopicRepository_MoveToSiblingTest() {
130+
131+
var rootTopic = _topicRepository.Load();
132+
var parent = _topicRepository.Load("Root:Web:Web_0");
133+
var topic = _topicRepository.Load("Root:Web:Web_0:Web_0_0");
134+
var sibling = _topicRepository.Load("Root:Web:Web_0:Web_0_1");
135+
136+
Assert.ReferenceEquals(topic.Parent, parent);
137+
Assert.AreEqual<string>("Web_0_0", parent.Children.First().Key);
138+
Assert.AreEqual<int>(3, parent.Children.Count());
139+
140+
_topicRepository.Move(topic, parent, sibling);
141+
142+
Assert.ReferenceEquals(topic.Parent, parent);
143+
Assert.AreEqual<int>(3, parent.Children.Count());
144+
Assert.AreEqual<string>("Web_0_1", parent.Children.First().Key);
145+
Assert.AreEqual<string>("Web_0_0", parent.Children[1].Key);
146+
147+
}
148+
123149
/*==========================================================================================================================
124150
| TEST: DELETE
125151
\-------------------------------------------------------------------------------------------------------------------------*/

Ignia.Topics.Tests/TestDoubles/FakeTopicRepository.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,9 @@
44
| Project Topics Library
55
\=============================================================================================================================*/
66
using System;
7-
using Ignia.Topics.Repositories;
87
using System.Diagnostics.Contracts;
98
using Ignia.Topics.Collections;
10-
using System.Collections.Generic;
9+
using Ignia.Topics.Repositories;
1110

1211
namespace Ignia.Topics.Tests.TestDoubles {
1312

Ignia.Topics.Tests/TopicCollectionTest.cs

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
| Client Ignia, LLC
44
| Project Topics Library
55
\=============================================================================================================================*/
6-
using System;
76
using System.Collections.Generic;
87
using System.Linq;
98
using Ignia.Topics.Collections;
@@ -82,28 +81,5 @@ public void TopicCollection_AsReadOnlyTest() {
8281

8382
}
8483

85-
/*==========================================================================================================================
86-
| TEST: SORTED
87-
\-------------------------------------------------------------------------------------------------------------------------*/
88-
/// <summary>
89-
/// Establishes a number of topics, with varying <see cref="Topic.SortOrder"/>s, and ensures the results are sorted.
90-
/// </summary>
91-
[TestMethod]
92-
public void TopicCollection_SortedTest() {
93-
94-
var topics = new TopicCollection();
95-
96-
for (var i = 0; i < 10; i++) {
97-
topics.Add(TopicFactory.Create("Topic" + i, "Page"));
98-
}
99-
100-
for (var i = 0; i < 10; i++) {
101-
topics[i].SortOrder = 50-i;
102-
}
103-
104-
Assert.AreEqual<string>("Topic9", topics.Sorted.First().Key);
105-
106-
}
107-
10884
} //Class
10985
} //Namespace

Ignia.Topics.Tests/TopicControllerTest.cs

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,17 @@
55
\=============================================================================================================================*/
66
using System;
77
using System.Linq;
8-
using Microsoft.VisualStudio.TestTools.UnitTesting;
9-
using Ignia.Topics.Querying;
10-
using Ignia.Topics.Web.Mvc;
11-
using Ignia.Topics.Repositories;
12-
using Ignia.Topics.Data.Caching;
13-
using Ignia.Topics.Tests.TestDoubles;
14-
using Ignia.Topics.Web.Mvc.Controllers;
15-
using Ignia.Topics.ViewModels;
168
using System.Web.Mvc;
179
using System.Web.Routing;
10+
using Ignia.Topics.Data.Caching;
1811
using Ignia.Topics.Mapping;
12+
using Ignia.Topics.Repositories;
13+
using Ignia.Topics.Tests.TestDoubles;
14+
using Ignia.Topics.ViewModels;
15+
using Ignia.Topics.Web.Mvc;
16+
using Ignia.Topics.Web.Mvc.Controllers;
1917
using Ignia.Topics.Web.Mvc.Models;
18+
using Microsoft.VisualStudio.TestTools.UnitTesting;
2019

2120
namespace Ignia.Topics.Tests {
2221

Ignia.Topics.Tests/TopicMappingServiceTest.cs

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,15 @@
33
| Client Ignia, LLC
44
| Project Topics Library
55
\=============================================================================================================================*/
6-
using System;
7-
using System.Collections.Generic;
8-
using System.Collections.ObjectModel;
9-
using System.ComponentModel;
106
using System.ComponentModel.DataAnnotations;
117
using System.Linq;
12-
using System.Reflection;
13-
using Ignia.Topics.Collections;
14-
using Ignia.Topics.ViewModels;
15-
using Ignia.Topics.Tests.ViewModels;
8+
using Ignia.Topics.Data.Caching;
169
using Ignia.Topics.Mapping;
17-
using Microsoft.VisualStudio.TestTools.UnitTesting;
1810
using Ignia.Topics.Repositories;
19-
using Ignia.Topics.Data.Caching;
2011
using Ignia.Topics.Tests.TestDoubles;
12+
using Ignia.Topics.Tests.ViewModels;
13+
using Ignia.Topics.ViewModels;
14+
using Microsoft.VisualStudio.TestTools.UnitTesting;
2115

2216
namespace Ignia.Topics.Tests {
2317

0 commit comments

Comments
 (0)