diff --git a/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests.Manual/App.config b/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests.Manual/App.config index 019932d0..fb911446 100644 --- a/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests.Manual/App.config +++ b/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests.Manual/App.config @@ -1,4 +1,4 @@ - +
@@ -9,21 +9,17 @@ - + - + - + - + - + - \ No newline at end of file + diff --git a/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests.Manual/BookShop.AcceptanceTests.Manual.csproj b/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests.Manual/BookShop.AcceptanceTests.Manual.csproj index 0f494c36..fbb94df3 100644 --- a/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests.Manual/BookShop.AcceptanceTests.Manual.csproj +++ b/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests.Manual/BookShop.AcceptanceTests.Manual.csproj @@ -1,5 +1,5 @@  - + Debug AnyCPU @@ -10,8 +10,28 @@ Properties BookShop.AcceptanceTests.Manual BookShop.AcceptanceTests.Manual - v3.5 + v4.0 512 + + + 3.5 + + publish\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 0 + 1.0.0.%2a + false + false + true + true @@ -21,6 +41,7 @@ DEBUG;TRACE prompt 4 + AllRules.ruleset pdbonly @@ -29,6 +50,7 @@ TRACE prompt 4 + AllRules.ruleset @@ -94,6 +116,23 @@ ManualStepForm.cs + + + False + .NET Framework 3.5 SP1 Client Profile + false + + + False + .NET Framework 3.5 SP1 + true + + + False + Windows Installer 3.1 + true + + - + - + - + - + - \ No newline at end of file + diff --git a/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests.MvcIntegration/BookShop.AcceptanceTests.MvcIntegration.csproj b/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests.MvcIntegration/BookShop.AcceptanceTests.MvcIntegration.csproj index 226bd279..7aabe534 100644 --- a/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests.MvcIntegration/BookShop.AcceptanceTests.MvcIntegration.csproj +++ b/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests.MvcIntegration/BookShop.AcceptanceTests.MvcIntegration.csproj @@ -1,5 +1,5 @@  - + Debug AnyCPU @@ -10,8 +10,28 @@ Properties BookShop.AcceptanceTests.MvcIntegration BookShop.AcceptanceTests.MvcIntegration - v3.5 + v4.0 512 + + + 3.5 + + publish\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 0 + 1.0.0.%2a + false + false + true + true @@ -21,6 +41,7 @@ DEBUG;TRACE prompt 4 + AllRules.ruleset pdbonly @@ -29,6 +50,7 @@ TRACE prompt 4 + AllRules.ruleset @@ -89,6 +111,23 @@ MvcIntegrationTestFramework + + + False + .NET Framework 3.5 SP1 Client Profile + false + + + False + .NET Framework 3.5 SP1 + true + + + False + Windows Installer 3.1 + true + + - + - + - + - + - \ No newline at end of file + diff --git a/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests.Selenium/BookShop.AcceptanceTests.Selenium.csproj b/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests.Selenium/BookShop.AcceptanceTests.Selenium.csproj index c94475b7..de2e8faa 100644 --- a/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests.Selenium/BookShop.AcceptanceTests.Selenium.csproj +++ b/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests.Selenium/BookShop.AcceptanceTests.Selenium.csproj @@ -1,5 +1,5 @@  - + Debug AnyCPU @@ -10,8 +10,28 @@ Properties BookShop.AcceptanceTests.Selenium BookShop.AcceptanceTests.Selenium - v3.5 + v4.0 512 + + + 3.5 + + publish\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 0 + 1.0.0.%2a + false + false + true + true @@ -21,6 +41,7 @@ DEBUG;TRACE prompt 4 + AllRules.ruleset pdbonly @@ -29,6 +50,7 @@ TRACE prompt 4 + AllRules.ruleset @@ -89,6 +111,23 @@ Bookshop + + + False + .NET Framework 3.5 SP1 Client Profile + false + + + False + .NET Framework 3.5 SP1 + true + + + False + Windows Installer 3.1 + true + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests.WatiN/BookShop.AcceptanceTests.WatiN.csproj b/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests.WatiN/BookShop.AcceptanceTests.WatiN.csproj new file mode 100644 index 00000000..2feb6972 --- /dev/null +++ b/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests.WatiN/BookShop.AcceptanceTests.WatiN.csproj @@ -0,0 +1,90 @@ + + + + Debug + AnyCPU + 8.0.30703 + 2.0 + {5D9AA484-8DC0-4333-8C11-B949C38E00B1} + Library + Properties + BookShop.AcceptanceTests.WatiN + BookShop.AcceptanceTests.WatiN + v4.0 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\lib\nunit.framework.dll + + + + + + + + + + + + ..\lib\WatiN.Core.dll + + + False + $(ProgramFiles)\TechTalk\SpecFlow\TechTalk.SpecFlow.dll + + + + + + + + + + + + + US01_BookSearch.feature + True + True + + + + + + SpecFlowSingleFileGenerator + US01_BookSearch.feature.cs + + + + + {B75CFB7F-0D21-4C39-8550-F1C7BDEEDC50} + Bookshop + + + + + \ No newline at end of file diff --git a/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests.WatiN/Properties/AssemblyInfo.cs b/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests.WatiN/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..909d5e95 --- /dev/null +++ b/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests.WatiN/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("BookShop.AcceptanceTests.WatiN")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("BookShop.AcceptanceTests.WatiN")] +[assembly: AssemblyCopyright("Copyright © 2010")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("6d7ff727-834f-4666-b749-6c4af06968dc")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests.WatiN/StepDefinitions/BookSteps.cs b/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests.WatiN/StepDefinitions/BookSteps.cs new file mode 100644 index 00000000..44012cd2 --- /dev/null +++ b/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests.WatiN/StepDefinitions/BookSteps.cs @@ -0,0 +1,38 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using BookShop.AcceptanceTests.Support; +using Bookshop.Controllers; +using Bookshop.Models; +using NUnit.Framework; +using TechTalk.SpecFlow; + +namespace BookShop.AcceptanceTests.StepDefinitions +{ + [Binding] + public class BookSteps + { + public static readonly ReferenceBookList ReferenceBooks = new ReferenceBookList(); + + [BeforeScenario] + public void CleanReferenceBooks() + { + ReferenceBooks.Clear(); + } + + [Given(@"the following books")] + public void GivenTheFollowingBooks(Table table) + { + var db = new BookShopEntities(); + foreach (var row in table.Rows) + { + Book book = new Book { Author = row["Author"], Title = row["Title"], Price = Convert.ToDecimal(row["Price"]) }; + if (table.Header.Contains("Id")) + ReferenceBooks.Add(row["Id"], book); + db.AddToBooks(book); + } + db.SaveChanges(); + } + } +} diff --git a/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests.WatiN/StepDefinitions/SearchSteps.cs b/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests.WatiN/StepDefinitions/SearchSteps.cs new file mode 100644 index 00000000..bce7ffb6 --- /dev/null +++ b/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests.WatiN/StepDefinitions/SearchSteps.cs @@ -0,0 +1,52 @@ +using System.Collections.Generic; +using System.Linq; +using BookShop.AcceptanceTests.Support; +using BookShop.AcceptanceTests.WatiN.Support; +using Bookshop.Models; +using NUnit.Framework; +using TechTalk.SpecFlow; +using WatiN.Core; + +namespace BookShop.AcceptanceTests.WatiN.StepDefinitions +{ + [Binding] + public class SearchSteps + { + [When(@"I perform a simple search on '(.*)'")] + public void PerformSimpleSearch(string title) + { + WebBrowser.Current.GoToThePage("Home"); + WebBrowser.Current.TextFields.First(Find.ById("searchTerm")).TypeText(title); + WebBrowser.Current.Buttons.First(Find.ByValue("Search")).Click(); + //WebBrowser.Current.WaitForPageToLoad("30000"); + } + + [Then(@"the book list should exactly contain book '(.*)'")] + public void ThenTheBookListShouldExactlyContainBook(string title) + { + ThenTheBookListShouldExactlyContainBooks(title); + } + + [Then(@"the book list should exactly contain books (.*)")] + public void ThenTheBookListShouldExactlyContainBooks(string titleList) + { + var titles = titleList.Split(',').Select(t => t.Trim().Trim('\'')); + + var table = WebBrowser.Current.Tables.First(); + var itemCount = table.TableRows.Count; + var books = new List(); + const int headerCount = 1; + for (int i = headerCount; i < itemCount; i++) + { + var tableRow = table.TableRows[i]; + string title = tableRow.TableCells.First(Find.ByClass("title")).Text; + string author = tableRow.TableCells.First(Find.ByClass("author")).Text; + books.Add(new Book { Title = title, Author = author }); + } + + foreach (var title in titles) + CustomAssert.Any(books, b => b.Title == title); + Assert.AreEqual(titles.Count(), books.Count, "The list contains other books too"); + } + } +} \ No newline at end of file diff --git a/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests.WatiN/Support/CustomAssert.cs b/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests.WatiN/Support/CustomAssert.cs new file mode 100644 index 00000000..7fed4ea5 --- /dev/null +++ b/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests.WatiN/Support/CustomAssert.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using NUnit.Framework; + +namespace BookShop.AcceptanceTests.Support +{ + public static class CustomAssert + { + public static void Any(IEnumerable items, Func predicate) + { + Assert.IsTrue(items.Any(predicate), "The collection does not contain the expected item"); + } + } +} diff --git a/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests.WatiN/Support/DatabaseTools.cs b/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests.WatiN/Support/DatabaseTools.cs new file mode 100644 index 00000000..3225c0fe --- /dev/null +++ b/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests.WatiN/Support/DatabaseTools.cs @@ -0,0 +1,30 @@ +using System; +using System.Linq; +using Bookshop.Models; +using TechTalk.SpecFlow; + +namespace BookShop.AcceptanceTests.Support +{ + [Binding] + public class DatabaseTools + { + [BeforeScenario] + public void CleanDatabase() + { + var db = new BookShopEntities(); + foreach (var lineItem in db.OrderLines) + { + db.DeleteObject(lineItem); + } + foreach (var order in db.Orders) + { + db.DeleteObject(order); + } + foreach (var book in db.Books) + { + db.DeleteObject(book); + } + db.SaveChanges(); + } + } +} diff --git a/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests.WatiN/Support/ReferenceBookList.cs b/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests.WatiN/Support/ReferenceBookList.cs new file mode 100644 index 00000000..339c0b4a --- /dev/null +++ b/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests.WatiN/Support/ReferenceBookList.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Bookshop.Models; +using NUnit.Framework; + +namespace BookShop.AcceptanceTests.Support +{ + public class ReferenceBookList : Dictionary + { + public Book GetById(string bookId) + { + var result = this[bookId.Trim()]; + Assert.IsNotNull(result, "no reference book with id: " + bookId); + return result; + } + } +} diff --git a/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests.WatiN/Support/WatiNSteps.cs b/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests.WatiN/Support/WatiNSteps.cs new file mode 100644 index 00000000..ae8704af --- /dev/null +++ b/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests.WatiN/Support/WatiNSteps.cs @@ -0,0 +1,20 @@ +using System; +using System.Configuration; +using System.Threading; +using TechTalk.SpecFlow; +using WatiN.Core; + +namespace BookShop.AcceptanceTests.WatiN.Support +{ + static public class WatiNStepsExtensions + { + public static void GoToThePage(this Browser browser, string page) + { + var rootUrl = new Uri(ConfigurationManager.AppSettings["AppUrl"]); + var absoluteUrl = new Uri(rootUrl, page); + browser.GoTo(absoluteUrl); + //browser.WaitForComplete(); + //Thread.Sleep(500); + } + } +} diff --git a/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests.WatiN/Support/WebBrowser.cs b/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests.WatiN/Support/WebBrowser.cs new file mode 100644 index 00000000..59d52099 --- /dev/null +++ b/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests.WatiN/Support/WebBrowser.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using TechTalk.SpecFlow; +using WatiN.Core; + +namespace BookShop.AcceptanceTests.WatiN.Support +{ + [Binding] + public class WebBrowser + { + public static Browser Current + { + get + { + if (!ScenarioContext.Current.ContainsKey("browser")) + ScenarioContext.Current["browser"] = new IE(); + return (Browser)ScenarioContext.Current["browser"]; + } + } + + [AfterScenario] + public static void Close() + { + if (ScenarioContext.Current.ContainsKey("browser")) + WebBrowser.Current.Close(); + } + } +} diff --git a/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests.WatiN/US01_BookSearch.feature b/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests.WatiN/US01_BookSearch.feature new file mode 100644 index 00000000..db9b94b7 --- /dev/null +++ b/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests.WatiN/US01_BookSearch.feature @@ -0,0 +1,33 @@ +Feature: US01 - Book Search + As a potential customer + I want to search for books by a simple string + So that I can easily allocate books by something I remember from them. + +Background: + Given the following books + |Author |Title |Price | + |Martin Fowler |Analysis Patterns |50.20 | + |Eric Evans |Domain Driven Design |46.34 | + |Ted Pattison |Inside Windows SharePoint Services |31.49 | + |Gojko Adzic |Bridging the Communication Gap |24.75 | + +@web +Scenario: Title should be matched + When I perform a simple search on 'Domain' + Then the book list should exactly contain book 'Domain Driven Design' + +@web +Scenario: Space should be treated as multiple OR search + When I perform a simple search on 'Windows Communication' + Then the book list should exactly contain books 'Inside Windows SharePoint Services', 'Bridging the Communication Gap' + +@web +@alternative_syntax +Scenario Outline: Simple search (scenario outline syntax) + When I perform a simple search on '' + Then the book list should exactly contain books + + Examples: + |search phrase |books | + |Domain |'Domain Driven Design' | + |Windows Communication |'Inside Windows SharePoint Services', 'Bridging the Communication Gap' | diff --git a/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests.WatiN/US01_BookSearch.feature.cs b/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests.WatiN/US01_BookSearch.feature.cs new file mode 100644 index 00000000..a3bbb469 --- /dev/null +++ b/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests.WatiN/US01_BookSearch.feature.cs @@ -0,0 +1,155 @@ +// ------------------------------------------------------------------------------ +// +// This code was generated by SpecFlow (http://www.specflow.org/). +// SpecFlow Version:1.3.0.0 +// Runtime Version:4.0.30319.1 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +// ------------------------------------------------------------------------------ +#region Designer generated code +namespace BookShop.AcceptanceTests.Selenium +{ + using TechTalk.SpecFlow; + + + [System.CodeDom.Compiler.GeneratedCodeAttribute("TechTalk.SpecFlow", "1.3.0.0")] + [System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [NUnit.Framework.TestFixtureAttribute()] + [NUnit.Framework.DescriptionAttribute("US01 - Book Search")] + public partial class US01_BookSearchFeature + { + + private static TechTalk.SpecFlow.ITestRunner testRunner; + +#line 1 "US01_BookSearch.feature" +#line hidden + + [NUnit.Framework.TestFixtureSetUpAttribute()] + public virtual void FeatureSetup() + { + testRunner = TechTalk.SpecFlow.TestRunnerManager.GetTestRunner(); + TechTalk.SpecFlow.FeatureInfo featureInfo = new TechTalk.SpecFlow.FeatureInfo(new System.Globalization.CultureInfo("en-US"), "US01 - Book Search", "As a potential customer\r\nI want to search for books by a simple string\r\nSo that I" + + " can easily allocate books by something I remember from them.", ((string[])(null))); + testRunner.OnFeatureStart(featureInfo); + } + + [NUnit.Framework.TestFixtureTearDownAttribute()] + public virtual void FeatureTearDown() + { + testRunner.OnFeatureEnd(); + testRunner = null; + } + + public virtual void ScenarioSetup(TechTalk.SpecFlow.ScenarioInfo scenarioInfo) + { + testRunner.OnScenarioStart(scenarioInfo); + this.FeatureBackground(); + } + + [NUnit.Framework.TearDownAttribute()] + public virtual void ScenarioTearDown() + { + testRunner.OnScenarioEnd(); + } + + public virtual void FeatureBackground() + { +#line 6 +#line hidden + TechTalk.SpecFlow.Table table1 = new TechTalk.SpecFlow.Table(new string[] { + "Author", + "Title", + "Price"}); + table1.AddRow(new string[] { + "Martin Fowler", + "Analysis Patterns", + "50.20"}); + table1.AddRow(new string[] { + "Eric Evans", + "Domain Driven Design", + "46.34"}); + table1.AddRow(new string[] { + "Ted Pattison", + "Inside Windows SharePoint Services", + "31.49"}); + table1.AddRow(new string[] { + "Gojko Adzic", + "Bridging the Communication Gap", + "24.75"}); +#line 7 +testRunner.Given("the following books", ((string)(null)), table1); +#line hidden + } + + [NUnit.Framework.TestAttribute()] + [NUnit.Framework.DescriptionAttribute("Title should be matched")] + [NUnit.Framework.CategoryAttribute("web")] + public virtual void TitleShouldBeMatched() + { + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Title should be matched", new string[] { + "web"}); +#line 15 +this.ScenarioSetup(scenarioInfo); +#line 16 +testRunner.When("I perform a simple search on \'Domain\'"); +#line 17 +testRunner.Then("the book list should exactly contain book \'Domain Driven Design\'"); +#line hidden + testRunner.CollectScenarioErrors(); + } + + [NUnit.Framework.TestAttribute()] + [NUnit.Framework.DescriptionAttribute("Space should be treated as multiple OR search")] + [NUnit.Framework.CategoryAttribute("web")] + public virtual void SpaceShouldBeTreatedAsMultipleORSearch() + { + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Space should be treated as multiple OR search", new string[] { + "web"}); +#line 20 +this.ScenarioSetup(scenarioInfo); +#line 21 +testRunner.When("I perform a simple search on \'Windows Communication\'"); +#line 22 +testRunner.Then("the book list should exactly contain books \'Inside Windows SharePoint Services\', " + + "\'Bridging the Communication Gap\'"); +#line hidden + testRunner.CollectScenarioErrors(); + } + + public virtual void SimpleSearchScenarioOutlineSyntax(string searchPhrase, string books) + { + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Simple search (scenario outline syntax)", new string[] { + "web", + "alternative_syntax"}); +#line 26 +this.ScenarioSetup(scenarioInfo); +#line 27 +testRunner.When(string.Format("I perform a simple search on \'{0}\'", searchPhrase)); +#line 28 +testRunner.Then(string.Format("the book list should exactly contain books {0}", books)); +#line hidden + testRunner.CollectScenarioErrors(); + } + + [NUnit.Framework.TestAttribute()] + [NUnit.Framework.DescriptionAttribute("Simple search (scenario outline syntax)")] + [NUnit.Framework.CategoryAttribute("web")] + [NUnit.Framework.CategoryAttribute("alternative_syntax")] + public virtual void SimpleSearchScenarioOutlineSyntax_Domain() + { + this.SimpleSearchScenarioOutlineSyntax("Domain", "\'Domain Driven Design\'"); + } + + [NUnit.Framework.TestAttribute()] + [NUnit.Framework.DescriptionAttribute("Simple search (scenario outline syntax)")] + [NUnit.Framework.CategoryAttribute("web")] + [NUnit.Framework.CategoryAttribute("alternative_syntax")] + public virtual void SimpleSearchScenarioOutlineSyntax_WindowsCommunication() + { + this.SimpleSearchScenarioOutlineSyntax("Windows Communication", "\'Inside Windows SharePoint Services\', \'Bridging the Communication Gap\'"); + } + } +} +#endregion diff --git a/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests/BookShop.AcceptanceTests.csproj b/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests/BookShop.AcceptanceTests.csproj index 56025beb..744ba143 100644 --- a/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests/BookShop.AcceptanceTests.csproj +++ b/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests/BookShop.AcceptanceTests.csproj @@ -1,4 +1,5 @@ - + + Debug AnyCPU @@ -9,9 +10,28 @@ Properties BookShop.AcceptanceTests BookShop.AcceptanceTests - v3.5 + v4.0 512 {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + + + 3.5 + + publish\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 0 + 1.0.0.%2a + false + false + true true @@ -21,6 +41,7 @@ DEBUG;TRACE prompt 4 + AllRules.ruleset pdbonly @@ -29,11 +50,10 @@ TRACE prompt 4 + AllRules.ruleset - - True - + False ..\lib\Moq.dll @@ -114,6 +134,28 @@ Bookshop + + + False + Microsoft .NET Framework 4 %28x86 and x64%29 + true + + + False + .NET Framework 3.5 SP1 Client Profile + false + + + False + .NET Framework 3.5 SP1 + false + + + False + Windows Installer 3.1 + true + + - + - - - + + + @@ -71,7 +71,7 @@ - + @@ -126,7 +126,7 @@ - + @@ -166,28 +166,28 @@ - + - + - + - + - + - + diff --git a/ASP.NET-MVC/BookShop/Bookshop/Web.config b/ASP.NET-MVC/BookShop/Bookshop/Web.config index 68dea04f..73dba079 100644 --- a/ASP.NET-MVC/BookShop/Bookshop/Web.config +++ b/ASP.NET-MVC/BookShop/Bookshop/Web.config @@ -8,44 +8,26 @@ \Windows\Microsoft.Net\Framework\v2.x\Config --> - - - -
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + diff --git a/ASP.NET-MVC/BookShop/LocalTestRun.testrunconfig b/ASP.NET-MVC/BookShop/LocalTestRun.testrunconfig index 33476043..3083169d 100644 --- a/ASP.NET-MVC/BookShop/LocalTestRun.testrunconfig +++ b/ASP.NET-MVC/BookShop/LocalTestRun.testrunconfig @@ -1,5 +1,5 @@ - - + + This is a default test run configuration for a local test run. \ No newline at end of file diff --git a/ASP.NET-MVC/BookShop/ReadMe.txt b/ASP.NET-MVC/BookShop/ReadMe.txt index 7f46c4f4..24566e16 100644 --- a/ASP.NET-MVC/BookShop/ReadMe.txt +++ b/ASP.NET-MVC/BookShop/ReadMe.txt @@ -9,9 +9,7 @@ You can find more information about SpecFlow at http://www.specflow.org/. Prerequisites to run the application ==================================== -- Visual Studio 2008 or Visual Studio 2010 -- ASP.NET MVC2 RTM (only for Visual Studio 2008) - (http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=c9ba1fe1-3ba8-439a-9e21-def90a8615a9) +- Visual Studio 2010 - Microsoft SQL Server 2005 or higher (any editions) - SpecFlow 1.3 or higher (http://www.specflow.org/) - Optionally: cuke4vs - syntax coloring and intellisense for SpecFlow files @@ -36,19 +34,6 @@ Setup Application - Set the "BookShop" project as startup project and run the application. You should see some books on the start page of the app. -Upgrade Solution to VS2010 -========================== - -The solution can be upgraded to VS2010 with a few steps: -- Open solution in VS2010 and let Visual Studio upgrade the solution. - Let the wizard upgrade all projects to .NET 4.0 (choose "yes"). -- Upgrade the projects in the "Alternative Integrations" folder to .NET 4.0 - manually (change target framework in project properties). The upgrade wizard - in VS2010 RTM skips these projects unfortunately. -- Select the feature files in solution explorer and invoke "Run Custom Tool" - command from the context menu (you can select multiple files within a - project). - There will be two warnings still in the BookShop.edmx file, but those can be ignored. diff --git a/ASP.NET-MVC/BookShop/lib/Interop.SHDocVw.dll b/ASP.NET-MVC/BookShop/lib/Interop.SHDocVw.dll new file mode 100644 index 00000000..9eef31ee Binary files /dev/null and b/ASP.NET-MVC/BookShop/lib/Interop.SHDocVw.dll differ diff --git a/ASP.NET-MVC/BookShop/lib/MvcIntegrationTestFramework/MvcIntegrationTestFramework.csproj b/ASP.NET-MVC/BookShop/lib/MvcIntegrationTestFramework/MvcIntegrationTestFramework.csproj index d16725f5..2ba524ee 100644 --- a/ASP.NET-MVC/BookShop/lib/MvcIntegrationTestFramework/MvcIntegrationTestFramework.csproj +++ b/ASP.NET-MVC/BookShop/lib/MvcIntegrationTestFramework/MvcIntegrationTestFramework.csproj @@ -1,5 +1,5 @@  - + Debug AnyCPU @@ -10,8 +10,28 @@ Properties MvcIntegrationTestFramework MvcIntegrationTestFramework - v3.5 + v4.0 512 + + + 3.5 + + publish\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 0 + 1.0.0.%2a + false + false + true + true @@ -21,6 +41,7 @@ DEBUG;TRACE prompt 4 + AllRules.ruleset pdbonly @@ -29,6 +50,7 @@ TRACE prompt 4 + AllRules.ruleset @@ -67,6 +89,23 @@ + + + False + .NET Framework 3.5 SP1 Client Profile + false + + + False + .NET Framework 3.5 SP1 + true + + + False + Windows Installer 3.1 + true + +