Skip to content

Commit d156740

Browse files
committed
Added some tests
1 parent b344c8b commit d156740

File tree

20 files changed

+264
-235
lines changed

20 files changed

+264
-235
lines changed

BookCollection.Tests/Helpers/ConvertersTest.cs

Lines changed: 64 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,73 @@ namespace BookCollection.Tests.Helpers
1111
[TestClass]
1212
public class ConvertersTest
1313
{
14+
[TestMethod]
15+
public void ExtractSerieNr()
16+
{
17+
Assert.AreEqual("I", Converters.ExtractSerieNr("British Monarchs Series I"));
18+
Assert.AreEqual("II", Converters.ExtractSerieNr("British Monarchs Series II"));
19+
Assert.AreEqual("III", Converters.ExtractSerieNr("British Monarchs Series III"));
20+
Assert.AreEqual("IV", Converters.ExtractSerieNr("British Monarchs Series IV"));
21+
Assert.AreEqual("V", Converters.ExtractSerieNr("British Monarchs Series V"));
22+
Assert.AreEqual("VI", Converters.ExtractSerieNr("British Monarchs Series VI"));
23+
Assert.AreEqual("VII", Converters.ExtractSerieNr("British Monarchs Series VII"));
24+
Assert.AreEqual("VIII", Converters.ExtractSerieNr("British Monarchs Series VIII"));
25+
Assert.AreEqual("IX", Converters.ExtractSerieNr("British Monarchs Series IX"));
26+
Assert.AreEqual("X", Converters.ExtractSerieNr("British Monarchs Series X"));
27+
Assert.AreEqual("XI", Converters.ExtractSerieNr("British Monarchs Series XI"));
28+
29+
30+
Assert.AreEqual("1", Converters.ExtractSerieNr("Serie XYZ (1)"));
31+
Assert.AreEqual("1", Converters.ExtractSerieNr("Serie XYZ 1"));
32+
Assert.AreEqual("18", Converters.ExtractSerieNr("Serie XYZ 18"));
33+
Assert.AreEqual("122", Converters.ExtractSerieNr("Serie XYZ 122"));
34+
Assert.AreEqual("II", Converters.ExtractSerieNr("Serie XYZ (II)"));
35+
36+
var testA = Converters.ExtractSerieNr("Serie XYZ (II), 2e druk");
37+
Assert.AreEqual("II 2e druk", testA);
38+
Assert.AreEqual("III 3e druk", Converters.ExtractSerieNr("Serie XYZ (III), 3e druk"));
39+
40+
Assert.AreEqual("II", Converters.ExtractSerieNr("Serie XYZ (II) / LHR"));
41+
Assert.AreEqual("IIIA", Converters.ExtractSerieNr("Serie XYZ IIIA"));
42+
Assert.AreEqual("IIIB", Converters.ExtractSerieNr("Serie XYZ IIIB"));
43+
Assert.AreEqual("deel 1", Converters.ExtractSerieNr("Serie XYZ - deel 1"));
44+
Assert.AreEqual("1500 t/m 1600", Converters.ExtractSerieNr("Serie XYZ 1500-1600"));
45+
46+
}
47+
1448
[TestMethod]
1549
public void TestRemovalOfSerieNr()
1650
{
17-
Assert.AreEqual("", Converters.RenoveSerieNr(null));
18-
Assert.AreEqual("", Converters.RenoveSerieNr(""));
19-
Assert.AreEqual("Serie XYZ", Converters.RenoveSerieNr("Serie XYZ (1)"));
51+
Assert.AreEqual("", Converters.RemoveSerieNr(null));
52+
Assert.AreEqual("", Converters.RemoveSerieNr(""));
53+
Assert.AreEqual("British Monarchs Series", Converters.RemoveSerieNr("British Monarchs Series I"));
54+
Assert.AreEqual("British Monarchs Series", Converters.RemoveSerieNr("British Monarchs Series II"));
55+
Assert.AreEqual("British Monarchs Series", Converters.RemoveSerieNr("British Monarchs Series III"));
56+
Assert.AreEqual("British Monarchs Series", Converters.RemoveSerieNr("British Monarchs Series IV"));
57+
Assert.AreEqual("British Monarchs Series", Converters.RemoveSerieNr("British Monarchs Series V"));
58+
Assert.AreEqual("British Monarchs Series", Converters.RemoveSerieNr("British Monarchs Series VI"));
59+
Assert.AreEqual("British Monarchs Series", Converters.RemoveSerieNr("British Monarchs Series VII"));
60+
Assert.AreEqual("British Monarchs Series", Converters.RemoveSerieNr("British Monarchs Series VIII"));
61+
Assert.AreEqual("British Monarchs Series", Converters.RemoveSerieNr("British Monarchs Series IX"));
62+
Assert.AreEqual("British Monarchs Series", Converters.RemoveSerieNr("British Monarchs Series X"));
63+
Assert.AreEqual("British Monarchs Series", Converters.RemoveSerieNr("British Monarchs Series XI"));
64+
65+
66+
Assert.AreEqual("Serie XYZ", Converters.RemoveSerieNr("Serie XYZ (1)"));
67+
Assert.AreEqual("Serie XYZ", Converters.RemoveSerieNr("Serie XYZ 1"));
68+
Assert.AreEqual("Serie XYZ", Converters.RemoveSerieNr("Serie XYZ 18"));
69+
Assert.AreEqual("Serie XYZ", Converters.RemoveSerieNr("Serie XYZ 122"));
70+
Assert.AreEqual("Serie XYZ", Converters.RemoveSerieNr("Serie XYZ (II)"));
71+
Assert.AreEqual("Serie XYZ", Converters.RemoveSerieNr("Serie XYZ (II), 2e druk"));
72+
Assert.AreEqual("Serie XYZ", Converters.RemoveSerieNr("Serie XYZ (II), 3e druk"));
73+
74+
Assert.AreEqual("Serie XYZ", Converters.RemoveSerieNr("Serie XYZ (II) / LHR"));
75+
Assert.AreEqual("Serie XYZ", Converters.RemoveSerieNr("Serie XYZ IIIA"));
76+
Assert.AreEqual("Serie XYZ", Converters.RemoveSerieNr("Serie XYZ IIIB"));
77+
Assert.AreEqual("Serie XYZ", Converters.RemoveSerieNr("Serie XYZ - deel 1"));
78+
Assert.AreEqual("Serie XYZ", Converters.RemoveSerieNr("Serie XYZ 1500-1600"));
79+
80+
2081

2182
}
2283
}

BookCollection/BookCollection.csproj

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -554,7 +554,6 @@
554554
</ItemGroup>
555555
<ItemGroup>
556556
<Content Include="packages.config" />
557-
<None Include="Project_Readme.html" />
558557
</ItemGroup>
559558
<PropertyGroup>
560559
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>

BookCollection/Controllers/AuthorsController.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public ActionResult Details(int? id)
5959
{
6060
if (id == null)
6161
{
62-
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
62+
return RedirectToAction("Index");
6363
}
6464
Author author = db.Authors.Find(id);
6565
if (author == null)

BookCollection/Controllers/BooksController.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ public ActionResult Details(int? id)
133133
{
134134
if (id == null)
135135
{
136-
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
136+
return RedirectToAction("Index");
137137
}
138138
// TODO: simplify
139139
Book book = _db.Query<Book>().FirstOrDefault(b => b.BookID == id);

BookCollection/Controllers/CategoriesController.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public ActionResult Details(int? id)
5959
{
6060
if (id == null)
6161
{
62-
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
62+
return RedirectToAction("Index");
6363
}
6464
Category category = db.Categories.Find(id);
6565
if (category == null)

BookCollection/Controllers/PublishersController.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public ActionResult Details(int? id)
5959
{
6060
if (id == null)
6161
{
62-
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
62+
return RedirectToAction("Index");
6363
}
6464
Publisher publisher = db.Publishers.Find(id);
6565
if (publisher == null)

BookCollection/Controllers/SubjectsController.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public ActionResult Details(int? id)
5959
{
6060
if (id == null)
6161
{
62-
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
62+
return RedirectToAction("Index");
6363
}
6464
Subject subject = db.Subjects.Find(id);
6565
if (subject == null)

BookCollection/Helpers/BC.cs

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,34 @@ public static MvcHtmlString BoolIcon(bool target, string toolTipTrue = "", strin
2525
return new MvcHtmlString(String.Format(spanTemplate, "remove", tooltip));
2626
}
2727

28+
public static MvcHtmlString IconButton(string action, string iconname, string linktext, int ID = -1)
29+
{
30+
object routeVal = (ID == -1 ? null : new { id = ID });
31+
return IconButton("", action, iconname, linktext, routeVal);
32+
}
33+
34+
public static MvcHtmlString IconButton(string controller, string action, string iconname, string linktext, int ID = -1)
35+
{
36+
object routeVal = (ID == -1 ? null : new { id = ID });
37+
return IconButton("", action, iconname, linktext, routeVal);
38+
}
39+
40+
public static MvcHtmlString IconButton(string controller, string action, string iconname, string linktext, object routeValues)
41+
{
42+
//<a href="@Url.Action("Edit", new { id = item.BookID })" class="btn btn-primary btn-xs">
43+
//<span class="glyphicon glyphicon-pencil" aria-hidden="true"></span> Edit</a>
44+
45+
string spanTemplate = "<span class=\"glyphicon glyphicon-{0}\" aria-hidden=\"true\"></span>";
46+
string iconHtml = string.IsNullOrEmpty(iconname) ? "" : string.Format(spanTemplate, iconname);
47+
48+
var urlHelper = new UrlHelper(HttpContext.Current.Request.RequestContext);
49+
string url = urlHelper.Action(action, controller, routeValues);
50+
51+
string linkTemplate = "<a href=\"{0}\" class=\"btn btn-primary btn-xs\">{1} {2}</a>";
52+
53+
return new MvcHtmlString(String.Format(linkTemplate, url, iconHtml, linktext));
54+
}
55+
2856
public static MvcHtmlString MaterialBadge(Models.Material ma)
2957
{
3058

Lines changed: 75 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,92 @@
11
using System;
22
using System.Collections.Generic;
33
using System.Linq;
4+
using System.Text.RegularExpressions;
45
using System.Web;
56

67
namespace BookCollection.Helpers
78
{
89
public class Converters
910
{
10-
public static string RenoveSerieNr(string input)
11+
public static string RemoveSerieNr(string input)
1112
{
1213
if (string.IsNullOrEmpty(input))
1314
return "";
14-
string output = input;
15+
string output = input.Trim();
16+
//Replace trailing / LHR
17+
output = Regex.Replace(output, @"\s?/\s?(\()?(LHR|lhr)(\))?$", "");
18+
//Replace trailing IIIA / IIIB
19+
output = Regex.Replace(output, @"(\()?[IVX]+[A-Z](\))?$", "");
20+
//Replace druk: , - deel 1
21+
output = Regex.Replace(output, @"\s?-\s?(\()?\s(deel)\s[0-9]+(\))?$", "");
22+
//Replace yearrange: 1500-1600
23+
output = Regex.Replace(output, @"\s[0-9]+-[0-9]+(\))?$", "");
24+
//Replace druk: , 2e druk
25+
output = Regex.Replace(output, @"\s?,\s?(\()?[0-9]*e\sdruk(\))?$", "");
26+
//Replace Roman numerals on end
27+
output = Regex.Replace(output, @"(\()?[IXV]+(\))?$", "");
28+
//Replace normal numerals on end
29+
output = Regex.Replace(output, @"(\()?[0-9]+(\))?$", "");
1530

31+
return output.Trim();
32+
}
33+
34+
public static string ExtractSerieNrEndCleanup(string input)
35+
{
36+
return input.Replace("(", "").Replace(")", "").Replace(",", " ").Replace("-", "").Replace(" ", " ").Trim();
37+
}
38+
public static string ExtractSerieNr(string input)
39+
{
40+
// trailing / LHR
41+
Match m = Regex.Match(input, @"\s?/\s?(\()?(LHR|lhr)(\))?$");
42+
if (m.Success)
43+
{
44+
//Replace trailing / LHR
45+
input = Regex.Replace(input, @"\s?/\s?(\()?(LHR|lhr)(\))?$", "");
46+
}
47+
48+
49+
// trailing IIIA / IIIB
50+
m = Regex.Match(input, @"(\()?[IVX]+[A-Z](\))?$");
51+
if (m.Success)
52+
return ExtractSerieNrEndCleanup(m.Value);
53+
54+
//Replace druk: , - deel 1
55+
m = Regex.Match(input, @"\s?-\s?(\()?\s(deel)\s[0-9]+(\))?$");
56+
if (m.Success)
57+
return ExtractSerieNrEndCleanup(m.Value);
58+
59+
// druk: II, 2e druk
60+
m = Regex.Match(input, @"\s?(\()?(I)+(\)),??\s?(\()?[0-9]*e\sdruk(\))?$");
61+
if (m.Success)
62+
return ExtractSerieNrEndCleanup(m.Value);
63+
64+
65+
// druk: , 2e druk
66+
m = Regex.Match(input, @"\s?,\s?(\()?[0-9]*e\sdruk(\))?$");
67+
if (m.Success)
68+
return ExtractSerieNrEndCleanup(m.Value);
69+
70+
// yearrange: 1500-1600
71+
m = Regex.Match(input, @"\s[0-9]+-[0-9]+(\))?$");
72+
if (m.Success)
73+
{
74+
string temp = m.Value.Replace("-", " t/m ");
75+
return ExtractSerieNrEndCleanup(temp);
76+
}
77+
78+
// Roman numerals on end
79+
m = Regex.Match(input, @"(\()?[IXV]+(\))?$");
80+
if (m.Success)
81+
return ExtractSerieNrEndCleanup(m.Value);
82+
83+
// normal numerals on end
84+
m = Regex.Match(input, @"(\()?[0-9]+(\))?$");
85+
if (m.Success)
86+
return ExtractSerieNrEndCleanup(m.Value);
87+
88+
return "";
1689

17-
return output;
1890
}
1991
}
2092
}

BookCollection/Models/Book.cs

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@
77

88
namespace BookCollection.Models
99
{
10-
11-
1210
public class Book
1311
{
1412
public Book()
@@ -29,7 +27,7 @@ public string MainAuthor
2927
{
3028
get
3129
{
32-
Author main = Authors.FirstOrDefault();
30+
Author main = Authors == null ? null : Authors.FirstOrDefault();
3331
return main == null ? string.Empty : main.Fullname;
3432
}
3533
}
@@ -39,7 +37,7 @@ public int MainAuthorID
3937
{
4038
get
4139
{
42-
Author main = Authors.FirstOrDefault();
40+
Author main = Authors == null ? null : Authors.FirstOrDefault();
4341
return main == null ? 0 : main.AuthorID;
4442
}
4543
}
@@ -61,13 +59,22 @@ public int MainAuthorID
6159
public int? ActualPrintYear { get; set; }
6260

6361
[Required]
64-
6562
public Language Language { get; set; }
6663
[Required]
6764
public Material Material { get; set; }
6865

66+
[Required]
67+
public Condition Condition { get; set; }
68+
69+
public string Location { get; set; }
70+
71+
[Range(0,5)]
72+
public int? Rating { get; set; }
73+
6974
public string Serie { get; set; }
75+
public string CodeWithinSerie { get; set; }
7076
public string Code { get; set; }
77+
public string SortField { get; set; }
7178
public bool Read { get; set; }
7279
public int Pages { get; set; }
7380
public string ISBN { get; set; }
@@ -77,6 +84,8 @@ public int MainAuthorID
7784

7885
public string CoverLink { get; set; }
7986

87+
public string ReviewNote { get; set; }
88+
8089
public int AuthorID { get; set; }
8190
public int CategoryID { get; set; }
8291
public int PublisherID { get; set; }

0 commit comments

Comments
 (0)