data_active 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +35 -0
- data/.rvmrc +1 -0
- data/Gemfile +4 -0
- data/README.rdoc +275 -0
- data/Rakefile +2 -0
- data/data_active.gemspec +28 -0
- data/features/remove_records_missing_in_xml.feature +30 -0
- data/features/step_definitions/remove_records_missing_in_xml.rb +85 -0
- data/features/step_definitions/step_helper.rb +15 -0
- data/features/step_definitions/sync_books_with_xml.rb +224 -0
- data/features/step_definitions/update_database_with_xml.rb +158 -0
- data/features/step_definitions/web_steps.rb +211 -0
- data/features/support/env.rb +50 -0
- data/features/support/fixtures/fresh/book_prices.yml +6 -0
- data/features/support/fixtures/fresh/books.yml +7 -0
- data/features/support/fixtures/fresh/chapters.yml +35 -0
- data/features/support/fixtures/fresh/pages.yml +149 -0
- data/features/support/fixtures/no_matching_records/book_prices.yml +6 -0
- data/features/support/fixtures/no_matching_records/books.yml +7 -0
- data/features/support/fixtures/no_matching_records/chapters.yml +35 -0
- data/features/support/fixtures/no_matching_records/pages.yml +149 -0
- data/features/support/fixtures/without_chapters/books.yml +7 -0
- data/features/support/fixtures/without_one_to_one/books.yml +7 -0
- data/features/support/fixtures/without_one_to_one/chapters.yml +35 -0
- data/features/support/fixtures/without_one_to_one/pages.yml +149 -0
- data/features/support/fixtures/xml/books_changed.xml +173 -0
- data/features/support/fixtures/xml/books_fresh.xml +173 -0
- data/features/support/fixtures/xml/books_one_to_one_changed.xml +173 -0
- data/features/support/fixtures/xml/books_one_to_one_mismatch.xml +173 -0
- data/features/support/fixtures/xml/books_one_to_one_removed.xml +167 -0
- data/features/support/fixtures/xml/books_simple.xml +15 -0
- data/features/support/fixtures/xml/books_with_changed_chapters.xml +40 -0
- data/features/support/fixtures/xml/books_with_chapters.xml +45 -0
- data/features/support/fixtures/xml/books_with_many_one_to_one_records.xml +179 -0
- data/features/support/fixtures/xml/books_with_mismatched_chapters.xml +173 -0
- data/features/support/fixtures/xml/books_with_moved_chapters.xml +173 -0
- data/features/support/fixtures/xml/books_with_one_to_one.xml +167 -0
- data/features/support/fixtures/xml/books_with_removed_chapters.xml +113 -0
- data/features/support/fixtures/xml/books_without_chapters.xml +11 -0
- data/features/support/fixtures/xml/books_without_one_to_one.xml +167 -0
- data/features/support/fixtures/xml/ms_access/book.xml +201 -0
- data/features/support/fixtures/xml/ms_access/book.xsd +425 -0
- data/features/support/fixtures/xml/ms_access/books_changed.xml +158 -0
- data/features/support/fixtures/xml/ms_access/books_fresh.xml +173 -0
- data/features/support/fixtures/xml/ms_access/books_one_to_one_changed.xml +173 -0
- data/features/support/fixtures/xml/ms_access/books_one_to_one_mismatch.xml +173 -0
- data/features/support/fixtures/xml/ms_access/books_one_to_one_removed.xml +167 -0
- data/features/support/fixtures/xml/ms_access/books_simple.xml +15 -0
- data/features/support/fixtures/xml/ms_access/books_with_changed_chapters.xml +40 -0
- data/features/support/fixtures/xml/ms_access/books_with_chapters.xml +45 -0
- data/features/support/fixtures/xml/ms_access/books_with_many_one_to_one_records.xml +179 -0
- data/features/support/fixtures/xml/ms_access/books_with_mismatched_chapters.xml +173 -0
- data/features/support/fixtures/xml/ms_access/books_with_moved_chapters.xml +173 -0
- data/features/support/fixtures/xml/ms_access/books_with_one_to_one.xml +167 -0
- data/features/support/fixtures/xml/ms_access/books_with_removed_chapters.xml +113 -0
- data/features/support/fixtures/xml/ms_access/books_without_chapters.xml +11 -0
- data/features/support/fixtures/xml/ms_access/books_without_one_to_one.xml +167 -0
- data/features/support/paths.rb +33 -0
- data/features/support/selectors.rb +39 -0
- data/features/sync_database_with_xml.feature +34 -0
- data/features/sync_one_to_many.feature +34 -0
- data/features/sync_one_to_one.feature +33 -0
- data/features/update_database_with_xml.feature +30 -0
- data/lib/data_active.rb +309 -0
- data/lib/data_active/version.rb +3 -0
- data/test_apps/book_store_rails_31x/.gitignore +15 -0
- data/test_apps/book_store_rails_31x/.rvmrc +1 -0
- data/test_apps/book_store_rails_31x/Gemfile +53 -0
- data/test_apps/book_store_rails_31x/README +261 -0
- data/test_apps/book_store_rails_31x/Rakefile +7 -0
- data/test_apps/book_store_rails_31x/app/assets/images/rails.png +0 -0
- data/test_apps/book_store_rails_31x/app/assets/javascripts/application.js +9 -0
- data/test_apps/book_store_rails_31x/app/assets/stylesheets/application.css +7 -0
- data/test_apps/book_store_rails_31x/app/controllers/application_controller.rb +3 -0
- data/test_apps/book_store_rails_31x/app/helpers/application_helper.rb +2 -0
- data/test_apps/book_store_rails_31x/app/mailers/.gitkeep +0 -0
- data/test_apps/book_store_rails_31x/app/models/.gitkeep +0 -0
- data/test_apps/book_store_rails_31x/app/models/book.rb +4 -0
- data/test_apps/book_store_rails_31x/app/models/book_price.rb +3 -0
- data/test_apps/book_store_rails_31x/app/models/chapter.rb +4 -0
- data/test_apps/book_store_rails_31x/app/models/page.rb +3 -0
- data/test_apps/book_store_rails_31x/app/views/layouts/application.html.erb +14 -0
- data/test_apps/book_store_rails_31x/config.ru +4 -0
- data/test_apps/book_store_rails_31x/config/application.rb +48 -0
- data/test_apps/book_store_rails_31x/config/boot.rb +6 -0
- data/test_apps/book_store_rails_31x/config/database.yml +28 -0
- data/test_apps/book_store_rails_31x/config/environment.rb +5 -0
- data/test_apps/book_store_rails_31x/config/environments/development.rb +30 -0
- data/test_apps/book_store_rails_31x/config/environments/production.rb +60 -0
- data/test_apps/book_store_rails_31x/config/environments/test.rb +39 -0
- data/test_apps/book_store_rails_31x/config/initializers/backtrace_silencers.rb +7 -0
- data/test_apps/book_store_rails_31x/config/initializers/inflections.rb +10 -0
- data/test_apps/book_store_rails_31x/config/initializers/mime_types.rb +5 -0
- data/test_apps/book_store_rails_31x/config/initializers/secret_token.rb +7 -0
- data/test_apps/book_store_rails_31x/config/initializers/session_store.rb +8 -0
- data/test_apps/book_store_rails_31x/config/initializers/wrap_parameters.rb +14 -0
- data/test_apps/book_store_rails_31x/config/locales/en.yml +5 -0
- data/test_apps/book_store_rails_31x/config/routes.rb +58 -0
- data/test_apps/book_store_rails_31x/db/migrate/20120422053943_create_books.rb +9 -0
- data/test_apps/book_store_rails_31x/db/migrate/20120422054008_create_chapters.rb +11 -0
- data/test_apps/book_store_rails_31x/db/migrate/20120422054033_create_pages.rb +11 -0
- data/test_apps/book_store_rails_31x/db/migrate/20120422054123_create_book_prices.rb +12 -0
- data/test_apps/book_store_rails_31x/db/schema.rb +47 -0
- data/test_apps/book_store_rails_31x/db/seeds.rb +7 -0
- data/test_apps/book_store_rails_31x/lib/assets/.gitkeep +0 -0
- data/test_apps/book_store_rails_31x/lib/tasks/.gitkeep +0 -0
- data/test_apps/book_store_rails_31x/log/.gitkeep +0 -0
- data/test_apps/book_store_rails_31x/public/404.html +26 -0
- data/test_apps/book_store_rails_31x/public/422.html +26 -0
- data/test_apps/book_store_rails_31x/public/500.html +26 -0
- data/test_apps/book_store_rails_31x/public/favicon.ico +0 -0
- data/test_apps/book_store_rails_31x/public/index.html +241 -0
- data/test_apps/book_store_rails_31x/public/robots.txt +5 -0
- data/test_apps/book_store_rails_31x/script/rails +6 -0
- data/test_apps/book_store_rails_31x/test/fixtures/.gitkeep +0 -0
- data/test_apps/book_store_rails_31x/test/functional/.gitkeep +0 -0
- data/test_apps/book_store_rails_31x/test/integration/.gitkeep +0 -0
- data/test_apps/book_store_rails_31x/test/performance/browsing_test.rb +12 -0
- data/test_apps/book_store_rails_31x/test/test_helper.rb +13 -0
- data/test_apps/book_store_rails_31x/test/unit/.gitkeep +0 -0
- data/test_apps/book_store_rails_31x/vendor/assets/stylesheets/.gitkeep +0 -0
- data/test_apps/book_store_rails_31x/vendor/plugins/.gitkeep +0 -0
- data/test_apps/book_store_rails_32x/.gitignore +15 -0
- data/test_apps/book_store_rails_32x/.rvmrc +1 -0
- data/test_apps/book_store_rails_32x/Gemfile +47 -0
- data/test_apps/book_store_rails_32x/README.rdoc +261 -0
- data/test_apps/book_store_rails_32x/Rakefile +14 -0
- data/test_apps/book_store_rails_32x/app/assets/images/rails.png +0 -0
- data/test_apps/book_store_rails_32x/app/assets/javascripts/application.js +15 -0
- data/test_apps/book_store_rails_32x/app/assets/stylesheets/application.css +13 -0
- data/test_apps/book_store_rails_32x/app/controllers/application_controller.rb +3 -0
- data/test_apps/book_store_rails_32x/app/helpers/application_helper.rb +2 -0
- data/test_apps/book_store_rails_32x/app/mailers/.gitkeep +0 -0
- data/test_apps/book_store_rails_32x/app/models/.gitkeep +0 -0
- data/test_apps/book_store_rails_32x/app/models/book.rb +4 -0
- data/test_apps/book_store_rails_32x/app/models/book_price.rb +3 -0
- data/test_apps/book_store_rails_32x/app/models/chapter.rb +4 -0
- data/test_apps/book_store_rails_32x/app/models/page.rb +3 -0
- data/test_apps/book_store_rails_32x/app/views/layouts/application.html.erb +14 -0
- data/test_apps/book_store_rails_32x/config.ru +4 -0
- data/test_apps/book_store_rails_32x/config/application.rb +59 -0
- data/test_apps/book_store_rails_32x/config/boot.rb +6 -0
- data/test_apps/book_store_rails_32x/config/cucumber.yml +8 -0
- data/test_apps/book_store_rails_32x/config/database.yml +28 -0
- data/test_apps/book_store_rails_32x/config/environment.rb +5 -0
- data/test_apps/book_store_rails_32x/config/environments/development.rb +37 -0
- data/test_apps/book_store_rails_32x/config/environments/production.rb +67 -0
- data/test_apps/book_store_rails_32x/config/environments/test.rb +37 -0
- data/test_apps/book_store_rails_32x/config/initializers/backtrace_silencers.rb +7 -0
- data/test_apps/book_store_rails_32x/config/initializers/inflections.rb +15 -0
- data/test_apps/book_store_rails_32x/config/initializers/mime_types.rb +5 -0
- data/test_apps/book_store_rails_32x/config/initializers/secret_token.rb +7 -0
- data/test_apps/book_store_rails_32x/config/initializers/session_store.rb +8 -0
- data/test_apps/book_store_rails_32x/config/initializers/wrap_parameters.rb +14 -0
- data/test_apps/book_store_rails_32x/config/locales/en.yml +5 -0
- data/test_apps/book_store_rails_32x/config/routes.rb +58 -0
- data/test_apps/book_store_rails_32x/db/migrate/20120422043253_create_books.rb +9 -0
- data/test_apps/book_store_rails_32x/db/migrate/20120422043434_create_chapters.rb +11 -0
- data/test_apps/book_store_rails_32x/db/migrate/20120422043553_create_pages.rb +11 -0
- data/test_apps/book_store_rails_32x/db/migrate/20120422043700_create_book_prices.rb +12 -0
- data/test_apps/book_store_rails_32x/db/schema.rb +47 -0
- data/test_apps/book_store_rails_32x/db/seeds.rb +7 -0
- data/test_apps/book_store_rails_32x/lib/assets/.gitkeep +0 -0
- data/test_apps/book_store_rails_32x/lib/tasks/.gitkeep +0 -0
- data/test_apps/book_store_rails_32x/lib/tasks/cucumber.rake +65 -0
- data/test_apps/book_store_rails_32x/log/.gitkeep +0 -0
- data/test_apps/book_store_rails_32x/public/404.html +26 -0
- data/test_apps/book_store_rails_32x/public/422.html +26 -0
- data/test_apps/book_store_rails_32x/public/500.html +25 -0
- data/test_apps/book_store_rails_32x/public/favicon.ico +0 -0
- data/test_apps/book_store_rails_32x/public/index.html +241 -0
- data/test_apps/book_store_rails_32x/public/robots.txt +5 -0
- data/test_apps/book_store_rails_32x/script/cucumber +10 -0
- data/test_apps/book_store_rails_32x/script/rails +6 -0
- data/test_apps/book_store_rails_32x/test/fixtures/.gitkeep +0 -0
- data/test_apps/book_store_rails_32x/test/functional/.gitkeep +0 -0
- data/test_apps/book_store_rails_32x/test/integration/.gitkeep +0 -0
- data/test_apps/book_store_rails_32x/test/performance/browsing_test.rb +12 -0
- data/test_apps/book_store_rails_32x/test/test_helper.rb +13 -0
- data/test_apps/book_store_rails_32x/test/unit/.gitkeep +0 -0
- data/test_apps/book_store_rails_32x/vendor/assets/javascripts/.gitkeep +0 -0
- data/test_apps/book_store_rails_32x/vendor/assets/stylesheets/.gitkeep +0 -0
- data/test_apps/book_store_rails_32x/vendor/plugins/.gitkeep +0 -0
- metadata +452 -0
@@ -0,0 +1,113 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<books type="array">
|
3
|
+
<book>
|
4
|
+
<id type="integer">1</id>
|
5
|
+
<name>Book 1</name>
|
6
|
+
<chapters type="array">
|
7
|
+
<chapter>
|
8
|
+
<id type="integer">2</id>
|
9
|
+
<title>Chapter 2</title>
|
10
|
+
<introduction>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus purus nulla, condimentum vitae hendrerit nec, blandit et felis. Suspendisse vulputate mollis suscipit. Vivamus non libero quis urna gravida euismod quis in nisi. Morbi turpis orci, posuere nec ultrices ut, egestas ac purus. Morbi id pretium erat. In ullamcorper, ligula id porta pellentesque, sem turpis ultricies libero, non elementum ipsum neque at dui. Donec auctor nulla id mi dapibus id faucibus felis mollis. Curabitur imperdiet tristique nisi, consectetur molestie purus accumsan id. Curabitur lacinia diam et nisl iaculis eleifend. Quisque turpis elit, volutpat eget dapibus sed, egestas nec leo. Mauris dignissim tellus non lorem fringilla pharetra.</introduction>
|
11
|
+
<pages type="array">
|
12
|
+
<page>
|
13
|
+
<id type="integer">5</id>
|
14
|
+
<content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus purus nulla, condimentum vitae hendrerit nec, blandit et felis. Suspendisse vulputate mollis suscipit. Vivamus non libero quis urna gravida euismod quis in nisi. Morbi turpis orci, posuere nec ultrices ut, egestas ac purus. Morbi id pretium erat. In ullamcorper, ligula id porta pellentesque, sem turpis ultricies libero, non elementum ipsum neque at dui. Donec auctor nulla id mi dapibus id faucibus felis mollis. Curabitur imperdiet tristique nisi, consectetur molestie purus accumsan id. Curabitur lacinia diam et nisl iaculis eleifend. Quisque turpis elit, volutpat eget dapibus sed, egestas nec leo. Mauris dignissim tellus non lorem fringilla pharetra.</content>
|
15
|
+
<number>1</number>
|
16
|
+
</page>
|
17
|
+
<page>
|
18
|
+
<id type="integer">6</id>
|
19
|
+
<content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus purus nulla, condimentum vitae hendrerit nec, blandit et felis. Suspendisse vulputate mollis suscipit. Vivamus non libero quis urna gravida euismod quis in nisi. Morbi turpis orci, posuere nec ultrices ut, egestas ac purus. Morbi id pretium erat. In ullamcorper, ligula id porta pellentesque, sem turpis ultricies libero, non elementum ipsum neque at dui. Donec auctor nulla id mi dapibus id faucibus felis mollis. Curabitur imperdiet tristique nisi, consectetur molestie purus accumsan id. Curabitur lacinia diam et nisl iaculis eleifend. Quisque turpis elit, volutpat eget dapibus sed, egestas nec leo. Mauris dignissim tellus non lorem fringilla pharetra.</content>
|
20
|
+
<number>2</number>
|
21
|
+
</page>
|
22
|
+
<page>
|
23
|
+
<id type="integer">7</id>
|
24
|
+
<content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus purus nulla, condimentum vitae hendrerit nec, blandit et felis. Suspendisse vulputate mollis suscipit. Vivamus non libero quis urna gravida euismod quis in nisi. Morbi turpis orci, posuere nec ultrices ut, egestas ac purus. Morbi id pretium erat. In ullamcorper, ligula id porta pellentesque, sem turpis ultricies libero, non elementum ipsum neque at dui. Donec auctor nulla id mi dapibus id faucibus felis mollis. Curabitur imperdiet tristique nisi, consectetur molestie purus accumsan id. Curabitur lacinia diam et nisl iaculis eleifend. Quisque turpis elit, volutpat eget dapibus sed, egestas nec leo. Mauris dignissim tellus non lorem fringilla pharetra.</content>
|
25
|
+
<number>3</number>
|
26
|
+
</page>
|
27
|
+
<page>
|
28
|
+
<id type="integer">8</id>
|
29
|
+
<content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus purus nulla, condimentum vitae hendrerit nec, blandit et felis. Suspendisse vulputate mollis suscipit. Vivamus non libero quis urna gravida euismod quis in nisi. Morbi turpis orci, posuere nec ultrices ut, egestas ac purus. Morbi id pretium erat. In ullamcorper, ligula id porta pellentesque, sem turpis ultricies libero, non elementum ipsum neque at dui. Donec auctor nulla id mi dapibus id faucibus felis mollis. Curabitur imperdiet tristique nisi, consectetur molestie purus accumsan id. Curabitur lacinia diam et nisl iaculis eleifend. Quisque turpis elit, volutpat eget dapibus sed, egestas nec leo. Mauris dignissim tellus non lorem fringilla pharetra.</content>
|
30
|
+
<number>4</number>
|
31
|
+
</page>
|
32
|
+
</pages>
|
33
|
+
</chapter>
|
34
|
+
<chapter>
|
35
|
+
<id type="integer">3</id>
|
36
|
+
<title>Chapter 3</title>
|
37
|
+
<introduction>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus purus nulla, condimentum vitae hendrerit nec, blandit et felis. Suspendisse vulputate mollis suscipit. Vivamus non libero quis urna gravida euismod quis in nisi. Morbi turpis orci, posuere nec ultrices ut, egestas ac purus. Morbi id pretium erat. In ullamcorper, ligula id porta pellentesque, sem turpis ultricies libero, non elementum ipsum neque at dui. Donec auctor nulla id mi dapibus id faucibus felis mollis. Curabitur imperdiet tristique nisi, consectetur molestie purus accumsan id. Curabitur lacinia diam et nisl iaculis eleifend. Quisque turpis elit, volutpat eget dapibus sed, egestas nec leo. Mauris dignissim tellus non lorem fringilla pharetra.</introduction>
|
38
|
+
<pages type="array">
|
39
|
+
<page>
|
40
|
+
<id type="integer">9</id>
|
41
|
+
<content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus purus nulla, condimentum vitae hendrerit nec, blandit et felis. Suspendisse vulputate mollis suscipit. Vivamus non libero quis urna gravida euismod quis in nisi. Morbi turpis orci, posuere nec ultrices ut, egestas ac purus. Morbi id pretium erat. In ullamcorper, ligula id porta pellentesque, sem turpis ultricies libero, non elementum ipsum neque at dui. Donec auctor nulla id mi dapibus id faucibus felis mollis. Curabitur imperdiet tristique nisi, consectetur molestie purus accumsan id. Curabitur lacinia diam et nisl iaculis eleifend. Quisque turpis elit, volutpat eget dapibus sed, egestas nec leo. Mauris dignissim tellus non lorem fringilla pharetra.</content>
|
42
|
+
<number>1</number>
|
43
|
+
</page>
|
44
|
+
<page>
|
45
|
+
<id type="integer">10</id>
|
46
|
+
<content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus purus nulla, condimentum vitae hendrerit nec, blandit et felis. Suspendisse vulputate mollis suscipit. Vivamus non libero quis urna gravida euismod quis in nisi. Morbi turpis orci, posuere nec ultrices ut, egestas ac purus. Morbi id pretium erat. In ullamcorper, ligula id porta pellentesque, sem turpis ultricies libero, non elementum ipsum neque at dui. Donec auctor nulla id mi dapibus id faucibus felis mollis. Curabitur imperdiet tristique nisi, consectetur molestie purus accumsan id. Curabitur lacinia diam et nisl iaculis eleifend. Quisque turpis elit, volutpat eget dapibus sed, egestas nec leo. Mauris dignissim tellus non lorem fringilla pharetra.</content>
|
47
|
+
<number>2</number>
|
48
|
+
</page>
|
49
|
+
<page>
|
50
|
+
<id type="integer">11</id>
|
51
|
+
<content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus purus nulla, condimentum vitae hendrerit nec, blandit et felis. Suspendisse vulputate mollis suscipit. Vivamus non libero quis urna gravida euismod quis in nisi. Morbi turpis orci, posuere nec ultrices ut, egestas ac purus. Morbi id pretium erat. In ullamcorper, ligula id porta pellentesque, sem turpis ultricies libero, non elementum ipsum neque at dui. Donec auctor nulla id mi dapibus id faucibus felis mollis. Curabitur imperdiet tristique nisi, consectetur molestie purus accumsan id. Curabitur lacinia diam et nisl iaculis eleifend. Quisque turpis elit, volutpat eget dapibus sed, egestas nec leo. Mauris dignissim tellus non lorem fringilla pharetra.</content>
|
52
|
+
<number>3</number>
|
53
|
+
</page>
|
54
|
+
</pages>
|
55
|
+
</chapter>
|
56
|
+
</chapters>
|
57
|
+
</book>
|
58
|
+
<book>
|
59
|
+
<id type="integer">2</id>
|
60
|
+
<name>Book 1</name>
|
61
|
+
<chapters type="array">
|
62
|
+
<chapter>
|
63
|
+
<id type="integer">4</id>
|
64
|
+
<title>Chapter 1</title>
|
65
|
+
<introduction>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus purus nulla, condimentum vitae hendrerit nec, blandit et felis. Suspendisse vulputate mollis suscipit. Vivamus non libero quis urna gravida euismod quis in nisi. Morbi turpis orci, posuere nec ultrices ut, egestas ac purus. Morbi id pretium erat. In ullamcorper, ligula id porta pellentesque, sem turpis ultricies libero, non elementum ipsum neque at dui. Donec auctor nulla id mi dapibus id faucibus felis mollis. Curabitur imperdiet tristique nisi, consectetur molestie purus accumsan id. Curabitur lacinia diam et nisl iaculis eleifend. Quisque turpis elit, volutpat eget dapibus sed, egestas nec leo. Mauris dignissim tellus non lorem fringilla pharetra.</introduction>
|
66
|
+
<pages type="array">
|
67
|
+
<page>
|
68
|
+
<id type="integer">12</id>
|
69
|
+
<content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus purus nulla, condimentum vitae hendrerit nec, blandit et felis. Suspendisse vulputate mollis suscipit. Vivamus non libero quis urna gravida euismod quis in nisi. Morbi turpis orci, posuere nec ultrices ut, egestas ac purus. Morbi id pretium erat. In ullamcorper, ligula id porta pellentesque, sem turpis ultricies libero, non elementum ipsum neque at dui. Donec auctor nulla id mi dapibus id faucibus felis mollis. Curabitur imperdiet tristique nisi, consectetur molestie purus accumsan id. Curabitur lacinia diam et nisl iaculis eleifend. Quisque turpis elit, volutpat eget dapibus sed, egestas nec leo. Mauris dignissim tellus non lorem fringilla pharetra.</content>
|
70
|
+
<number>1</number>
|
71
|
+
</page>
|
72
|
+
<page>
|
73
|
+
<id type="integer">13</id>
|
74
|
+
<content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus purus nulla, condimentum vitae hendrerit nec, blandit et felis. Suspendisse vulputate mollis suscipit. Vivamus non libero quis urna gravida euismod quis in nisi. Morbi turpis orci, posuere nec ultrices ut, egestas ac purus. Morbi id pretium erat. In ullamcorper, ligula id porta pellentesque, sem turpis ultricies libero, non elementum ipsum neque at dui. Donec auctor nulla id mi dapibus id faucibus felis mollis. Curabitur imperdiet tristique nisi, consectetur molestie purus accumsan id. Curabitur lacinia diam et nisl iaculis eleifend. Quisque turpis elit, volutpat eget dapibus sed, egestas nec leo. Mauris dignissim tellus non lorem fringilla pharetra.</content>
|
75
|
+
<number>2</number>
|
76
|
+
</page>
|
77
|
+
<page>
|
78
|
+
<id type="integer">14</id>
|
79
|
+
<content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus purus nulla, condimentum vitae hendrerit nec, blandit et felis. Suspendisse vulputate mollis suscipit. Vivamus non libero quis urna gravida euismod quis in nisi. Morbi turpis orci, posuere nec ultrices ut, egestas ac purus. Morbi id pretium erat. In ullamcorper, ligula id porta pellentesque, sem turpis ultricies libero, non elementum ipsum neque at dui. Donec auctor nulla id mi dapibus id faucibus felis mollis. Curabitur imperdiet tristique nisi, consectetur molestie purus accumsan id. Curabitur lacinia diam et nisl iaculis eleifend. Quisque turpis elit, volutpat eget dapibus sed, egestas nec leo. Mauris dignissim tellus non lorem fringilla pharetra.</content>
|
80
|
+
<number>3</number>
|
81
|
+
</page>
|
82
|
+
<page>
|
83
|
+
<id type="integer">15</id>
|
84
|
+
<content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus purus nulla, condimentum vitae hendrerit nec, blandit et felis. Suspendisse vulputate mollis suscipit. Vivamus non libero quis urna gravida euismod quis in nisi. Morbi turpis orci, posuere nec ultrices ut, egestas ac purus. Morbi id pretium erat. In ullamcorper, ligula id porta pellentesque, sem turpis ultricies libero, non elementum ipsum neque at dui. Donec auctor nulla id mi dapibus id faucibus felis mollis. Curabitur imperdiet tristique nisi, consectetur molestie purus accumsan id. Curabitur lacinia diam et nisl iaculis eleifend. Quisque turpis elit, volutpat eget dapibus sed, egestas nec leo. Mauris dignissim tellus non lorem fringilla pharetra.</content>
|
85
|
+
<number>4</number>
|
86
|
+
</page>
|
87
|
+
</pages>
|
88
|
+
</chapter>
|
89
|
+
<chapter>
|
90
|
+
<id type="integer">6</id>
|
91
|
+
<title>Chapter 3</title>
|
92
|
+
<introduction>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus purus nulla, condimentum vitae hendrerit nec, blandit et felis. Suspendisse vulputate mollis suscipit. Vivamus non libero quis urna gravida euismod quis in nisi. Morbi turpis orci, posuere nec ultrices ut, egestas ac purus. Morbi id pretium erat. In ullamcorper, ligula id porta pellentesque, sem turpis ultricies libero, non elementum ipsum neque at dui. Donec auctor nulla id mi dapibus id faucibus felis mollis. Curabitur imperdiet tristique nisi, consectetur molestie purus accumsan id. Curabitur lacinia diam et nisl iaculis eleifend. Quisque turpis elit, volutpat eget dapibus sed, egestas nec leo. Mauris dignissim tellus non lorem fringilla pharetra.</introduction>
|
93
|
+
<pages type="array">
|
94
|
+
<page>
|
95
|
+
<id type="integer">20</id>
|
96
|
+
<content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus purus nulla, condimentum vitae hendrerit nec, blandit et felis. Suspendisse vulputate mollis suscipit. Vivamus non libero quis urna gravida euismod quis in nisi. Morbi turpis orci, posuere nec ultrices ut, egestas ac purus. Morbi id pretium erat. In ullamcorper, ligula id porta pellentesque, sem turpis ultricies libero, non elementum ipsum neque at dui. Donec auctor nulla id mi dapibus id faucibus felis mollis. Curabitur imperdiet tristique nisi, consectetur molestie purus accumsan id. Curabitur lacinia diam et nisl iaculis eleifend. Quisque turpis elit, volutpat eget dapibus sed, egestas nec leo. Mauris dignissim tellus non lorem fringilla pharetra.</content>
|
97
|
+
<number>1</number>
|
98
|
+
</page>
|
99
|
+
<page>
|
100
|
+
<id type="integer">21</id>
|
101
|
+
<content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus purus nulla, condimentum vitae hendrerit nec, blandit et felis. Suspendisse vulputate mollis suscipit. Vivamus non libero quis urna gravida euismod quis in nisi. Morbi turpis orci, posuere nec ultrices ut, egestas ac purus. Morbi id pretium erat. In ullamcorper, ligula id porta pellentesque, sem turpis ultricies libero, non elementum ipsum neque at dui. Donec auctor nulla id mi dapibus id faucibus felis mollis. Curabitur imperdiet tristique nisi, consectetur molestie purus accumsan id. Curabitur lacinia diam et nisl iaculis eleifend. Quisque turpis elit, volutpat eget dapibus sed, egestas nec leo. Mauris dignissim tellus non lorem fringilla pharetra.</content>
|
102
|
+
<number>2</number>
|
103
|
+
</page>
|
104
|
+
<page>
|
105
|
+
<id type="integer">22</id>
|
106
|
+
<content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus purus nulla, condimentum vitae hendrerit nec, blandit et felis. Suspendisse vulputate mollis suscipit. Vivamus non libero quis urna gravida euismod quis in nisi. Morbi turpis orci, posuere nec ultrices ut, egestas ac purus. Morbi id pretium erat. In ullamcorper, ligula id porta pellentesque, sem turpis ultricies libero, non elementum ipsum neque at dui. Donec auctor nulla id mi dapibus id faucibus felis mollis. Curabitur imperdiet tristique nisi, consectetur molestie purus accumsan id. Curabitur lacinia diam et nisl iaculis eleifend. Quisque turpis elit, volutpat eget dapibus sed, egestas nec leo. Mauris dignissim tellus non lorem fringilla pharetra.</content>
|
107
|
+
<number>3</number>
|
108
|
+
</page>
|
109
|
+
</pages>
|
110
|
+
</chapter>
|
111
|
+
</chapters>
|
112
|
+
</book>
|
113
|
+
</books>
|
@@ -0,0 +1,167 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<books type="array">
|
3
|
+
<book>
|
4
|
+
<id type="integer">1</id>
|
5
|
+
<name>Book 1</name>
|
6
|
+
<chapters type="array">
|
7
|
+
<chapter>
|
8
|
+
<id type="integer">1</id>
|
9
|
+
<title>Chapter 1</title>
|
10
|
+
<introduction>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus purus nulla, condimentum vitae hendrerit nec, blandit et felis. Suspendisse vulputate mollis suscipit. Vivamus non libero quis urna gravida euismod quis in nisi. Morbi turpis orci, posuere nec ultrices ut, egestas ac purus. Morbi id pretium erat. In ullamcorper, ligula id porta pellentesque, sem turpis ultricies libero, non elementum ipsum neque at dui. Donec auctor nulla id mi dapibus id faucibus felis mollis. Curabitur imperdiet tristique nisi, consectetur molestie purus accumsan id. Curabitur lacinia diam et nisl iaculis eleifend. Quisque turpis elit, volutpat eget dapibus sed, egestas nec leo. Mauris dignissim tellus non lorem fringilla pharetra.</introduction>
|
11
|
+
<pages type="array">
|
12
|
+
<page>
|
13
|
+
<id type="integer">1</id>
|
14
|
+
<content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus purus nulla, condimentum vitae hendrerit nec, blandit et felis. Suspendisse vulputate mollis suscipit. Vivamus non libero quis urna gravida euismod quis in nisi. Morbi turpis orci, posuere nec ultrices ut, egestas ac purus. Morbi id pretium erat. In ullamcorper, ligula id porta pellentesque, sem turpis ultricies libero, non elementum ipsum neque at dui. Donec auctor nulla id mi dapibus id faucibus felis mollis. Curabitur imperdiet tristique nisi, consectetur molestie purus accumsan id. Curabitur lacinia diam et nisl iaculis eleifend. Quisque turpis elit, volutpat eget dapibus sed, egestas nec leo. Mauris dignissim tellus non lorem fringilla pharetra.</content>
|
15
|
+
<number>1</number>
|
16
|
+
</page>
|
17
|
+
<page>
|
18
|
+
<id type="integer">2</id>
|
19
|
+
<content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus purus nulla, condimentum vitae hendrerit nec, blandit et felis. Suspendisse vulputate mollis suscipit. Vivamus non libero quis urna gravida euismod quis in nisi. Morbi turpis orci, posuere nec ultrices ut, egestas ac purus. Morbi id pretium erat. In ullamcorper, ligula id porta pellentesque, sem turpis ultricies libero, non elementum ipsum neque at dui. Donec auctor nulla id mi dapibus id faucibus felis mollis. Curabitur imperdiet tristique nisi, consectetur molestie purus accumsan id. Curabitur lacinia diam et nisl iaculis eleifend. Quisque turpis elit, volutpat eget dapibus sed, egestas nec leo. Mauris dignissim tellus non lorem fringilla pharetra.</content>
|
20
|
+
<number>2</number>
|
21
|
+
</page>
|
22
|
+
<page>
|
23
|
+
<id type="integer">3</id>
|
24
|
+
<content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus purus nulla, condimentum vitae hendrerit nec, blandit et felis. Suspendisse vulputate mollis suscipit. Vivamus non libero quis urna gravida euismod quis in nisi. Morbi turpis orci, posuere nec ultrices ut, egestas ac purus. Morbi id pretium erat. In ullamcorper, ligula id porta pellentesque, sem turpis ultricies libero, non elementum ipsum neque at dui. Donec auctor nulla id mi dapibus id faucibus felis mollis. Curabitur imperdiet tristique nisi, consectetur molestie purus accumsan id. Curabitur lacinia diam et nisl iaculis eleifend. Quisque turpis elit, volutpat eget dapibus sed, egestas nec leo. Mauris dignissim tellus non lorem fringilla pharetra.</content>
|
25
|
+
<number>3</number>
|
26
|
+
</page>
|
27
|
+
<page>
|
28
|
+
<id type="integer">4</id>
|
29
|
+
<content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus purus nulla, condimentum vitae hendrerit nec, blandit et felis. Suspendisse vulputate mollis suscipit. Vivamus non libero quis urna gravida euismod quis in nisi. Morbi turpis orci, posuere nec ultrices ut, egestas ac purus. Morbi id pretium erat. In ullamcorper, ligula id porta pellentesque, sem turpis ultricies libero, non elementum ipsum neque at dui. Donec auctor nulla id mi dapibus id faucibus felis mollis. Curabitur imperdiet tristique nisi, consectetur molestie purus accumsan id. Curabitur lacinia diam et nisl iaculis eleifend. Quisque turpis elit, volutpat eget dapibus sed, egestas nec leo. Mauris dignissim tellus non lorem fringilla pharetra.</content>
|
30
|
+
<number>4</number>
|
31
|
+
</page>
|
32
|
+
</pages>
|
33
|
+
</chapter>
|
34
|
+
<chapter>
|
35
|
+
<id type="integer">2</id>
|
36
|
+
<title>Chapter 2</title>
|
37
|
+
<introduction>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus purus nulla, condimentum vitae hendrerit nec, blandit et felis. Suspendisse vulputate mollis suscipit. Vivamus non libero quis urna gravida euismod quis in nisi. Morbi turpis orci, posuere nec ultrices ut, egestas ac purus. Morbi id pretium erat. In ullamcorper, ligula id porta pellentesque, sem turpis ultricies libero, non elementum ipsum neque at dui. Donec auctor nulla id mi dapibus id faucibus felis mollis. Curabitur imperdiet tristique nisi, consectetur molestie purus accumsan id. Curabitur lacinia diam et nisl iaculis eleifend. Quisque turpis elit, volutpat eget dapibus sed, egestas nec leo. Mauris dignissim tellus non lorem fringilla pharetra.</introduction>
|
38
|
+
<pages type="array">
|
39
|
+
<page>
|
40
|
+
<id type="integer">5</id>
|
41
|
+
<content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus purus nulla, condimentum vitae hendrerit nec, blandit et felis. Suspendisse vulputate mollis suscipit. Vivamus non libero quis urna gravida euismod quis in nisi. Morbi turpis orci, posuere nec ultrices ut, egestas ac purus. Morbi id pretium erat. In ullamcorper, ligula id porta pellentesque, sem turpis ultricies libero, non elementum ipsum neque at dui. Donec auctor nulla id mi dapibus id faucibus felis mollis. Curabitur imperdiet tristique nisi, consectetur molestie purus accumsan id. Curabitur lacinia diam et nisl iaculis eleifend. Quisque turpis elit, volutpat eget dapibus sed, egestas nec leo. Mauris dignissim tellus non lorem fringilla pharetra.</content>
|
42
|
+
<number>1</number>
|
43
|
+
</page>
|
44
|
+
<page>
|
45
|
+
<id type="integer">6</id>
|
46
|
+
<content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus purus nulla, condimentum vitae hendrerit nec, blandit et felis. Suspendisse vulputate mollis suscipit. Vivamus non libero quis urna gravida euismod quis in nisi. Morbi turpis orci, posuere nec ultrices ut, egestas ac purus. Morbi id pretium erat. In ullamcorper, ligula id porta pellentesque, sem turpis ultricies libero, non elementum ipsum neque at dui. Donec auctor nulla id mi dapibus id faucibus felis mollis. Curabitur imperdiet tristique nisi, consectetur molestie purus accumsan id. Curabitur lacinia diam et nisl iaculis eleifend. Quisque turpis elit, volutpat eget dapibus sed, egestas nec leo. Mauris dignissim tellus non lorem fringilla pharetra.</content>
|
47
|
+
<number>2</number>
|
48
|
+
</page>
|
49
|
+
<page>
|
50
|
+
<id type="integer">7</id>
|
51
|
+
<content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus purus nulla, condimentum vitae hendrerit nec, blandit et felis. Suspendisse vulputate mollis suscipit. Vivamus non libero quis urna gravida euismod quis in nisi. Morbi turpis orci, posuere nec ultrices ut, egestas ac purus. Morbi id pretium erat. In ullamcorper, ligula id porta pellentesque, sem turpis ultricies libero, non elementum ipsum neque at dui. Donec auctor nulla id mi dapibus id faucibus felis mollis. Curabitur imperdiet tristique nisi, consectetur molestie purus accumsan id. Curabitur lacinia diam et nisl iaculis eleifend. Quisque turpis elit, volutpat eget dapibus sed, egestas nec leo. Mauris dignissim tellus non lorem fringilla pharetra.</content>
|
52
|
+
<number>3</number>
|
53
|
+
</page>
|
54
|
+
<page>
|
55
|
+
<id type="integer">8</id>
|
56
|
+
<content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus purus nulla, condimentum vitae hendrerit nec, blandit et felis. Suspendisse vulputate mollis suscipit. Vivamus non libero quis urna gravida euismod quis in nisi. Morbi turpis orci, posuere nec ultrices ut, egestas ac purus. Morbi id pretium erat. In ullamcorper, ligula id porta pellentesque, sem turpis ultricies libero, non elementum ipsum neque at dui. Donec auctor nulla id mi dapibus id faucibus felis mollis. Curabitur imperdiet tristique nisi, consectetur molestie purus accumsan id. Curabitur lacinia diam et nisl iaculis eleifend. Quisque turpis elit, volutpat eget dapibus sed, egestas nec leo. Mauris dignissim tellus non lorem fringilla pharetra.</content>
|
57
|
+
<number>4</number>
|
58
|
+
</page>
|
59
|
+
</pages>
|
60
|
+
</chapter>
|
61
|
+
<chapter>
|
62
|
+
<id type="integer">3</id>
|
63
|
+
<title>Chapter 3</title>
|
64
|
+
<introduction>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus purus nulla, condimentum vitae hendrerit nec, blandit et felis. Suspendisse vulputate mollis suscipit. Vivamus non libero quis urna gravida euismod quis in nisi. Morbi turpis orci, posuere nec ultrices ut, egestas ac purus. Morbi id pretium erat. In ullamcorper, ligula id porta pellentesque, sem turpis ultricies libero, non elementum ipsum neque at dui. Donec auctor nulla id mi dapibus id faucibus felis mollis. Curabitur imperdiet tristique nisi, consectetur molestie purus accumsan id. Curabitur lacinia diam et nisl iaculis eleifend. Quisque turpis elit, volutpat eget dapibus sed, egestas nec leo. Mauris dignissim tellus non lorem fringilla pharetra.</introduction>
|
65
|
+
<pages type="array">
|
66
|
+
<page>
|
67
|
+
<id type="integer">9</id>
|
68
|
+
<content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus purus nulla, condimentum vitae hendrerit nec, blandit et felis. Suspendisse vulputate mollis suscipit. Vivamus non libero quis urna gravida euismod quis in nisi. Morbi turpis orci, posuere nec ultrices ut, egestas ac purus. Morbi id pretium erat. In ullamcorper, ligula id porta pellentesque, sem turpis ultricies libero, non elementum ipsum neque at dui. Donec auctor nulla id mi dapibus id faucibus felis mollis. Curabitur imperdiet tristique nisi, consectetur molestie purus accumsan id. Curabitur lacinia diam et nisl iaculis eleifend. Quisque turpis elit, volutpat eget dapibus sed, egestas nec leo. Mauris dignissim tellus non lorem fringilla pharetra.</content>
|
69
|
+
<number>1</number>
|
70
|
+
</page>
|
71
|
+
<page>
|
72
|
+
<id type="integer">10</id>
|
73
|
+
<content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus purus nulla, condimentum vitae hendrerit nec, blandit et felis. Suspendisse vulputate mollis suscipit. Vivamus non libero quis urna gravida euismod quis in nisi. Morbi turpis orci, posuere nec ultrices ut, egestas ac purus. Morbi id pretium erat. In ullamcorper, ligula id porta pellentesque, sem turpis ultricies libero, non elementum ipsum neque at dui. Donec auctor nulla id mi dapibus id faucibus felis mollis. Curabitur imperdiet tristique nisi, consectetur molestie purus accumsan id. Curabitur lacinia diam et nisl iaculis eleifend. Quisque turpis elit, volutpat eget dapibus sed, egestas nec leo. Mauris dignissim tellus non lorem fringilla pharetra.</content>
|
74
|
+
<number>2</number>
|
75
|
+
</page>
|
76
|
+
<page>
|
77
|
+
<id type="integer">11</id>
|
78
|
+
<content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus purus nulla, condimentum vitae hendrerit nec, blandit et felis. Suspendisse vulputate mollis suscipit. Vivamus non libero quis urna gravida euismod quis in nisi. Morbi turpis orci, posuere nec ultrices ut, egestas ac purus. Morbi id pretium erat. In ullamcorper, ligula id porta pellentesque, sem turpis ultricies libero, non elementum ipsum neque at dui. Donec auctor nulla id mi dapibus id faucibus felis mollis. Curabitur imperdiet tristique nisi, consectetur molestie purus accumsan id. Curabitur lacinia diam et nisl iaculis eleifend. Quisque turpis elit, volutpat eget dapibus sed, egestas nec leo. Mauris dignissim tellus non lorem fringilla pharetra.</content>
|
79
|
+
<number>3</number>
|
80
|
+
</page>
|
81
|
+
</pages>
|
82
|
+
</chapter>
|
83
|
+
</chapters>
|
84
|
+
</book>
|
85
|
+
<book>
|
86
|
+
<id type="integer">2</id>
|
87
|
+
<name>Book 1</name>
|
88
|
+
<chapters type="array">
|
89
|
+
<chapter>
|
90
|
+
<id type="integer">4</id>
|
91
|
+
<title>Chapter 1</title>
|
92
|
+
<introduction>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus purus nulla, condimentum vitae hendrerit nec, blandit et felis. Suspendisse vulputate mollis suscipit. Vivamus non libero quis urna gravida euismod quis in nisi. Morbi turpis orci, posuere nec ultrices ut, egestas ac purus. Morbi id pretium erat. In ullamcorper, ligula id porta pellentesque, sem turpis ultricies libero, non elementum ipsum neque at dui. Donec auctor nulla id mi dapibus id faucibus felis mollis. Curabitur imperdiet tristique nisi, consectetur molestie purus accumsan id. Curabitur lacinia diam et nisl iaculis eleifend. Quisque turpis elit, volutpat eget dapibus sed, egestas nec leo. Mauris dignissim tellus non lorem fringilla pharetra.</introduction>
|
93
|
+
<pages type="array">
|
94
|
+
<page>
|
95
|
+
<id type="integer">12</id>
|
96
|
+
<content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus purus nulla, condimentum vitae hendrerit nec, blandit et felis. Suspendisse vulputate mollis suscipit. Vivamus non libero quis urna gravida euismod quis in nisi. Morbi turpis orci, posuere nec ultrices ut, egestas ac purus. Morbi id pretium erat. In ullamcorper, ligula id porta pellentesque, sem turpis ultricies libero, non elementum ipsum neque at dui. Donec auctor nulla id mi dapibus id faucibus felis mollis. Curabitur imperdiet tristique nisi, consectetur molestie purus accumsan id. Curabitur lacinia diam et nisl iaculis eleifend. Quisque turpis elit, volutpat eget dapibus sed, egestas nec leo. Mauris dignissim tellus non lorem fringilla pharetra.</content>
|
97
|
+
<number>1</number>
|
98
|
+
</page>
|
99
|
+
<page>
|
100
|
+
<id type="integer">13</id>
|
101
|
+
<content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus purus nulla, condimentum vitae hendrerit nec, blandit et felis. Suspendisse vulputate mollis suscipit. Vivamus non libero quis urna gravida euismod quis in nisi. Morbi turpis orci, posuere nec ultrices ut, egestas ac purus. Morbi id pretium erat. In ullamcorper, ligula id porta pellentesque, sem turpis ultricies libero, non elementum ipsum neque at dui. Donec auctor nulla id mi dapibus id faucibus felis mollis. Curabitur imperdiet tristique nisi, consectetur molestie purus accumsan id. Curabitur lacinia diam et nisl iaculis eleifend. Quisque turpis elit, volutpat eget dapibus sed, egestas nec leo. Mauris dignissim tellus non lorem fringilla pharetra.</content>
|
102
|
+
<number>2</number>
|
103
|
+
</page>
|
104
|
+
<page>
|
105
|
+
<id type="integer">14</id>
|
106
|
+
<content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus purus nulla, condimentum vitae hendrerit nec, blandit et felis. Suspendisse vulputate mollis suscipit. Vivamus non libero quis urna gravida euismod quis in nisi. Morbi turpis orci, posuere nec ultrices ut, egestas ac purus. Morbi id pretium erat. In ullamcorper, ligula id porta pellentesque, sem turpis ultricies libero, non elementum ipsum neque at dui. Donec auctor nulla id mi dapibus id faucibus felis mollis. Curabitur imperdiet tristique nisi, consectetur molestie purus accumsan id. Curabitur lacinia diam et nisl iaculis eleifend. Quisque turpis elit, volutpat eget dapibus sed, egestas nec leo. Mauris dignissim tellus non lorem fringilla pharetra.</content>
|
107
|
+
<number>3</number>
|
108
|
+
</page>
|
109
|
+
<page>
|
110
|
+
<id type="integer">15</id>
|
111
|
+
<content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus purus nulla, condimentum vitae hendrerit nec, blandit et felis. Suspendisse vulputate mollis suscipit. Vivamus non libero quis urna gravida euismod quis in nisi. Morbi turpis orci, posuere nec ultrices ut, egestas ac purus. Morbi id pretium erat. In ullamcorper, ligula id porta pellentesque, sem turpis ultricies libero, non elementum ipsum neque at dui. Donec auctor nulla id mi dapibus id faucibus felis mollis. Curabitur imperdiet tristique nisi, consectetur molestie purus accumsan id. Curabitur lacinia diam et nisl iaculis eleifend. Quisque turpis elit, volutpat eget dapibus sed, egestas nec leo. Mauris dignissim tellus non lorem fringilla pharetra.</content>
|
112
|
+
<number>4</number>
|
113
|
+
</page>
|
114
|
+
</pages>
|
115
|
+
</chapter>
|
116
|
+
<chapter>
|
117
|
+
<id type="integer">5</id>
|
118
|
+
<title>Chapter 2</title>
|
119
|
+
<introduction>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus purus nulla, condimentum vitae hendrerit nec, blandit et felis. Suspendisse vulputate mollis suscipit. Vivamus non libero quis urna gravida euismod quis in nisi. Morbi turpis orci, posuere nec ultrices ut, egestas ac purus. Morbi id pretium erat. In ullamcorper, ligula id porta pellentesque, sem turpis ultricies libero, non elementum ipsum neque at dui. Donec auctor nulla id mi dapibus id faucibus felis mollis. Curabitur imperdiet tristique nisi, consectetur molestie purus accumsan id. Curabitur lacinia diam et nisl iaculis eleifend. Quisque turpis elit, volutpat eget dapibus sed, egestas nec leo. Mauris dignissim tellus non lorem fringilla pharetra.</introduction>
|
120
|
+
<pages type="array">
|
121
|
+
<page>
|
122
|
+
<id type="integer">16</id>
|
123
|
+
<content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus purus nulla, condimentum vitae hendrerit nec, blandit et felis. Suspendisse vulputate mollis suscipit. Vivamus non libero quis urna gravida euismod quis in nisi. Morbi turpis orci, posuere nec ultrices ut, egestas ac purus. Morbi id pretium erat. In ullamcorper, ligula id porta pellentesque, sem turpis ultricies libero, non elementum ipsum neque at dui. Donec auctor nulla id mi dapibus id faucibus felis mollis. Curabitur imperdiet tristique nisi, consectetur molestie purus accumsan id. Curabitur lacinia diam et nisl iaculis eleifend. Quisque turpis elit, volutpat eget dapibus sed, egestas nec leo. Mauris dignissim tellus non lorem fringilla pharetra.</content>
|
124
|
+
<number>1</number>
|
125
|
+
</page>
|
126
|
+
<page>
|
127
|
+
<id type="integer">17</id>
|
128
|
+
<content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus purus nulla, condimentum vitae hendrerit nec, blandit et felis. Suspendisse vulputate mollis suscipit. Vivamus non libero quis urna gravida euismod quis in nisi. Morbi turpis orci, posuere nec ultrices ut, egestas ac purus. Morbi id pretium erat. In ullamcorper, ligula id porta pellentesque, sem turpis ultricies libero, non elementum ipsum neque at dui. Donec auctor nulla id mi dapibus id faucibus felis mollis. Curabitur imperdiet tristique nisi, consectetur molestie purus accumsan id. Curabitur lacinia diam et nisl iaculis eleifend. Quisque turpis elit, volutpat eget dapibus sed, egestas nec leo. Mauris dignissim tellus non lorem fringilla pharetra.</content>
|
129
|
+
<number>2</number>
|
130
|
+
</page>
|
131
|
+
<page>
|
132
|
+
<id type="integer">18</id>
|
133
|
+
<content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus purus nulla, condimentum vitae hendrerit nec, blandit et felis. Suspendisse vulputate mollis suscipit. Vivamus non libero quis urna gravida euismod quis in nisi. Morbi turpis orci, posuere nec ultrices ut, egestas ac purus. Morbi id pretium erat. In ullamcorper, ligula id porta pellentesque, sem turpis ultricies libero, non elementum ipsum neque at dui. Donec auctor nulla id mi dapibus id faucibus felis mollis. Curabitur imperdiet tristique nisi, consectetur molestie purus accumsan id. Curabitur lacinia diam et nisl iaculis eleifend. Quisque turpis elit, volutpat eget dapibus sed, egestas nec leo. Mauris dignissim tellus non lorem fringilla pharetra.</content>
|
134
|
+
<number>3</number>
|
135
|
+
</page>
|
136
|
+
<page>
|
137
|
+
<id type="integer">19</id>
|
138
|
+
<content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus purus nulla, condimentum vitae hendrerit nec, blandit et felis. Suspendisse vulputate mollis suscipit. Vivamus non libero quis urna gravida euismod quis in nisi. Morbi turpis orci, posuere nec ultrices ut, egestas ac purus. Morbi id pretium erat. In ullamcorper, ligula id porta pellentesque, sem turpis ultricies libero, non elementum ipsum neque at dui. Donec auctor nulla id mi dapibus id faucibus felis mollis. Curabitur imperdiet tristique nisi, consectetur molestie purus accumsan id. Curabitur lacinia diam et nisl iaculis eleifend. Quisque turpis elit, volutpat eget dapibus sed, egestas nec leo. Mauris dignissim tellus non lorem fringilla pharetra.</content>
|
139
|
+
<number>4</number>
|
140
|
+
</page>
|
141
|
+
</pages>
|
142
|
+
</chapter>
|
143
|
+
<chapter>
|
144
|
+
<id type="integer">6</id>
|
145
|
+
<title>Chapter 3</title>
|
146
|
+
<introduction>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus purus nulla, condimentum vitae hendrerit nec, blandit et felis. Suspendisse vulputate mollis suscipit. Vivamus non libero quis urna gravida euismod quis in nisi. Morbi turpis orci, posuere nec ultrices ut, egestas ac purus. Morbi id pretium erat. In ullamcorper, ligula id porta pellentesque, sem turpis ultricies libero, non elementum ipsum neque at dui. Donec auctor nulla id mi dapibus id faucibus felis mollis. Curabitur imperdiet tristique nisi, consectetur molestie purus accumsan id. Curabitur lacinia diam et nisl iaculis eleifend. Quisque turpis elit, volutpat eget dapibus sed, egestas nec leo. Mauris dignissim tellus non lorem fringilla pharetra.</introduction>
|
147
|
+
<pages type="array">
|
148
|
+
<page>
|
149
|
+
<id type="integer">20</id>
|
150
|
+
<content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus purus nulla, condimentum vitae hendrerit nec, blandit et felis. Suspendisse vulputate mollis suscipit. Vivamus non libero quis urna gravida euismod quis in nisi. Morbi turpis orci, posuere nec ultrices ut, egestas ac purus. Morbi id pretium erat. In ullamcorper, ligula id porta pellentesque, sem turpis ultricies libero, non elementum ipsum neque at dui. Donec auctor nulla id mi dapibus id faucibus felis mollis. Curabitur imperdiet tristique nisi, consectetur molestie purus accumsan id. Curabitur lacinia diam et nisl iaculis eleifend. Quisque turpis elit, volutpat eget dapibus sed, egestas nec leo. Mauris dignissim tellus non lorem fringilla pharetra.</content>
|
151
|
+
<number>1</number>
|
152
|
+
</page>
|
153
|
+
<page>
|
154
|
+
<id type="integer">21</id>
|
155
|
+
<content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus purus nulla, condimentum vitae hendrerit nec, blandit et felis. Suspendisse vulputate mollis suscipit. Vivamus non libero quis urna gravida euismod quis in nisi. Morbi turpis orci, posuere nec ultrices ut, egestas ac purus. Morbi id pretium erat. In ullamcorper, ligula id porta pellentesque, sem turpis ultricies libero, non elementum ipsum neque at dui. Donec auctor nulla id mi dapibus id faucibus felis mollis. Curabitur imperdiet tristique nisi, consectetur molestie purus accumsan id. Curabitur lacinia diam et nisl iaculis eleifend. Quisque turpis elit, volutpat eget dapibus sed, egestas nec leo. Mauris dignissim tellus non lorem fringilla pharetra.</content>
|
156
|
+
<number>2</number>
|
157
|
+
</page>
|
158
|
+
<page>
|
159
|
+
<id type="integer">22</id>
|
160
|
+
<content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus purus nulla, condimentum vitae hendrerit nec, blandit et felis. Suspendisse vulputate mollis suscipit. Vivamus non libero quis urna gravida euismod quis in nisi. Morbi turpis orci, posuere nec ultrices ut, egestas ac purus. Morbi id pretium erat. In ullamcorper, ligula id porta pellentesque, sem turpis ultricies libero, non elementum ipsum neque at dui. Donec auctor nulla id mi dapibus id faucibus felis mollis. Curabitur imperdiet tristique nisi, consectetur molestie purus accumsan id. Curabitur lacinia diam et nisl iaculis eleifend. Quisque turpis elit, volutpat eget dapibus sed, egestas nec leo. Mauris dignissim tellus non lorem fringilla pharetra.</content>
|
161
|
+
<number>3</number>
|
162
|
+
</page>
|
163
|
+
</pages>
|
164
|
+
</chapter>
|
165
|
+
</chapters>
|
166
|
+
</book>
|
167
|
+
</books>
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module NavigationHelpers
|
2
|
+
# Maps a name to a path. Used by the
|
3
|
+
#
|
4
|
+
# When /^I go to (.+)$/ do |page_name|
|
5
|
+
#
|
6
|
+
# step definition in web_steps.rb
|
7
|
+
#
|
8
|
+
def path_to(page_name)
|
9
|
+
case page_name
|
10
|
+
|
11
|
+
when /^the home\s?page$/
|
12
|
+
'/'
|
13
|
+
|
14
|
+
# Add more mappings here.
|
15
|
+
# Here is an example that pulls values out of the Regexp:
|
16
|
+
#
|
17
|
+
# when /^(.*)'s profile page$/i
|
18
|
+
# user_profile_path(User.find_by_login($1))
|
19
|
+
|
20
|
+
else
|
21
|
+
begin
|
22
|
+
page_name =~ /^the (.*) page$/
|
23
|
+
path_components = $1.split(/\s+/)
|
24
|
+
self.send(path_components.push('path').join('_').to_sym)
|
25
|
+
rescue NoMethodError, ArgumentError
|
26
|
+
raise "Can't find mapping from \"#{page_name}\" to a path.\n" +
|
27
|
+
"Now, go and add a mapping in #{__FILE__}"
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
World(NavigationHelpers)
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module HtmlSelectorsHelpers
|
2
|
+
# Maps a name to a selector. Used primarily by the
|
3
|
+
#
|
4
|
+
# When /^(.+) within (.+)$/ do |step, scope|
|
5
|
+
#
|
6
|
+
# step definitions in web_steps.rb
|
7
|
+
#
|
8
|
+
def selector_for(locator)
|
9
|
+
case locator
|
10
|
+
|
11
|
+
when "the page"
|
12
|
+
"html > body"
|
13
|
+
|
14
|
+
# Add more mappings here.
|
15
|
+
# Here is an example that pulls values out of the Regexp:
|
16
|
+
#
|
17
|
+
# when /^the (notice|error|info) flash$/
|
18
|
+
# ".flash.#{$1}"
|
19
|
+
|
20
|
+
# You can also return an array to use a different selector
|
21
|
+
# type, like:
|
22
|
+
#
|
23
|
+
# when /the header/
|
24
|
+
# [:xpath, "//header"]
|
25
|
+
|
26
|
+
# This allows you to provide a quoted selector as the scope
|
27
|
+
# for "within" steps as was previously the default for the
|
28
|
+
# web steps:
|
29
|
+
when /^"(.+)"$/
|
30
|
+
$1
|
31
|
+
|
32
|
+
else
|
33
|
+
raise "Can't find mapping from \"#{locator}\" to a selector.\n" +
|
34
|
+
"Now, go and add a mapping in #{__FILE__}"
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
World(HtmlSelectorsHelpers)
|
@@ -0,0 +1,34 @@
|
|
1
|
+
Feature: Synchronise database with XML
|
2
|
+
As a Developer
|
3
|
+
I need to synchronise the my database with an XML document
|
4
|
+
So my database reflects the content that exists in the XML document
|
5
|
+
|
6
|
+
Scenario Outline: Synchronise when I have some matching records in the database
|
7
|
+
Given I have a fresh set of books
|
8
|
+
And I have the "<xml_file>" file
|
9
|
+
When I synchronise with "<xml_file>"
|
10
|
+
Then the books in the database will be identical to those in "<xml_file>"
|
11
|
+
And the book price will be identical to those in "<xml_file>"
|
12
|
+
And the chapters will be identical to those in "<xml_file>"
|
13
|
+
And the database will contain identical pages for the chapters as those in "<xml_file>"
|
14
|
+
|
15
|
+
Examples:
|
16
|
+
| xml_file |
|
17
|
+
| features/support/fixtures/xml/ms_access/books_changed.xml |
|
18
|
+
| features/support/fixtures/xml/books_changed.xml |
|
19
|
+
|
20
|
+
|
21
|
+
Scenario Outline: Synchronise when there are no records in the database
|
22
|
+
Given I have no books
|
23
|
+
And I have the "<xml_file>" file
|
24
|
+
When I synchronise with "<xml_file>"
|
25
|
+
Then the books in the database will be identical to those in "<xml_file>"
|
26
|
+
And the chapters will be identical to those in "<xml_file>"
|
27
|
+
And the database will contain identical pages for the chapters as those in "<xml_file>"
|
28
|
+
|
29
|
+
Examples:
|
30
|
+
| xml_file |
|
31
|
+
| features/support/fixtures/xml/books_changed.xml |
|
32
|
+
| features/support/fixtures/xml/ms_access/books_changed.xml |
|
33
|
+
|
34
|
+
Scenario: A one to one association exists on the current ActiveRecord class
|
@@ -0,0 +1,34 @@
|
|
1
|
+
Feature: Synchronise one to many relationships
|
2
|
+
As a Developer
|
3
|
+
I need to synchronise one to many relationships in my database with an XML document
|
4
|
+
So my database reflects the content that exists in the XML document
|
5
|
+
|
6
|
+
Scenario: Create records when none exist in the database
|
7
|
+
Given I have a fresh set of books without any chapters
|
8
|
+
And I have the "features/support/fixtures/xml/books_with_chapters.xml" file
|
9
|
+
When I synchronise with "features/support/fixtures/xml/books_with_chapters.xml"
|
10
|
+
Then the chapters will be identical to those in "features/support/fixtures/xml/books_with_chapters.xml"
|
11
|
+
|
12
|
+
Scenario: Update existing records in the database
|
13
|
+
Given I have a fresh set of books
|
14
|
+
And I have the "features/support/fixtures/xml/books_with_changed_chapters.xml" file
|
15
|
+
When I synchronise with "features/support/fixtures/xml/books_with_changed_chapters.xml"
|
16
|
+
Then the chapters will be identical to those in "features/support/fixtures/xml/books_with_changed_chapters.xml"
|
17
|
+
|
18
|
+
Scenario: Replace records in the database
|
19
|
+
Given I have a fresh set of books
|
20
|
+
And I have the "features/support/fixtures/xml/books_with_mismatched_chapters.xml" file
|
21
|
+
When I synchronise with "features/support/fixtures/xml/books_with_mismatched_chapters.xml"
|
22
|
+
Then the chapters will be identical to those in "features/support/fixtures/xml/books_with_mismatched_chapters.xml"
|
23
|
+
|
24
|
+
Scenario: Parent changes records in the database
|
25
|
+
Given I have a fresh set of books
|
26
|
+
And I have the "features/support/fixtures/xml/books_with_moved_chapters.xml" file
|
27
|
+
When I synchronise with "features/support/fixtures/xml/books_with_moved_chapters.xml"
|
28
|
+
Then the chapters will be identical to those in "features/support/fixtures/xml/books_with_moved_chapters.xml"
|
29
|
+
|
30
|
+
Scenario: Remove records in the database
|
31
|
+
Given I have a fresh set of books
|
32
|
+
And I have the "features/support/fixtures/xml/books_with_removed_chapters.xml" file
|
33
|
+
When I synchronise with "features/support/fixtures/xml/books_one_to_one_removed.xml"
|
34
|
+
Then the chapters will be identical to those in "features/support/fixtures/xml/books_one_to_one_removed.xml"
|
@@ -0,0 +1,33 @@
|
|
1
|
+
Feature: Synchronise one to one relationships
|
2
|
+
As a Developer
|
3
|
+
I need to synchronise one to one relationships in my database with an XML document
|
4
|
+
So my database reflects the content that exists in the XML document
|
5
|
+
|
6
|
+
Scenario: Create records when none exist in the database
|
7
|
+
Given I have a fresh set of books without the one to one record
|
8
|
+
And I have the "features/support/fixtures/xml/books_one_to_one_changed.xml" file
|
9
|
+
When I synchronise with "features/support/fixtures/xml/books_one_to_one_changed.xml"
|
10
|
+
Then the book price will be identical to those in "features/support/fixtures/xml/books_one_to_one_changed.xml"
|
11
|
+
|
12
|
+
Scenario: Update existing records in the database
|
13
|
+
Given I have a fresh set of books
|
14
|
+
And I have the "features/support/fixtures/xml/books_one_to_one_changed.xml" file
|
15
|
+
When I synchronise with "features/support/fixtures/xml/books_one_to_one_changed.xml"
|
16
|
+
Then the book price will be identical to those in "features/support/fixtures/xml/books_one_to_one_changed.xml"
|
17
|
+
|
18
|
+
Scenario: Replace records in the database
|
19
|
+
Given I have a fresh set of books
|
20
|
+
And I have the "features/support/fixtures/xml/books_one_to_one_mismatch.xml" file
|
21
|
+
When I synchronise with "features/support/fixtures/xml/books_one_to_one_mismatch.xml"
|
22
|
+
Then the book price will be identical to those in "features/support/fixtures/xml/books_one_to_one_mismatch.xml"
|
23
|
+
|
24
|
+
Scenario: Remove records in the database
|
25
|
+
Given I have a fresh set of books
|
26
|
+
And I have the "features/support/fixtures/xml/books_one_to_one_removed.xml" file
|
27
|
+
When I synchronise with "features/support/fixtures/xml/books_one_to_one_removed.xml"
|
28
|
+
Then the book price will be identical to those in "features/support/fixtures/xml/books_one_to_one_removed.xml"
|
29
|
+
|
30
|
+
Scenario: Duplicate records in the xml
|
31
|
+
Given I have a fresh set of books
|
32
|
+
And I have the "features/support/fixtures/xml/books_with_many_one_to_one_records.xml" file
|
33
|
+
When I synchronise with "features/support/fixtures/xml/books_with_many_one_to_one_records.xml" I should get an error
|