Grails 2.2.2にアップグレードした
Improxプラグインをインストールした

テストを書くのに大変便利なのです
2.2.2向けにgspをアップデートした
CustomerControllerTestsを削除した

理由:
- スキャフォルド生成されたままの状態で、現状のコントローラ実装とずれていた
- コントローラのテストを頑張っても実入りが少ないので
BootStrapをリファクタリングした

- failOnError: trueを使っておくと、予期しない問題があって保存できない場合に例外が発生してすぐに気がつける。
  デフォルトでは失敗しても自前でhasErros()とか戻り値チェックをしないと失敗してることに気づけない。
- Groovyライクにリストを使ってみた
- developmentのときだけBootStrapでダミーデータを追加するのが良いと思う。
  テストの時はテストの都合があるので、テストのsetupでフィクスチャを構築すればOK、というポリシ。
Spockをインストールした

2.3からSpockが標準になるし、使いやすいので。
CustomerServiceのテストをSpockで書いた
select.sqlにorder byを付けた

テストでidの並び順が確定しないし、list取得メソッドなので順序を明示しておきたい
CustomerServiceをリファクタリングした

- 変数名を変更
- Txの振る舞いを探りたいのでassertをこのタイミングで仕込んでみた
- など
GrailsConnectionProviderを実装して、Mirageで使えるようにした

インテグレーションテストを書いて気がついたけど、この時点のMirageのSqlManagerの設定では、
Tx管理がうまくいっていない。
（元々のコードの挙動は良い感じだったけど、DataSourceをGrailsのHibernateのデフォルトのものを
使うようにresources.groovyを変えたところ、既存Txが存在する場合の挙動が期待と異なるようになった)

単純にHibernateのカレントセッションからコネクションを取得して使っていれば、
Tx管理はSpring/Hibernateがやってくれるが、Mirageの持っているConnectionProviderでは
それができるものが見つからなかった。
SpringConnectionProviderはTransactionManagerを指定する、などの使いにくい感じだったので、
実装してみた。

まだ自信はないけど、インテグレーションテストの結果を見るとうまく動いてる様子。
CustomerTestsを削除した

デフォルトのまま放置されてたので
GrailsConnectionProviderではなく、既存のSpringConnectionProviderを使ってみたがエラーになるのでコメントを書いておいた

SpringConnectionProviderは、Grailsが使っているDataSource実装のGrailsHibernateTransactionManagerを
受け取れないため、独自のGrailsConnectionProviderが必要という流れ。