Data integrity testimine

21 views
Skip to first unread message

viljar

unread,
Sep 23, 2014, 5:36:22 AM9/23/14
to rub...@googlegroups.com
Hei!

Tekkis selline küsimus, et kas keegi on kunagi kokku põrganud.

Probleemi kirjeldus:
Kogun kokku mitmest süsteemist andmeid kesksesse baasi stiilis, kas seda objekti on seal süsteemis nähtud ja kui on siis millal, ja mis on temaga seotud meta-andmed, faili checksumid jms.
Tahaks kirjutada mingit testide assertion laadseid reegleid, mis värvivad mulle vastava kirje punaseks-kollsseks-roheliseks vastavalt sellele kas kõik info on olemas mis vaja ja kas see info klapib erinevate asukohtade vahel.

Uitmõttena käis peast läbi, et need reeglid võiks olla stiililst sarnased nagu me TDD käigus teste kirjutame. 

St mul pole vaja andmeid valideerida nende salvestamise lubamiseks või mitte lubamiseks vaid ma tahan ilusaid graafikuid ja listinguid lõpuks saada nendest kirjetest millel miskit viga/puudu on.
Küsimus olekski, et kas keegi on näinud/kasutanud mingeid olemasolevaid klotse andmete valideerimiseks mis sellelaadselt käituvad ennem kui hakkan ise leiutama?

Viljar Mee

Andri Möll

unread,
Sep 23, 2014, 12:08:36 PM9/23/14
to rub...@googlegroups.com
Ruby maailmas saad ilmselt valideerimiseks ka ActiveRecordit kasutada. Lisa klassidele validationid, lae mudelitesse andmed ja kutsu #validate. Hiljem saad instantsilt kuvamiseks errorid kenasti kätte.

A.

--
Saite selle sõnumi, kuna olete liitunud Google'i gruppide grupiga "Rubyest".
Grupist eraldumiseks ja selle grupi meilide saamise peatamiseks saatke meil aadressile rubyee+un...@googlegroups.com.
Rohkem valikuid leiate lehelt https://groups.google.com/d/optout.

Laas Toom

unread,
Sep 23, 2014, 1:14:39 PM9/23/14
to rub...@googlegroups.com
Andri idee täpsustuseks mainin, et kasutada tuleb sel puhul muidugi ActiveModel::Validations'i, siis ei pea andmebaasi ja tabelit tekitama. Sarnase teema kohta on ka Railscastis juttu:



ActiveModel::Validations dokumentatsioonis on kõvasti häid näiteid, näiteks eraldi Validator klasside kirjutamine, millega sa saad grupeerida oma loogikat.

Muide, kui sa ei saa/taha atribuute defineerida (näiteks olemasolev struktuur sobib Hashi paremini vm keerulisemat) või Railsi validaatoritest ei saa nagunii kasu lõigata, siis võid lihtsalt oma kontrolli teha ja ‘errors.add(:key, “message")’ kasutada.
BTW, mingi message on vajalik, sest muidu üritab ta “key” nimelist atribuuti lähemalt uurida ja lõpetab veaga, samas ei pea sa seda message’it üldse kasutama, vaid võid piirduda hunniku erinevate võtmetega vigade loendamiseks:

require 'active_model'
class Data
  include ActiveModel::Validations

  validate do
    errors.add(:checksum_mismatch, 'Checksum ei klapi’)  # if checksum_mismatch
  end
end

d = Data.new
d.valid?
# => false
d.errors.keys
# => [:checksum_mismatch]

--
Laas Toom



Reply all
Reply to author
Forward
0 new messages