Thread: Testing Views

Testing Views

From
Andy Chambers
Date:
Hello All,

I have a problem for which a view seems like a nice solution. Basically we want to see all records in some table that are older than 5 days and haven't yet gone through further processing.

This particular view is probably simple enough that it doesn't require unit tests but I wonder how people test complex views that depend on the current date or time. I found a thread on the hackers list [1] that talked about stubbing pg_catalog.now() but was wondering if any TDD minded developers had invented anything better since then.

One option I thought of was to just not use views that depend on the current date or time and instead create a set returning function that takes the time as a parameter. Would such a function have similar performance characteristics to an equivalent view?

Cheers,
Andy

Re: Testing Views

From
Gavin Flower
Date:
On 20/05/15 19:47, Andy Chambers wrote:
> Hello All,
>
> I have a problem for which a view seems like a nice solution.
> Basically we want to see all records in some table that are older than
> 5 days and haven't yet gone through further processing.
>
> This particular view is probably simple enough that it doesn't require
> unit tests but I wonder how people test complex views that depend on
> the current date or time. I found a thread on the hackers list [1]
> that talked about stubbing pg_catalog.now() but was wondering if any
> TDD minded developers had invented anything better since then.
>
> One option I thought of was to just not use views that depend on the
> current date or time and instead create a set returning function that
> takes the time as a parameter. Would such a function have similar
> performance characteristics to an equivalent view?
>
> Cheers,
> Andy
>
> [1]:
> http://postgresql.nabble.com/overriding-current-timestamp-td5507701.html
How about using a 'Time Machine'?

Run the database in a VM and change the date/time.  You can take a clone
of the VM, and recreate it multiple times from a known state.

A technique we used to test for Y2K problems, except in those days we
did have Virtual Machines like we have now!


Cheers,
Gavin