public void FluentNavigation_CSharp_script_succeedes() { string script = @" var searchResult = self .WhereTypeIs(""Task"") .AtMost(2) .FollowingLinks(""*""); return searchResult; "; IWorkItem startPoint; var repository = MakeRepository(out startPoint); var logger = Substitute.For <ILogEvents>(); repository.Logger = logger; var engine = new CSharpScriptEngine(repository, logger, false); engine.LoadAndRun("test", script, startPoint); var expected = new FluentQuery(startPoint); expected.WorkItemType = "Task"; expected.Levels = 2; expected.LinkType = "*"; logger.Received().ResultsFromScriptRun("test", expected); }
public JsonResult Tags() { using (var db = new FluentQuery(_dbFactory.OpenDbConnection())) { var tags = db.Select<Recipe>().SelectMany(r => (r.Tags ?? "").Split(new[] {",", ";"}, StringSplitOptions.RemoveEmptyEntries)).Distinct().OrderBy(t => t); return Json(tags.ToList(), JsonRequestBehavior.AllowGet); } }
public ActionResult Ingredients(int parentId) { using (var db = new FluentQuery(_dbFactory.OpenDbConnection())) { var parent = db.Single<Recipe>(s => s.Id == parentId); return View(new { parentId = parent.Id, parentName = parent.Name }.ToExpando()); } }
public void Should_create_FROM_instruction() { var sampleEntity1 = new SampleEntity1(); var fluentQuery = new FluentQuery(); var select = fluentQuery.From(sampleEntity1); select.ToString().Should().Be(" FROM SampleEntityOne \r\n"); }
public void Should_create_SELECT_instruction() { var sampleEntity1 = new SampleEntity1(); var fluentQuery = new FluentQuery(); var select = fluentQuery.Select(sampleEntity1.Id, sampleEntity1.Name); select.ToString().Should().Be(" SELECT SampleEntityOne.Id , SampleEntityOne.Name \r\n"); }
public ActionResult PrintShoppingList(int weekNumber, string store, string type = "html") { var number = Extension.GetNextWeekNumber(weekNumber); using (var db = new FluentQuery(_dbFactory.OpenDbConnection())) { var accessor = new ShoppingAccessor(db); var shoppingList = accessor.GetShoppingListForStore(number, store); return type == "json" ? JsonCamelCase(shoppingList) : (ActionResult)View(shoppingList); } }
public void Entity_Is_Not_Mapped__Uses_NullTable_For_Parts() { // Arrange var db = Substitute.For <IDb>(); var reason = Substitute.For <IMsg>(); var mapper = Substitute.For <IEntityMapper>(); mapper.GetTableMapFor <TestEntity>() .Returns(F.None <ITableMap>(reason)); var log = Substitute.For <ILog>(); // Act var result = new FluentQuery <TestEntity, TestId>(db, mapper, log); // Assert Assert.IsType <NullTable>(result.Parts.From); }
public void UpdateAdminMemberNameFluentQuery() { FluentQuery query = null; query = new FluentQuery("Member") .Where( Op.Get("ID", "Member:20") ) .Select( "Name" ) .Success(assets => { dynamic member = assets.FirstOrDefault(); if (member != null) { Console.WriteLine("Name is currently: " + member.Name); var newName = string.Empty; while (newName == string.Empty) { newName = ReadString("Please enter a new name and hit enter"); } member.Name = newName; var asset = (AssetClassBase)member; asset.SaveChanges(); } } ) .WhenEmpty(() => Console.WriteLine("No results found...")) .Execute(); Console.WriteLine(); Console.WriteLine("Saved member, now requerying..."); Console.WriteLine(); query.Execute(assets => { dynamic memberNow = assets.FirstOrDefault(); if (memberNow != null) { Console.WriteLine("Name is now: " + memberNow.Name); } }); }
public void Entity_Is_Not_Mapped__Adds_Reason_To_Errors() { // Arrange var db = Substitute.For <IDb>(); var reason = Substitute.For <IMsg>(); var mapper = Substitute.For <IEntityMapper>(); mapper.GetTableMapFor <TestEntity>() .Returns(F.None <ITableMap>(reason)); var log = Substitute.For <ILog>(); // Act var result = new FluentQuery <TestEntity, TestId>(db, mapper, log); // Assert Assert.Collection(result.Errors, x => Assert.Same(reason, x) ); }
public void Can_Generate_Pattern_With_All_Tokens_And_Text_Matching() { var expected = " Text(MatchThis) Down Date Right Town Up Text Left"; var query = new FluentQuery(new Contracts.Page(), new Interpreter()) { Script = "" } .Match("Text", "MatchThis") .Down() .Match("Date") .Right() .Match("Town") .Up() .Match("Text") .Left(); Assert.AreEqual(expected, query.Script); }
public void Entity_Is_Mapped__Uses_Table_For_Parts() { // Arrange var db = Substitute.For <IDb>(); var map = Substitute.For <ITableMap>(); var table = Substitute.For <ITable>(); map.Table .Returns(table); var mapper = Substitute.For <IEntityMapper>(); mapper.GetTableMapFor <TestEntity>() .Returns(F.Some(map)); var log = Substitute.For <ILog>(); // Act var result = new FluentQuery <TestEntity, TestId>(db, mapper, log); // Assert Assert.Empty(result.Errors); Assert.Same(table, result.Parts.From); }
public void ShowInteractiveFluentQuery() { var assetTypeName = ReadString("What asset type do you want to query? (ex: Story, Member)"); var query = new FluentQuery(assetTypeName); Console.WriteLine(); var criteria = ReadValues( "Enter one or more comma-separated filter terms ins the form of Field=value (ex: ID=Story:1083, Name=My Story). Hit enter to continue.", ParseCommaDelimItems, ParseFilterTerm); query.Where(criteria.ToArray()); Console.WriteLine(); var selectTerms = ReadValues("Enter one or more comma-separated field names to select. (ex: Name, CreatedBy). Hit enter to continue.)", ParseCommaDelimItems); query.Select(selectTerms.ToArray()); query.OnSuccess = assets => { assets.ForEach(asset => selectTerms.ForEach(fieldName => Console.WriteLine(fieldName + ": " + asset.GetValueByName(fieldName)) ) ); // Above is the same thing as: //foreach (AssetClassBase asset in assets) //{ // foreach (var fieldName in selectTerms) // { // Console.WriteLine(fieldName + ": " + asset.GetValueByName(fieldName)); // } //} }; query.OnEmptyResults = () => Console.WriteLine("No results found..."); query.OnError = PrintError; query.Execute(); }
private string CreateShoppingListEmail(int weekNumber, string store) { using (var db = new FluentQuery(_dbFactory.OpenDbConnection())) { var accessor = new ShoppingAccessor(db); var shoppingList = accessor.GetShoppingListForStore(weekNumber, store); //using (var templater = new IsolatedRazor.RazorTemplater(null)) //{ // string result = templater.ParseAsync("MyTemplate", "<div>Hello @Model.Name! It is @DateTime.Now</div>", DateTime.Now, new { Name = "ModelTest" }).Result; //} //~/Static/PrintShoppingList.cshtml //"~/Views/Main/PrintShoppingList.cshtml" var templatePath = HttpContext.Current.Server.MapPath("~/Static/PrintShoppingList.cshtml"); //var templatePath = HttpContext.Current.Server.MapPath("~/Views/Main/PrintShoppingList.cshtml"); using (var templater = new IsolatedRazor.RazorTemplater(templatePath)) { var emailContent = templater.ParseAsync(PrintShoppingList, File.ReadAllText(templatePath), DateTime.Now, shoppingList).Result; return emailContent; } } }
public void FluentNavigation_CSharp_script_succeedes() { string script = @" var searchResult = self .WhereTypeIs(""Task"") .AtMost(2) .FollowingLinks(""*""); return searchResult; "; IWorkItem startPoint; var repository = MakeRepository(out startPoint); var logger = Substitute.For<ILogEvents>(); repository.Logger = logger; var engine = new CSharpScriptEngine(repository, logger, false); engine.LoadAndRun("test", script, startPoint); var expected = new FluentQuery(startPoint); expected.WorkItemType = "Task"; expected.Levels = 2; expected.LinkType = "*"; logger.Received().ResultsFromScriptRun("test", expected); }
public IEnumerable <IWorkItemExposed> GetRelatives(FluentQuery query) { return(WorkItemLazyVisitor .MakeRelativesLazyVisitor(this, query)); }
public ScheduleEmailModel Get(int weekNumber) { using (var db = new FluentQuery(_dbFactory.OpenDbConnection())) { var recipes = db.Select<Recipe>(); var schedule = db.Single<WeekSchedule>(s => s.Id == weekNumber); var selectedRecipes = schedule.Days.SelectMany(d => d.Meals.SelectMany(m => m.Entries.Select(e => e.RecipeId))) .Distinct().Join(recipes, i => i, recipe => recipe.Id, (i, recipe) => recipe).ToList(); return CreateModel(schedule, selectedRecipes); } }
public static FluentQuery PatchQueryForBuildingCollisionLayer(this FluentQuery fluent) { return(fluent.WithAllWeak <Collider>()); }
public string OrmLite() { using (var db = new FluentQuery(_dbFactory.OpenDbConnection())) { var accessor = new WeekAccessor(db); var week = accessor.GetSingle(20140428); return week.Name + ' ' + week.Id; } }
public ActionResult ShoppingList(int weekNumber, bool update = false) { using (var db = new FluentQuery(_dbFactory.OpenDbConnection())) { var shoppingAccessor = new ShoppingAccessor(db); var shoppingList = update ? shoppingAccessor.Update(weekNumber) : shoppingAccessor.GetOrCreate(weekNumber); var model = new { parentId = shoppingList.Id, parentName = shoppingList.WeekNumber.ToWeekName(), weekNumber = shoppingList.WeekNumber, //published = shoppingList.Published }.ToExpando(); return View(model); } }
public async Task<FluentQuery> RunFluentQueryAsync(Func<Task> calls) { if (IsQuerying) throw new InvalidOperationException("Cannot run nested queries"); var activeQuery = new FluentQuery(); query.Value = activeQuery; try { await calls(); } finally { query.Value = null; } return activeQuery; }
public IEnumerable<IWorkItemExposed> GetRelatives(FluentQuery query) { return WorkItemLazyVisitor .MakeRelativesLazyVisitor(this, query); }