ditto 0.5.0 → 0.6.0

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.
Files changed (41) hide show
  1. data/bin/ditto +1 -1
  2. data/features/create_entities.feature +1 -0
  3. data/features/load_entity.feature +1 -0
  4. data/features/store_entity.feature +5 -4
  5. data/lib/ditto.rb +1 -0
  6. data/lib/ditto/dsl.rb +14 -9
  7. data/lib/ditto/entity.rb +118 -106
  8. data/lib/ditto/error.rb +19 -0
  9. data/lib/ditto/options.rb +45 -13
  10. data/lib/ditto/runner.rb +37 -56
  11. data/lib/ditto/version.rb +1 -1
  12. data/spec/entity_spec.rb +83 -59
  13. data/spec/fixtures/badmap.ditto +18 -0
  14. data/spec/fixtures/badver.ditto +17 -0
  15. data/spec/fixtures/bigcircle.ditto +17 -0
  16. data/spec/fixtures/circle.ditto +16 -0
  17. data/spec/fixtures/continent.ditto +16 -0
  18. data/spec/fixtures/country.ditto +16 -0
  19. data/spec/fixtures/currency.ditto +30 -0
  20. data/spec/fixtures/currency_group.ditto +17 -0
  21. data/spec/fixtures/dot.ditto +17 -0
  22. data/spec/fixtures/dupversion.ditto +32 -0
  23. data/spec/fixtures/good.ditto +17 -0
  24. data/spec/fixtures/multiversion.ditto +32 -0
  25. data/spec/fixtures/nocomma.ditto +16 -0
  26. data/spec/fixtures/nomethod.ditto +18 -0
  27. data/spec/fixtures/random.ditto +17 -0
  28. data/spec/fixtures/syntax.ditto +19 -0
  29. data/spec/options_spec.rb +43 -25
  30. data/test/data/simple_object.xml +23 -0
  31. data/test/data/simple_object.yaml +39 -0
  32. data/test/ditto/currency.ditto +30 -0
  33. data/test/ditto/currency_group.ditto +17 -0
  34. data/test/dm/currency-1.0.0.dm +13 -0
  35. data/test/dm/currency_group-1.0.0.dm +10 -0
  36. data/test/dm/datamart-1.0 +7 -0
  37. data/test/dm/nested +2 -0
  38. data/test/dmtest.rb +41 -0
  39. data/test/sample.test +2 -0
  40. metadata +59 -42
  41. data/lib/ditto/map.rb +0 -39
@@ -0,0 +1,2 @@
1
+ # An empty file to test nesting
2
+ # The end
@@ -0,0 +1,41 @@
1
+ # Test that Datamapper and the database things are working
2
+ #
3
+ require 'data_mapper'
4
+
5
+ load 'dm/currency-1.0.0.dm'
6
+ load 'dm/currency_group-1.0.0.dm'
7
+
8
+ DataMapper::Logger.new($stdout, :debug)
9
+ DataMapper.setup(:default, 'oracle://nick:secret@nixora.local/orcl')
10
+ DataMapper.finalize
11
+
12
+ DataMapper.auto_migrate!
13
+
14
+ americas = CurrencyGroup.create(
15
+ :code => 'Americas',
16
+ :description => 'The Americas',
17
+ :is_commodity => true
18
+ )
19
+ europe = CurrencyGroup.create(
20
+ :code => 'Europe',
21
+ :description => 'European Union',
22
+ :is_commodity => false
23
+ )
24
+ europe.currencies.create(
25
+ :code => 'GBP',
26
+ :description => 'Pounds Sterling',
27
+ :exchange_rate => 1.5,
28
+ :is_designated => false
29
+ )
30
+ europe.currencies.create(
31
+ :code => 'EUR',
32
+ :description => 'Euro',
33
+ :exchange_rate => 1.2,
34
+ :is_designated => false
35
+ )
36
+ americas.currencies.create(
37
+ :code => 'USD',
38
+ :description => 'Greenback',
39
+ :exchange_rate => 1.0,
40
+ :is_designated => true
41
+ )
@@ -0,0 +1,2 @@
1
+ # A test sample
2
+ data/simple_object.yaml
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ditto
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -43,44 +43,9 @@ dependencies:
43
43
  - - ! '>='
44
44
  - !ruby/object:Gem::Version
45
45
  version: '2.11'
46
- description: ! 'Database Independent Test Objects (Ditto)
47
-
48
-
49
- Ditto defines a simple DSL that allows test data to be expressed in a database independent
50
- format.
51
-
52
- When the underlying tables are remapped the QA team don''t have to go and change
53
- all the historical test cases.
54
-
55
-
56
- There are three parts, all of them versioned:
57
-
58
- 1. The data declarations
59
-
60
- 2. The mappings to the underlying database
61
-
62
- 3. The data itself
63
-
64
-
65
- Idea is to replace an XML dialect with something simpler. See sample at simple_object.xml
66
-
67
-
68
- Notes on DSL
69
-
70
- ------------
71
-
72
-
73
- The entity declaration style uses verb and hash only, without a block.
74
-
75
- Contrast this with mapping style which uses verb, params and then block. Of course
76
-
77
- mappings need code and so the block usage is natural. This could also be done
78
-
79
- for the declarations, very similar to the way the gem ''datamapper'' does it.
80
-
81
-
82
-
83
- Nick Townsend, Oct 2012
46
+ description: ! 'Ditto defines a simple DSL that allows test data to be expressed in
47
+ a database independent format.When the underlying tables are remapped the QA team
48
+ don''t have to go and change all the historical test cases.
84
49
 
85
50
  '
86
51
  email: nick.townsend@mac.com
@@ -90,11 +55,11 @@ extensions: []
90
55
  extra_rdoc_files: []
91
56
  files:
92
57
  - lib/ditto/dsl.rb
93
- - lib/ditto/options.rb
94
58
  - lib/ditto/entity.rb
95
- - lib/ditto/version.rb
96
- - lib/ditto/map.rb
59
+ - lib/ditto/error.rb
60
+ - lib/ditto/options.rb
97
61
  - lib/ditto/runner.rb
62
+ - lib/ditto/version.rb
98
63
  - lib/ditto.rb
99
64
  - bin/ditto
100
65
  - features/create_entities.feature
@@ -103,7 +68,33 @@ files:
103
68
  - features/store_entity.feature
104
69
  - features/support/hooks.rb
105
70
  - spec/entity_spec.rb
71
+ - spec/fixtures/badmap.ditto
72
+ - spec/fixtures/badver.ditto
73
+ - spec/fixtures/bigcircle.ditto
74
+ - spec/fixtures/circle.ditto
75
+ - spec/fixtures/continent.ditto
76
+ - spec/fixtures/country.ditto
77
+ - spec/fixtures/currency.ditto
78
+ - spec/fixtures/currency_group.ditto
79
+ - spec/fixtures/dot.ditto
80
+ - spec/fixtures/dupversion.ditto
81
+ - spec/fixtures/good.ditto
82
+ - spec/fixtures/multiversion.ditto
83
+ - spec/fixtures/nocomma.ditto
84
+ - spec/fixtures/nomethod.ditto
85
+ - spec/fixtures/random.ditto
86
+ - spec/fixtures/syntax.ditto
106
87
  - spec/options_spec.rb
88
+ - test/data/simple_object.xml
89
+ - test/data/simple_object.yaml
90
+ - test/ditto/currency.ditto
91
+ - test/ditto/currency_group.ditto
92
+ - test/dm/currency-1.0.0.dm
93
+ - test/dm/currency_group-1.0.0.dm
94
+ - test/dm/datamart-1.0
95
+ - test/dm/nested
96
+ - test/dmtest.rb
97
+ - test/sample.test
107
98
  homepage: https://github.com/townsen/ditto
108
99
  licenses: []
109
100
  post_install_message:
@@ -135,4 +126,30 @@ test_files:
135
126
  - features/store_entity.feature
136
127
  - features/support/hooks.rb
137
128
  - spec/entity_spec.rb
129
+ - spec/fixtures/badmap.ditto
130
+ - spec/fixtures/badver.ditto
131
+ - spec/fixtures/bigcircle.ditto
132
+ - spec/fixtures/circle.ditto
133
+ - spec/fixtures/continent.ditto
134
+ - spec/fixtures/country.ditto
135
+ - spec/fixtures/currency.ditto
136
+ - spec/fixtures/currency_group.ditto
137
+ - spec/fixtures/dot.ditto
138
+ - spec/fixtures/dupversion.ditto
139
+ - spec/fixtures/good.ditto
140
+ - spec/fixtures/multiversion.ditto
141
+ - spec/fixtures/nocomma.ditto
142
+ - spec/fixtures/nomethod.ditto
143
+ - spec/fixtures/random.ditto
144
+ - spec/fixtures/syntax.ditto
138
145
  - spec/options_spec.rb
146
+ - test/data/simple_object.xml
147
+ - test/data/simple_object.yaml
148
+ - test/ditto/currency.ditto
149
+ - test/ditto/currency_group.ditto
150
+ - test/dm/currency-1.0.0.dm
151
+ - test/dm/currency_group-1.0.0.dm
152
+ - test/dm/datamart-1.0
153
+ - test/dm/nested
154
+ - test/dmtest.rb
155
+ - test/sample.test
@@ -1,39 +0,0 @@
1
- # Mapping support for Ditto
2
- #
3
- require 'ostruct'
4
- require 'data_mapper'
5
-
6
- module Ditto
7
- module Map
8
- @maps = {}
9
-
10
- def self.add name, opts, &block
11
- @maps[name] = block
12
- end
13
-
14
- def self.check_maps seq, definitions
15
- nerr = 0
16
- seq.each do |entity|
17
- unless @maps.has_key? entity
18
- nerr += 1
19
- Ditto::Entity.error("no mapping", entity, definitions[entity])
20
- end
21
- end
22
- return nerr
23
- end
24
-
25
- def self.add_all seq, data
26
- ninst = 0
27
- seq.each do |entity|
28
- instances = data[entity]
29
- instances.each do |ihash|
30
- puts "adding #{entity} #{ihash.inspect}" if Ditto::Options.instance.verbose > 1
31
- instance = OpenStruct.new ihash
32
- @maps[entity].call instance
33
- ninst += 1
34
- end
35
- end
36
- return ninst
37
- end
38
- end
39
- end