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);
     }
 }
Example #7
0
    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);
    }
Example #8
0
        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);
                }
            });
        }
Example #9
0
    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)
                          );
    }
Example #10
0
        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);
        }
Example #11
0
    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);
    }
Example #12
0
        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;
                }
            }
        }
Example #14
0
        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);
        }
Example #15
0
 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);
 }