Ruby - Et si on écrivait un ORM ? - partie 4
Maintenant qu’on peut se connecter à une base sqlite, je pense qu’il faut qu’on puisse écrire des requêtes en pur SQL à partir d’un objet qui hérite de SORM.
Voilà donc mon nouveau test:
Je veux enregistrer deux lignes en base et les récupérer. Si on lance les
tests, Rspec se plaint que la méthode sql
n’existe pas. Jusqu’ici tout
va bien:
$ rspec sorm_spec.rb
..F
Failures:
1) SORM.sql executes raw sql query on a table
Failure/Error: Article.sql("INSERT INTO article VALUES(1, 'Foo');")
NoMethodError:
undefined method `sql' for Article:Class
Pour faire passer ce test, le code est simple, on ajoute la méthode sql
:
Et hop:
$ rspec sorm_spec.rb
...
Finished in 0.01381 seconds
3 examples, 0 failures
Comme je suis curieux, j’ai envie de voir à quoi ressemble le contenu de
rows
dans le test:
Et là, une petite surprise m’attend au tournant:
$ rspec sorm_spec.rb
..[[1, "Foo"], [2, "Bar"], [1, "Foo"], [2, "Bar"]]
F
Failures:
1) SORM.sql executes raw sql query on a table
Failure/Error: expect(rows.size).to eq 2
expected: 2
got: 4
(compared using ==)
# ./sorm_spec.rb:26:in `block (3 levels) in <top (required)>'
Tout d’abord, j’ai oublié de vider la table après le test qui fait des
insertions. Et ensuite j’ai négligé de spécifier id
comme clé primaire !
Bref, j’ai encore du boulot pour que SORM fonctionne ;)
To be continued
À demain.