views:

194

answers:

1

I'm using SubSonic 3, and am using the ActiveRecord approach. I have a simple query in my controller:

var posts = from p in Post.GetPaged(page ?? 0, 20)
            orderby p.Published descending
            select p;

The "page" variable is defined as an nullable int (int?).

Here's the problem, when I run the following test, it works fine and passes:

[Test]
    public void IndexWithNullPageShouldLoadFirstPageOfRecentPosts()
    {
        //act
        var testPosts = new List<Post>()
                        {
                            new Post() {PostID = 1, BlogID = 1, Published = null, Body = "1"},
                            new Post() {PostID = 2, BlogID = 1, Published = DateTime.Now, Body = "2"},
                            new Post() {PostID = 3, BlogID = 1, Published = DateTime.Now.AddDays(1), Body = "3"}
                        };
        Post.Setup(testPosts);

        //act
        var result = controller.Index(null) as ViewResult;

        //assert
        Assert.IsNotNull(result);
        var home = result.ViewData.Model as HomeViewModel;
        Assert.IsInstanceOf(typeof(HomeViewModel), home, "Wrong ViewModel");
        Assert.AreEqual(3, home.Posts.Count());

        //make sure the sort worked correctly
        Assert.AreEqual(3, home.Posts.ElementAt(0).PostID);
        Assert.AreEqual(2, home.Posts.ElementAt(1).PostID);
        Assert.AreEqual(1, home.Posts.ElementAt(2).PostID);
    }

However, when I launch the website, it doesn't return any records (and yes, there are records in the live database). Both ways have the "page" variable set to null. I found that if I change the index in "GetPaged" method to 1 instead of 0 - then records are returned on the website... however, as soon as I do that - my tests don't pass anymore. All the documentation I've seen shows that the GetPaged index is zero-based... so I'm a bit confused here.

Any ideas?

Thanks, Chad

A: 

This seems to be a bug/inconsistency in the way GetPaged works with ActiveRecord. As you've already worked out it's using a 1 based index instead of a 0 based index in the ActiveRecord repository. Can you please log this as an issue at github

Adam