Re: TDD Database migration code

"Josue Barbosa dos Santos [email protected] [testdrivendevelopment]" <[email protected]> Wed, 20 Apr 2016 10:28:47 -0300
Newsgroups gmane.comp.programming.test-driven-development
Message-ID <CABgJR62W6n=Q1e8JdBFnGZMx=kfgVt2GMv5c5T8jxKzMc01hhA@mail.gmail.com>
A tool as Liquibase (http://www.liquibase.org/) would not help?

>>*The short version is:
 >>1. A command which generates a .sql file with a timestamp in the file
name.
In liquibase you create de .sql files.
>>  2. A command which checks all the files in a folder, and then does some
comparisons to another db, and picks one or more .sql files to run on the
db in question.
I think that is exactly what liquibase does.



On Wed, Apr 20, 2016 at 9:01 AM, Avi Kessner [email protected]
[testdrivendevelopment] <[email protected]> wrote:

>
>
> Ironically, after attempting to install pgTap and get it talking with
> python instead of perl, I ended up removing all the tests and DB specific
> code.
>
> Mainly because of what you were advising just now. The custom use cases
> were making my tests too brittle, so I found a better way to abstract it
> out.
>
> It will be good later on though if we have more complicated db functions,
> though hopefully I'll be able to persuade the team to avoid that.
>
> brought to you by the letters A, V, and I
> and the number 47
>
> On Wed, Apr 20, 2016 at 2:17 PM, Adam Sroka [email protected]
> [testdrivendevelopment] <[email protected]> wrote:
>
>>
>>
>> You are welcome!
>>
>> General advice: be cautious about building functionality into the
>> database. The database should be optimized for storage and retrieval.
>> Decisions about how to ask the right questions of the database should
>> probably be in a layer closer to the customer, and in the language
>> appropriate to that place.
>>
>> On Wed, Apr 20, 2016 at 1:06 AM, Avi Kessner [email protected]
>> [testdrivendevelopment] <[email protected]> wrote:
>>
>>>
>>>
>>> PgTap looks perfect. Thanks!
>>> On Apr 20, 2016 10:59 AM, "Avi Kessner" <[email protected]> wrote:
>>>
>>>> Ideally I'm looking for something that creates databases, runs sql, is
>>>> able to check the state of the database, and then destroys the database.
>>>>
>>>> I don't really care at what level that happens at. (Though easier is
>>>> obviously better)  .. (investigating pgtap now, thanks)
>>>>
>>>> brought to you by the letters A, V, and I
>>>> and the number 47
>>>>
>>>> On Wed, Apr 20, 2016 at 10:21 AM, Adam Sroka [email protected]
>>>> [testdrivendevelopment] <[email protected]> wrote:
>>>>
>>>>>
>>>>>
>>>>> Are you talking about test driving database access code from a general
>>>>> purpose language? Or are you talking about test driving stuff inside the
>>>>> database engine? There is http://pgtap.org/ but I would look for a
>>>>> way to do it at a higher level, unless... a gun was pointed at my head.
>>>>>
>>>>> On Tuesday, April 19, 2016, [email protected]
>>>>> [testdrivendevelopment] <[email protected]> wrote:
>>>>>
>>>>>>
>>>>>>
>>>>>> My google searches are giving me bad results... :(
>>>>>>
>>>>>> Does anyone know of any good articles, or have any good hints, on how
>>>>>> to do TDD for writing PostgresSQL, or database code?
>>>>>>
>>>>>> I need to write a custom system which allows us to do DB migrations
>>>>>> and updates etc, a bit similar to what Ruby on Rails with has their DB
>>>>>> rake:migration command.*
>>>>>>
>>>>>> Google is mostly giving me information on how to abstract out DB
>>>>>> objects, but I need to verify that my new custom migration system is
>>>>>> actually working.
>>>>>>
>>>>>> The tests I would want to write are simples
>>>>>>    1. Confirm that a migration file worked (say by adding a column)
>>>>>>    2. Confirm that only the latest migration was run, and not a
>>>>>> previous one (say by checking a value in the table wasn't changed)
>>>>>>
>>>>>> I appreciate the help you can provide.
>>>>>>
>>>>>> *The short version is:
>>>>>>  1. A command which generates a .sql file with a timestamp in the
>>>>>> file name.
>>>>>>   2. A command which checks all the files in a folder, and then does
>>>>>> some comparisons to another db, and picks one or more .sql files to run on
>>>>>> the db in question.
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>
>>
> 
>



-- 
Abraços,
Josué
http://twitter.com/josuesantos