fortnox-api 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.codeclimate.yml +3 -2
- data/.env.test +3 -0
- data/.rubocop.yml +32 -23
- data/.travis.yml +3 -2
- data/Guardfile +2 -2
- data/LICENSE.txt +165 -22
- data/README.md +56 -37
- data/fortnox-api.gemspec +9 -6
- data/lib/fortnox/api.rb +18 -2
- data/lib/fortnox/api/base.rb +5 -3
- data/lib/fortnox/api/environment_validation.rb +51 -6
- data/lib/fortnox/api/mappers.rb +49 -0
- data/lib/fortnox/api/mappers/base.rb +47 -0
- data/lib/fortnox/api/mappers/base/from_json.rb +78 -0
- data/lib/fortnox/api/mappers/base/to_json.rb +65 -0
- data/lib/fortnox/api/mappers/customer.rb +27 -0
- data/lib/fortnox/api/mappers/default_delivery_types.rb +13 -0
- data/lib/fortnox/api/mappers/default_templates.rb +15 -0
- data/lib/fortnox/api/mappers/edi_information.rb +22 -0
- data/lib/fortnox/api/mappers/email_information.rb +18 -0
- data/lib/fortnox/api/mappers/invoice.rb +27 -0
- data/lib/fortnox/api/mappers/invoice_row.rb +20 -0
- data/lib/fortnox/api/mappers/order.rb +23 -0
- data/lib/fortnox/api/mappers/order_row.rb +16 -0
- data/lib/fortnox/api/models.rb +2 -0
- data/lib/fortnox/api/models/base.rb +56 -13
- data/lib/fortnox/api/models/customer.rb +112 -101
- data/lib/fortnox/api/models/document_base.rb +189 -0
- data/lib/fortnox/api/models/invoice.rb +29 -195
- data/lib/fortnox/api/models/label.rb +17 -0
- data/lib/fortnox/api/models/order.rb +27 -0
- data/lib/fortnox/api/repositories.rb +2 -0
- data/lib/fortnox/api/repositories/base.rb +4 -5
- data/lib/fortnox/api/repositories/base/loaders.rb +22 -14
- data/lib/fortnox/api/repositories/base/savers.rb +30 -16
- data/lib/fortnox/api/repositories/customer.rb +3 -25
- data/lib/fortnox/api/repositories/invoice.rb +3 -22
- data/lib/fortnox/api/repositories/order.rb +16 -0
- data/lib/fortnox/api/request_handling.rb +3 -3
- data/lib/fortnox/api/types.rb +44 -0
- data/lib/fortnox/api/types/default_delivery_types.rb +20 -0
- data/lib/fortnox/api/types/default_templates.rb +23 -0
- data/lib/fortnox/api/types/defaulted.rb +11 -0
- data/lib/fortnox/api/types/document_row.rb +65 -0
- data/lib/fortnox/api/types/edi_information.rb +29 -0
- data/lib/fortnox/api/types/email_information.rb +26 -0
- data/lib/fortnox/api/types/enums.rb +75 -0
- data/lib/fortnox/api/types/invoice_row.rb +19 -0
- data/lib/fortnox/api/types/model.rb +40 -0
- data/lib/fortnox/api/types/nullable.rb +21 -0
- data/lib/fortnox/api/types/order_row.rb +16 -0
- data/lib/fortnox/api/types/required.rb +13 -0
- data/lib/fortnox/api/types/sized.rb +25 -0
- data/lib/fortnox/api/version.rb +1 -1
- data/spec/fortnox/api/base_spec.rb +85 -14
- data/spec/fortnox/api/mappers/base/from_json_spec.rb +70 -0
- data/spec/fortnox/api/mappers/base/to_json_spec.rb +76 -0
- data/spec/fortnox/api/mappers/base_spec.rb +156 -0
- data/spec/fortnox/api/mappers/contexts/json_conversion.rb +56 -0
- data/spec/fortnox/api/mappers/customer_spec.rb +25 -0
- data/spec/fortnox/api/mappers/default_delivery_types_spec.rb +12 -0
- data/spec/fortnox/api/mappers/edi_information_spec.rb +21 -0
- data/spec/fortnox/api/mappers/email_information_spec.rb +17 -0
- data/spec/fortnox/api/mappers/examples/mapper.rb +26 -0
- data/spec/fortnox/api/mappers/invoice_row_spec.rb +19 -0
- data/spec/fortnox/api/mappers/invoice_spec.rb +24 -0
- data/spec/fortnox/api/mappers/order_row_spec.rb +14 -0
- data/spec/fortnox/api/mappers/order_spec.rb +20 -0
- data/spec/fortnox/api/models/base_spec.rb +44 -22
- data/spec/fortnox/api/models/customer_spec.rb +9 -0
- data/spec/fortnox/api/models/examples/document_base.rb +13 -0
- data/spec/fortnox/api/models/examples/model.rb +13 -0
- data/spec/fortnox/api/models/invoice_spec.rb +7 -31
- data/spec/fortnox/api/models/order_spec.rb +13 -0
- data/spec/fortnox/api/repositories/customer_spec.rb +20 -76
- data/spec/fortnox/api/repositories/examples/all.rb +17 -0
- data/spec/fortnox/api/repositories/examples/find.rb +25 -0
- data/spec/fortnox/api/repositories/examples/only.rb +42 -0
- data/spec/fortnox/api/repositories/examples/save.rb +69 -0
- data/spec/fortnox/api/repositories/examples/save_with_nested_model.rb +32 -0
- data/spec/fortnox/api/repositories/examples/save_with_specially_named_attribute.rb +27 -0
- data/spec/fortnox/api/repositories/examples/search.rb +31 -0
- data/spec/fortnox/api/repositories/invoice_spec.rb +36 -5
- data/spec/fortnox/api/repositories/order_spec.rb +35 -0
- data/spec/fortnox/api/types/account_number_spec.rb +28 -0
- data/spec/fortnox/api/types/default_delivery_types_spec.rb +10 -0
- data/spec/fortnox/api/types/edi_information_spec.rb +13 -0
- data/spec/fortnox/api/types/email_information_spec.rb +13 -0
- data/spec/fortnox/api/types/email_spec.rb +29 -0
- data/spec/fortnox/api/types/enums_spec.rb +13 -0
- data/spec/fortnox/api/types/examples/document_row.rb +15 -0
- data/spec/fortnox/api/types/examples/enum.rb +48 -0
- data/spec/fortnox/api/types/examples/types.rb +9 -0
- data/spec/fortnox/api/types/house_work_types_spec.rb +60 -0
- data/spec/fortnox/api/types/invoice_row_spec.rb +9 -0
- data/spec/fortnox/api/types/model_spec.rb +56 -0
- data/spec/fortnox/api/types/nullable_spec.rb +57 -0
- data/spec/fortnox/api/types/order_row_spec.rb +13 -0
- data/spec/fortnox/api/types/required_spec.rb +42 -0
- data/spec/fortnox/api/types/sized_spec.rb +74 -0
- data/spec/fortnox/api_spec.rb +16 -15
- data/spec/spec_helper.rb +19 -9
- data/spec/support/helpers/dummy_class_helper.rb +19 -0
- data/spec/support/helpers/environment_helper.rb +7 -0
- data/spec/support/helpers/repository_helper.rb +8 -0
- data/spec/support/helpers/when_performing_helper.rb +5 -0
- data/spec/support/matchers.rb +1 -1
- data/spec/support/matchers/type.rb +17 -0
- data/spec/support/matchers/type/attribute_matcher.rb +39 -0
- data/spec/support/matchers/type/enum_matcher.rb +21 -0
- data/spec/support/matchers/type/have_account_number_matcher.rb +21 -0
- data/spec/support/matchers/type/have_country_code_matcher.rb +13 -0
- data/spec/support/matchers/type/have_currency_matcher.rb +7 -0
- data/spec/support/matchers/type/have_customer_type_matcher.rb +13 -0
- data/spec/support/matchers/type/have_default_delivery_type_matcher.rb +7 -0
- data/spec/support/matchers/type/have_discount_type_matcher.rb +7 -0
- data/spec/support/matchers/type/have_email_matcher.rb +22 -0
- data/spec/support/matchers/type/have_house_work_type_matcher.rb +7 -0
- data/spec/support/matchers/type/have_nullable_date_matcher.rb +58 -0
- data/spec/support/matchers/type/have_nullable_matcher.rb +52 -0
- data/spec/support/matchers/type/have_nullable_string_matcher.rb +49 -0
- data/spec/support/matchers/type/have_sized_float_matcher.rb +8 -0
- data/spec/support/matchers/type/have_sized_integer_matcher.rb +8 -0
- data/spec/support/matchers/type/have_sized_string_matcher.rb +35 -0
- data/spec/support/matchers/type/have_vat_type_matcher.rb +7 -0
- data/spec/support/matchers/type/numeric_matcher.rb +50 -0
- data/spec/support/matchers/type/require_attribute_matcher.rb +69 -0
- data/spec/support/matchers/type/type_matcher.rb +38 -0
- data/spec/vcr_cassettes/customers/all.yml +119 -9
- data/spec/vcr_cassettes/customers/find_id_1.yml +8 -9
- data/spec/vcr_cassettes/customers/find_new.yml +46 -0
- data/spec/vcr_cassettes/customers/save_new.yml +9 -11
- data/spec/vcr_cassettes/customers/save_old.yml +9 -12
- data/spec/vcr_cassettes/customers/save_with_specially_named_attribute.yml +45 -0
- data/spec/vcr_cassettes/customers/search_by_name.yml +66 -0
- data/spec/vcr_cassettes/customers/search_miss.yml +45 -0
- data/spec/vcr_cassettes/invoices/all.yml +104 -0
- data/spec/vcr_cassettes/invoices/filter_hit.yml +46 -0
- data/spec/vcr_cassettes/invoices/filter_invalid.yml +42 -0
- data/spec/vcr_cassettes/invoices/find_id_1.yml +47 -0
- data/spec/vcr_cassettes/invoices/find_new.yml +49 -0
- data/spec/vcr_cassettes/invoices/save_new.yml +48 -0
- data/spec/vcr_cassettes/invoices/save_old.yml +49 -0
- data/spec/vcr_cassettes/invoices/save_with_nested_model.yml +47 -0
- data/spec/vcr_cassettes/invoices/save_with_specially_named_attribute.yml +47 -0
- data/spec/vcr_cassettes/invoices/search_by_name.yml +48 -0
- data/spec/vcr_cassettes/invoices/search_miss.yml +45 -0
- data/spec/vcr_cassettes/orders/all.yml +144 -0
- data/spec/vcr_cassettes/orders/filter_hit.yml +48 -0
- data/spec/vcr_cassettes/orders/filter_invalid.yml +42 -0
- data/spec/vcr_cassettes/orders/find_id_1.yml +48 -0
- data/spec/vcr_cassettes/orders/find_new.yml +49 -0
- data/spec/vcr_cassettes/orders/house_work_type_babysitting.yml +47 -0
- data/spec/vcr_cassettes/orders/house_work_type_cleaning.yml +47 -0
- data/spec/vcr_cassettes/orders/house_work_type_construction.yml +47 -0
- data/spec/vcr_cassettes/orders/house_work_type_cooking.yml +43 -0
- data/spec/vcr_cassettes/orders/house_work_type_electricity.yml +47 -0
- data/spec/vcr_cassettes/orders/house_work_type_gardening.yml +47 -0
- data/spec/vcr_cassettes/orders/house_work_type_glassmetalwork.yml +47 -0
- data/spec/vcr_cassettes/orders/house_work_type_grounddrainagework.yml +47 -0
- data/spec/vcr_cassettes/orders/house_work_type_hvac.yml +47 -0
- data/spec/vcr_cassettes/orders/house_work_type_masonry.yml +47 -0
- data/spec/vcr_cassettes/orders/house_work_type_othercare.yml +47 -0
- data/spec/vcr_cassettes/orders/house_work_type_othercosts.yml +47 -0
- data/spec/vcr_cassettes/orders/house_work_type_paintingwallpapering.yml +47 -0
- data/spec/vcr_cassettes/orders/house_work_type_snowplowing.yml +47 -0
- data/spec/vcr_cassettes/orders/house_work_type_textileclothing.yml +47 -0
- data/spec/vcr_cassettes/orders/house_work_type_tutoring.yml +43 -0
- data/spec/vcr_cassettes/orders/save_new.yml +48 -0
- data/spec/vcr_cassettes/orders/save_old.yml +49 -0
- data/spec/vcr_cassettes/orders/save_with_nested_model.yml +47 -0
- data/spec/vcr_cassettes/orders/search_by_name.yml +47 -0
- data/spec/vcr_cassettes/orders/search_miss.yml +45 -0
- metadata +301 -71
- data/lib/fortnox/api/models/attributes/country_code.rb +0 -17
- data/lib/fortnox/api/models/attributes/currency.rb +0 -17
- data/lib/fortnox/api/models/edi_information.rb +0 -28
- data/lib/fortnox/api/models/email_information.rb +0 -25
- data/lib/fortnox/api/models/row.rb +0 -82
- data/lib/fortnox/api/repositories/base/json_convertion.rb +0 -68
- data/lib/fortnox/api/repositories/base/options.rb +0 -33
- data/lib/fortnox/api/validators.rb +0 -1
- data/lib/fortnox/api/validators/attributes/country_code.rb +0 -42
- data/lib/fortnox/api/validators/attributes/currency.rb +0 -38
- data/lib/fortnox/api/validators/base.rb +0 -70
- data/lib/fortnox/api/validators/constant.rb +0 -21
- data/lib/fortnox/api/validators/customer.rb +0 -29
- data/lib/fortnox/api/validators/edi_information.rb +0 -11
- data/lib/fortnox/api/validators/email_information.rb +0 -19
- data/lib/fortnox/api/validators/invoice.rb +0 -33
- data/lib/fortnox/api/validators/row.rb +0 -22
- data/spec/fortnox/api/models/attributes/country_code_spec.rb +0 -23
- data/spec/fortnox/api/models/attributes/currency_spec.rb +0 -23
- data/spec/fortnox/api/models/attributes/dummy_model_context.rb +0 -9
- data/spec/fortnox/api/models/row_spec.rb +0 -13
- data/spec/fortnox/api/repositories/context.rb +0 -10
- data/spec/fortnox/api/repositories/examples.rb +0 -16
- data/spec/fortnox/api/validators/attributes/country_code_spec.rb +0 -9
- data/spec/fortnox/api/validators/attributes/currency_spec.rb +0 -9
- data/spec/fortnox/api/validators/attributes/examples_for_validate.rb +0 -29
- data/spec/fortnox/api/validators/base_spec.rb +0 -61
- data/spec/fortnox/api/validators/constant_spec.rb +0 -12
- data/spec/fortnox/api/validators/context.rb +0 -102
- data/spec/fortnox/api/validators/customer_spec.rb +0 -31
- data/spec/fortnox/api/validators/edi_information_spec.rb +0 -18
- data/spec/fortnox/api/validators/email_information_spec.rb +0 -26
- data/spec/fortnox/api/validators/invoice_spec.rb +0 -36
- data/spec/fortnox/api/validators/row_spec.rb +0 -27
- data/spec/fortnox/api/validators/validator_examples.rb +0 -20
- data/spec/support/matchers/models.rb +0 -27
- data/spec/support/matchers/validators.rb +0 -36
@@ -1,31 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'fortnox/api/models/customer'
|
3
|
-
require 'fortnox/api/validators/context'
|
4
|
-
require 'fortnox/api/validators/customer'
|
5
|
-
|
6
|
-
describe Fortnox::API::Validator::Customer do
|
7
|
-
subject{ described_class.new }
|
8
|
-
|
9
|
-
include_context 'validator context' do
|
10
|
-
let( :valid_model ) do
|
11
|
-
Fortnox::API::Model::Customer.new( name: 'A customer' )
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
describe '.validate Customer' do
|
16
|
-
include_examples 'required attributes', Fortnox::API::Model::Customer
|
17
|
-
|
18
|
-
include_examples 'validates inclusion of number', :sales_account, 0, 9999.0
|
19
|
-
|
20
|
-
include_examples 'validates inclusion of string', :type, described_class::TYPES
|
21
|
-
include_examples 'validates inclusion of string', :vat_type, described_class::VAT_TYPES
|
22
|
-
include_examples 'validates inclusion of string',
|
23
|
-
:country_code,
|
24
|
-
described_class::COUNTRY_CODES,
|
25
|
-
'aaa'
|
26
|
-
include_examples 'validates inclusion of string',
|
27
|
-
:currency,
|
28
|
-
described_class::CURRENCIES,
|
29
|
-
'-_-'
|
30
|
-
end
|
31
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'fortnox/api/validators/context'
|
3
|
-
require 'fortnox/api/validators/edi_information'
|
4
|
-
require 'fortnox/api/models/edi_information'
|
5
|
-
|
6
|
-
describe Fortnox::API::Validator::EDIInformation do
|
7
|
-
let( :model_class ){ Fortnox::API::Model::EDIInformation }
|
8
|
-
|
9
|
-
subject{ described_class.new }
|
10
|
-
|
11
|
-
include_context 'validator context' do
|
12
|
-
let( :valid_model ){ model_class.new }
|
13
|
-
end
|
14
|
-
|
15
|
-
describe '.validate EDIInformation' do
|
16
|
-
it{ is_expected.to be_valid( valid_model ) }
|
17
|
-
end
|
18
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'fortnox/api/validators/context'
|
3
|
-
require 'fortnox/api/validators/email_information'
|
4
|
-
require 'fortnox/api/models/email_information'
|
5
|
-
|
6
|
-
describe Fortnox::API::Validator::EmailInformation do
|
7
|
-
let( :model_class ){ Fortnox::API::Model::EmailInformation }
|
8
|
-
|
9
|
-
subject{ described_class.new }
|
10
|
-
|
11
|
-
include_context 'validator context' do
|
12
|
-
let( :valid_model ){ model_class.new }
|
13
|
-
end
|
14
|
-
|
15
|
-
describe '.validate EmailInformation' do
|
16
|
-
context 'with required attributes' do
|
17
|
-
it{ is_expected.to be_valid( valid_model ) }
|
18
|
-
end
|
19
|
-
|
20
|
-
include_examples 'validates length of string', :email_address_to, 1024
|
21
|
-
include_examples 'validates length of string', :email_address_cc, 1024
|
22
|
-
include_examples 'validates length of string', :email_address_bcc, 1024
|
23
|
-
include_examples 'validates length of string', :email_subject, 100
|
24
|
-
include_examples 'validates length of string', :email_body, 20000
|
25
|
-
end
|
26
|
-
end
|
@@ -1,36 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'fortnox/api/models/invoice'
|
3
|
-
require 'fortnox/api/validators/context'
|
4
|
-
require 'fortnox/api/validators/invoice'
|
5
|
-
|
6
|
-
describe Fortnox::API::Validator::Invoice do
|
7
|
-
let( :model_class ){ Fortnox::API::Model::Invoice }
|
8
|
-
|
9
|
-
subject{ described_class.new }
|
10
|
-
|
11
|
-
include_context 'validator context' do
|
12
|
-
let( :valid_model ){ model_class.new( customer_number: 12345 ) }
|
13
|
-
end
|
14
|
-
|
15
|
-
describe '.validate Invoice' do
|
16
|
-
include_examples 'required attributes', Fortnox::API::Model::Invoice
|
17
|
-
|
18
|
-
include_examples 'validates length of string', :address1, 1024
|
19
|
-
include_examples 'validates length of string', :address2, 1024
|
20
|
-
include_examples 'validates length of string', :customer_name, 1024
|
21
|
-
include_examples 'validates length of string', :external_invoice_reference1, 80
|
22
|
-
include_examples 'validates length of string', :external_invoice_reference2, 80
|
23
|
-
include_examples 'validates length of string', :our_reference, 50
|
24
|
-
include_examples 'validates length of string', :phone1, 1024
|
25
|
-
include_examples 'validates length of string', :phone2, 1024
|
26
|
-
include_examples 'validates length of string', :remarks, 1024
|
27
|
-
include_examples 'validates length of string', :your_order_number, 30
|
28
|
-
include_examples 'validates length of string', :your_reference, 50
|
29
|
-
include_examples 'validates length of string', :zip_code, 1024
|
30
|
-
|
31
|
-
include_examples 'validates inclusion of number', :administration_fee, 0, 99_999_999_999.0
|
32
|
-
include_examples 'validates inclusion of number', :currency_rate, 0, 999_999_999_999_999.0
|
33
|
-
include_examples 'validates inclusion of number', :currency_unit, 0, 999_999_999_999_999.0
|
34
|
-
include_examples 'validates inclusion of number', :freight, 0, 99_999_999_999.0
|
35
|
-
end
|
36
|
-
end
|
@@ -1,27 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'fortnox/api/validators/context'
|
3
|
-
require 'fortnox/api/validators/row'
|
4
|
-
require 'fortnox/api/models/row'
|
5
|
-
|
6
|
-
describe Fortnox::API::Validator::Row do
|
7
|
-
subject{ described_class.new }
|
8
|
-
|
9
|
-
include_context 'validator context' do
|
10
|
-
let( :valid_model ){ Fortnox::API::Model::Row.new }
|
11
|
-
end
|
12
|
-
|
13
|
-
describe '.validate Row' do
|
14
|
-
context 'with required attributes' do
|
15
|
-
it{ is_expected.to be_valid( valid_model ) }
|
16
|
-
end
|
17
|
-
|
18
|
-
include_examples 'validates length of string', :article_number, 50
|
19
|
-
include_examples 'validates length of string', :description, 50
|
20
|
-
|
21
|
-
include_examples 'validates inclusion of number', :account_number, 0, 9999
|
22
|
-
include_examples 'validates inclusion of number', :delivered_quantity, 0, 9_999_999_999_999.0
|
23
|
-
include_examples 'validates inclusion of number', :discount, 0, 99_999_999_999.0
|
24
|
-
include_examples 'validates inclusion of number', :house_work_hours_to_report, 0, 99_999
|
25
|
-
include_examples 'validates inclusion of number', :price, 0, 99_999_999_999.0
|
26
|
-
end
|
27
|
-
end
|
@@ -1,20 +0,0 @@
|
|
1
|
-
shared_examples_for 'validators' do
|
2
|
-
|
3
|
-
it{ is_expected.to respond_to( :validate ) }
|
4
|
-
it{ is_expected.to respond_to( :violations ) }
|
5
|
-
it{ is_expected.to respond_to( :instance ) }
|
6
|
-
|
7
|
-
context 'when validator present' do
|
8
|
-
specify '#violations returns an empty Set when no violations present' do
|
9
|
-
expect(subject.violations).to eq(Set.new)
|
10
|
-
end
|
11
|
-
|
12
|
-
specify '#validate returns true when model valid' do
|
13
|
-
expect(subject.validate( valid_model )).to be true
|
14
|
-
end
|
15
|
-
|
16
|
-
specify '#instance returns self' do
|
17
|
-
expect(subject.instance).to be subject
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
@@ -1,27 +0,0 @@
|
|
1
|
-
RSpec::Matchers.define :upcase_lower_case_for do |attribute, value|
|
2
|
-
match do
|
3
|
-
subject = new_model( attribute, value )
|
4
|
-
expect( subject.send( attribute ) ).to eql( value.upcase )
|
5
|
-
end
|
6
|
-
|
7
|
-
failure_message do
|
8
|
-
"expected #{subject.class} to upcase #{value} case for :#{attribute}"
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
RSpec::Matchers.define :return_nil_for_invalid_types do |attribute, value|
|
13
|
-
match do
|
14
|
-
subject = new_model( attribute, value )
|
15
|
-
expect( subject.send( attribute ) ).to eql( nil )
|
16
|
-
end
|
17
|
-
|
18
|
-
failure_message do
|
19
|
-
"expected #{subject.class} to return nil when :#{attribute} is set to #{value}"
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
private
|
24
|
-
|
25
|
-
def new_model( attribute, value )
|
26
|
-
described_class.new( attribute => value )
|
27
|
-
end
|
@@ -1,36 +0,0 @@
|
|
1
|
-
RSpec::Matchers.define :be_valid do |model|
|
2
|
-
expect_validate( model, true )
|
3
|
-
end
|
4
|
-
|
5
|
-
RSpec::Matchers.define :be_invalid do |model|
|
6
|
-
expect_validate( model, false )
|
7
|
-
end
|
8
|
-
|
9
|
-
RSpec::Matchers.define :include_error_for do |model, attribute, error_type|
|
10
|
-
match do
|
11
|
-
subject.validate( model )
|
12
|
-
error_included = false
|
13
|
-
subject.violations.any? do |v|
|
14
|
-
if v.rule.attribute_name == attribute && v.rule.type == error_type
|
15
|
-
error_included = true
|
16
|
-
end
|
17
|
-
end
|
18
|
-
expect( error_included ).to eql( true )
|
19
|
-
end
|
20
|
-
|
21
|
-
description{ "include error for #{attribute}" }
|
22
|
-
|
23
|
-
failure_message do
|
24
|
-
"expected \"#{subject.violations.inspect}\" to include #{error_type} error for \"#{attribute}\""
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
private
|
29
|
-
|
30
|
-
def expect_validate( model, expected )
|
31
|
-
match{ expect( subject.validate( model ) ).to eq( expected ) }
|
32
|
-
|
33
|
-
description{ "validate #{expected}" }
|
34
|
-
|
35
|
-
failure_message{ "expected validator to validate #{expected}" }
|
36
|
-
end
|