schild 0.3.1 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 871dde69d54b28f357ee941d9fb37aabf8d1ad3d
4
- data.tar.gz: 3f5c375ccf3380706d925386ab3d18c1d50c691e
3
+ metadata.gz: af0c2f952bd55de136a4d53286de556efd28a2b8
4
+ data.tar.gz: 3fe5c5d3d6caa0900441b5c31c82aca45ce07eb1
5
5
  SHA512:
6
- metadata.gz: 2bc3b214c73e7501960d3fa519e09070cc18c722a0657dc15acea1056b35af92811666407c3ead71d68a880acef956b6e4a569dae3d319d76a6fa9369a1a4d5d
7
- data.tar.gz: 74198c786b0ef53b3aed9c333eda631121192e198822fcbbed7bfcee64cc8ffd620f68c5e37d85a40a599da696c40891980bd53542ab91fb99bd7c9806c92156
6
+ metadata.gz: 9ec3636e5510cd763e402e4b056f47fadae75b5d78a791b38b04811bf4e3224efe67bb08ce00b9b9171d93464df5d57001eba09376350149dd513e8396840291
7
+ data.tar.gz: b490a280256c0de2a139526d860a9558868f608b902b981569bff5f8c220ba67028c90688c137e53c4fc3c3c7774b20ec626543452e9b3b48bd3ae1ee4723fd9
data/config/env.yml CHANGED
@@ -1,7 +1,7 @@
1
1
  local_test:
2
2
  S_ADAPTER: mysql2
3
- S_HOST: localhost
3
+ S_HOST: 172.17.0.4
4
4
  S_USER: schild
5
5
  S_PASSWORD: schild
6
- S_DB: schild_test
6
+ S_DB: schild-test
7
7
 
@@ -1,3 +1,3 @@
1
1
  module Schild
2
- VERSION = "0.3.1"
2
+ VERSION = "0.3.2"
3
3
  end
data/lib/schild.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require 'schild/version'
2
2
  require 'sequel'
3
3
 
4
+ # erst Ruby 2.1.0 macht include zu einer public-Methode
4
5
  if Module.private_method_defined? :include
5
6
  class Module
6
7
  public :include
@@ -36,13 +37,18 @@ module SchildTypeSaver
36
37
  def self.included(klass)
37
38
  klass.columns.each do |column|
38
39
  name = column.snake_case
39
- define_method(name) { public_send(column) || Null.new("")}
40
+ define_method(name) { public_send(column) || create_null_object(klass, column)}
40
41
  end
41
42
  end
42
43
 
43
- class Null < String
44
- def strftime(args)
45
- Time.new("1899").strftime(args)
44
+ def create_null_object(klass, column)
45
+ k = DB.schema_type_class(klass.db_schema[column][:type])
46
+ if k.class == Array
47
+ # Sequel stellt :datetime als [Time, DateTime] dar
48
+ DateTime.new(1799)
49
+ else
50
+ # alle anderen types werden als Klasse zurückgegeben
51
+ k.new
46
52
  end
47
53
  end
48
54
  end
@@ -1,12 +1,27 @@
1
1
  require "#{File.dirname(__FILE__)}/spec_helper"
2
2
 
3
3
  describe Schueler do
4
- describe 'typen sicherheit von objekten' do
5
- before do
6
- # lade einen Standardschueler
7
- @sm = Schueler.where(:Status => 2, :Geloescht => "-", :Gesperrt => "-").first
4
+ describe 'null-Objekte passen sich den DB-Typen an' do
5
+ before do
6
+ # lade einen Standardschueler
7
+ @sm = Schueler.where(:Status => 2, :Geloescht => "-", :Gesperrt => "-").first
8
+ end
9
+
10
+ it 'gibt ein DateTime bei Daten zurück' do
11
+ @sm.geburtsdatum.must_be_instance_of DateTime
12
+ end
13
+
14
+ it 'gibt String für Text zurück' do
15
+ @sm.bemerkungen.must_be_instance_of String
16
+ end
8
17
  end
9
18
 
19
+ describe 'null-Objekte geben immer etwas zurück' do
20
+ before do
21
+ # lade einen Standardschueler
22
+ @sm = Schueler.where(:Status => 2, :Geloescht => "-", :Gesperrt => "-").first
23
+ end
24
+
10
25
  it 'gibt nil zurück, wenn leer' do
11
26
  @sm.Bemerkungen.must_equal nil
12
27
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: schild
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - HMT