mno-enterprise-core 2.0.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.
- checksums.yaml +7 -0
- data/LICENSE +1 -0
- data/Rakefile +12 -0
- data/app/assets/images/mno_enterprise/main-logo.png +0 -0
- data/app/controllers/mno_enterprise/application_controller.rb +116 -0
- data/app/helpers/mno_enterprise/application_helper.rb +67 -0
- data/app/helpers/mno_enterprise/impersonate_helper.rb +27 -0
- data/app/models/mno_enterprise/ability.rb +6 -0
- data/app/models/mno_enterprise/app.rb +72 -0
- data/app/models/mno_enterprise/app_instance.rb +36 -0
- data/app/models/mno_enterprise/app_instances_sync.rb +6 -0
- data/app/models/mno_enterprise/arrears_situation.rb +6 -0
- data/app/models/mno_enterprise/audit_event.rb +21 -0
- data/app/models/mno_enterprise/base_resource.rb +228 -0
- data/app/models/mno_enterprise/credit_card.rb +40 -0
- data/app/models/mno_enterprise/deletion_request.rb +35 -0
- data/app/models/mno_enterprise/impac/dashboard.rb +36 -0
- data/app/models/mno_enterprise/impac/dashboard_provisioner.rb +5 -0
- data/app/models/mno_enterprise/impac/kpi.rb +9 -0
- data/app/models/mno_enterprise/impac/widget.rb +13 -0
- data/app/models/mno_enterprise/invoice.rb +53 -0
- data/app/models/mno_enterprise/org_invite.rb +50 -0
- data/app/models/mno_enterprise/organization.rb +33 -0
- data/app/models/mno_enterprise/team.rb +50 -0
- data/app/models/mno_enterprise/tenant.rb +5 -0
- data/app/models/mno_enterprise/tenant_invoice.rb +5 -0
- data/app/models/mno_enterprise/user.rb +183 -0
- data/app/pdf/mno_enterprise/invoice_pdf.rb +516 -0
- data/config/initializers/audit_log.rb +5 -0
- data/config/locales/devise.en.yml +60 -0
- data/config/routes.rb +2 -0
- data/config/styleguide.yml +106 -0
- data/lib/accountingjs_serializer.rb +51 -0
- data/lib/devise/controllers/extension_helpers.rb +52 -0
- data/lib/devise/extension_routes.rb +11 -0
- data/lib/devise/hooks/password_expirable.rb +5 -0
- data/lib/devise/models/password_expirable.rb +28 -0
- data/lib/devise/models/remote_authenticatable.rb +48 -0
- data/lib/devise/strategies/remote_authenticatable.rb +44 -0
- data/lib/devise_extension.rb +36 -0
- data/lib/faraday/adapter/net_http_no_proxy.rb +19 -0
- data/lib/generators/mno_enterprise/database_extension/USAGE +11 -0
- data/lib/generators/mno_enterprise/database_extension/database_extension_generator.rb +36 -0
- data/lib/generators/mno_enterprise/database_extension/templates/model.rb +9 -0
- data/lib/generators/mno_enterprise/dummy/dummy_generator.rb +98 -0
- data/lib/generators/mno_enterprise/dummy/templates/rails/application.rb.erb +9 -0
- data/lib/generators/mno_enterprise/dummy/templates/rails/boot.rb.erb +6 -0
- data/lib/generators/mno_enterprise/dummy/templates/rails/database.yml +22 -0
- data/lib/generators/mno_enterprise/dummy/templates/rails/routes.rb +8 -0
- data/lib/generators/mno_enterprise/dummy/templates/rails/test-env.rb +45 -0
- data/lib/generators/mno_enterprise/install/install_generator.rb +140 -0
- data/lib/generators/mno_enterprise/install/templates/Procfile +1 -0
- data/lib/generators/mno_enterprise/install/templates/config/initializers/mno_enterprise.rb +135 -0
- data/lib/generators/mno_enterprise/install/templates/config/mno_enterprise_styleguide.yml +104 -0
- data/lib/generators/mno_enterprise/install/templates/javascripts/mno_enterprise_extensions.js +7 -0
- data/lib/generators/mno_enterprise/install/templates/stylesheets/main.less_erb +25 -0
- data/lib/generators/mno_enterprise/install/templates/stylesheets/theme.less_erb +59 -0
- data/lib/generators/mno_enterprise/install/templates/stylesheets/variables.less +337 -0
- data/lib/generators/mno_enterprise/install/templates/tasks/sprites.rake +14 -0
- data/lib/generators/mno_enterprise/puma_stack/puma_stack_generator.rb +58 -0
- data/lib/generators/mno_enterprise/templates/scripts/monit/app-server.conf +8 -0
- data/lib/generators/mno_enterprise/templates/scripts/nginx/app +51 -0
- data/lib/generators/mno_enterprise/templates/scripts/puma.rb +25 -0
- data/lib/generators/mno_enterprise/templates/scripts/setup.sh +27 -0
- data/lib/generators/mno_enterprise/templates/scripts/upstart/app-web-hotrestart.conf +26 -0
- data/lib/generators/mno_enterprise/templates/scripts/upstart/app-web-server.conf +34 -0
- data/lib/generators/mno_enterprise/templates/scripts/upstart/app-web.conf +2 -0
- data/lib/generators/mno_enterprise/templates/scripts/upstart/app.conf +11 -0
- data/lib/her_extension/her_orm_adapter.rb +54 -0
- data/lib/her_extension/middleware/mnoe_api_v1_parse_json.rb +54 -0
- data/lib/her_extension/model/associations/association.rb +61 -0
- data/lib/her_extension/model/associations/association_proxy.rb +34 -0
- data/lib/her_extension/model/associations/has_many_association.rb +115 -0
- data/lib/her_extension/model/attributes.rb +43 -0
- data/lib/her_extension/model/orm.rb +59 -0
- data/lib/her_extension/model/parse.rb +40 -0
- data/lib/her_extension/model/relation.rb +92 -0
- data/lib/her_extension/validations/remote_uniqueness_validation.rb +33 -0
- data/lib/html_processor.rb +106 -0
- data/lib/mandrill_client.rb +58 -0
- data/lib/mno-enterprise-core.rb +1 -0
- data/lib/mno_enterprise/concerns.rb +4 -0
- data/lib/mno_enterprise/concerns/controllers.rb +6 -0
- data/lib/mno_enterprise/concerns/controllers/angular_csrf.rb +59 -0
- data/lib/mno_enterprise/concerns/controllers/auth.rb +9 -0
- data/lib/mno_enterprise/concerns/controllers/auth/confirmations_controller.rb +187 -0
- data/lib/mno_enterprise/concerns/controllers/auth/passwords_controller.rb +54 -0
- data/lib/mno_enterprise/concerns/controllers/auth/registrations_controller.rb +136 -0
- data/lib/mno_enterprise/concerns/controllers/auth/sessions_controller.rb +54 -0
- data/lib/mno_enterprise/concerns/controllers/auth/unlocks_controller.rb +50 -0
- data/lib/mno_enterprise/concerns/models.rb +6 -0
- data/lib/mno_enterprise/concerns/models/ability.rb +108 -0
- data/lib/mno_enterprise/concerns/models/app_instance.rb +100 -0
- data/lib/mno_enterprise/concerns/models/organization.rb +102 -0
- data/lib/mno_enterprise/core.rb +279 -0
- data/lib/mno_enterprise/database_extendable.rb +57 -0
- data/lib/mno_enterprise/engine.rb +33 -0
- data/lib/mno_enterprise/testing_support/ability_test_helper.rb +10 -0
- data/lib/mno_enterprise/testing_support/common_rake.rb +19 -0
- data/lib/mno_enterprise/testing_support/factories.rb +13 -0
- data/lib/mno_enterprise/testing_support/factories/app_instances.rb +30 -0
- data/lib/mno_enterprise/testing_support/factories/apps.rb +45 -0
- data/lib/mno_enterprise/testing_support/factories/arrears_situation.rb +14 -0
- data/lib/mno_enterprise/testing_support/factories/audit_event.rb +15 -0
- data/lib/mno_enterprise/testing_support/factories/credit_card.rb +33 -0
- data/lib/mno_enterprise/testing_support/factories/deletion_request.rb +17 -0
- data/lib/mno_enterprise/testing_support/factories/impac/dashboards.rb +15 -0
- data/lib/mno_enterprise/testing_support/factories/impac/kpis.rb +20 -0
- data/lib/mno_enterprise/testing_support/factories/impac/widgets.rb +15 -0
- data/lib/mno_enterprise/testing_support/factories/invoices.rb +51 -0
- data/lib/mno_enterprise/testing_support/factories/org_invite.rb +24 -0
- data/lib/mno_enterprise/testing_support/factories/organizations.rb +25 -0
- data/lib/mno_enterprise/testing_support/factories/team.rb +17 -0
- data/lib/mno_enterprise/testing_support/factories/tenant.rb +12 -0
- data/lib/mno_enterprise/testing_support/factories/tenant_invoice.rb +29 -0
- data/lib/mno_enterprise/testing_support/factories/users.rb +48 -0
- data/lib/mno_enterprise/testing_support/jpi_v1_test_helper.rb +49 -0
- data/lib/mno_enterprise/testing_support/mno_enterprise_api_test_helper.rb +167 -0
- data/lib/mno_enterprise/testing_support/mnoe_faraday_test_adapter.rb +173 -0
- data/lib/mno_enterprise/testing_support/organizations_shared_helpers.rb +175 -0
- data/lib/mno_enterprise/testing_support/user_action_shared.rb +47 -0
- data/lib/mno_enterprise/version.rb +3 -0
- data/lib/tasks/mno_enterprise_tasks.rake +22 -0
- data/spec/controllers/mno_enterprise/angular_csrf_spec.rb +42 -0
- data/spec/lib/her_extension/her_orm_adapter.rb +7 -0
- data/spec/lib/her_extension/model/relation_spec.rb +7 -0
- data/spec/lib/mandrill_client_spec.rb +64 -0
- data/spec/mno_enterprise_spec.rb +79 -0
- data/spec/models/mno_enterprise/app_instance_spec.rb +7 -0
- data/spec/models/mno_enterprise/app_spec.rb +62 -0
- data/spec/models/mno_enterprise/base_resource_spec.rb +28 -0
- data/spec/models/mno_enterprise/deletion_request_spec.rb +26 -0
- data/spec/models/mno_enterprise/invoice_spec.rb +7 -0
- data/spec/models/mno_enterprise/organization_spec.rb +7 -0
- data/spec/models/mno_enterprise/user_spec.rb +44 -0
- data/spec/rails_helper.rb +73 -0
- data/spec/spec_helper.rb +78 -0
- metadata +421 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
require 'active_support/concern'
|
|
2
|
+
require 'active_support/core_ext'
|
|
3
|
+
|
|
4
|
+
# TODO: specs
|
|
5
|
+
module MnoEnterprise::DatabaseExtendable
|
|
6
|
+
extend ActiveSupport::Concern
|
|
7
|
+
|
|
8
|
+
class_methods do
|
|
9
|
+
def database_extendable(*fields)
|
|
10
|
+
fields.each do |field|
|
|
11
|
+
delegate field.to_sym, "#{field}=".to_sym, to: :extension
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
after_save :save_extensions
|
|
15
|
+
after_destroy :delete_extension
|
|
16
|
+
|
|
17
|
+
include MnoEnterprise::DatabaseExtendable::InstanceMethods
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
module InstanceMethods
|
|
22
|
+
def extension
|
|
23
|
+
@extension ||= klass.where(foreign_key => self.uid).first_or_initialize
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def extension=(extension)
|
|
27
|
+
@extension = extension
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def klass
|
|
31
|
+
"#{self.class}Extension".constantize
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def foreign_key
|
|
35
|
+
self.class.to_s.foreign_key.gsub(/_id/, '_uid')
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
protected
|
|
39
|
+
def save_extensions
|
|
40
|
+
# Set extension foreign key
|
|
41
|
+
if extension.send(foreign_key).blank?
|
|
42
|
+
extension.send("#{foreign_key}=", self.uid)
|
|
43
|
+
end
|
|
44
|
+
# Save at all time to 'touch' to expire the cache
|
|
45
|
+
if extension.changed?
|
|
46
|
+
extension.save
|
|
47
|
+
else
|
|
48
|
+
extension.touch
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def delete_extension
|
|
53
|
+
extension.destroy
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
module MnoEnterprise
|
|
2
|
+
class Engine < ::Rails::Engine
|
|
3
|
+
isolate_namespace MnoEnterprise
|
|
4
|
+
|
|
5
|
+
# Autoload all files and sub-directories in
|
|
6
|
+
# lib
|
|
7
|
+
config.autoload_paths += Dir["#{config.root}/lib/**/"]
|
|
8
|
+
|
|
9
|
+
# Remove testing support when not in test
|
|
10
|
+
unless Rails.env.test?
|
|
11
|
+
path_rejector = lambda { |s| s.include?('/testing_support/') }
|
|
12
|
+
config.autoload_paths.reject!(&path_rejector)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
config.generators do |g|
|
|
16
|
+
g.test_framework :rspec, fixture: true
|
|
17
|
+
g.fixture_replacement :factory_girl, :dir => 'spec/factories'
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# Allow class overriding using decorator pattern
|
|
21
|
+
# See: http://edgeguides.rubyonrails.org/engines.html#overriding-models-and-controllers
|
|
22
|
+
config.to_prepare do
|
|
23
|
+
Dir.glob(Rails.root + "app/decorators/**/*_decorator*.rb").each do |c|
|
|
24
|
+
require_dependency(c)
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# Add responding to JSON to Devise
|
|
29
|
+
config.to_prepare do
|
|
30
|
+
DeviseController.respond_to :html, :json
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
unless defined?(MnoEnterprise::Generators::InstallGenerator)
|
|
2
|
+
require 'generators/mno_enterprise/install/install_generator'
|
|
3
|
+
end
|
|
4
|
+
|
|
5
|
+
require 'generators/mno_enterprise/dummy/dummy_generator'
|
|
6
|
+
|
|
7
|
+
namespace :mno_enterprise do
|
|
8
|
+
namespace :testing do
|
|
9
|
+
desc "Generate a dummy app for testing"
|
|
10
|
+
task :create_dummy_app do
|
|
11
|
+
require "#{ENV['LIB_NAME']}"
|
|
12
|
+
|
|
13
|
+
ENV["RAILS_ENV"] = 'test'
|
|
14
|
+
|
|
15
|
+
MnoEnterprise::DummyGenerator.start %W[--quiet --lib_name=#{ENV['LIB_NAME']} --database=#{ENV['DB'].presence || 'sqlite3'}]
|
|
16
|
+
MnoEnterprise::Generators::InstallGenerator.start %w[--quiet --skip-rspec --skip-sprite --skip-factory-girl]
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
require 'factory_girl'
|
|
2
|
+
|
|
3
|
+
Dir["#{File.dirname(__FILE__)}/factories/**/*.rb"].each do |f|
|
|
4
|
+
load File.expand_path(f)
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
# FactoryGirl.define do
|
|
8
|
+
# sequence(:random_string) { FFaker::Lorem.sentence }
|
|
9
|
+
# sequence(:random_description) { FFaker::Lorem.paragraphs(1 + Kernel.rand(5)).join("\n") }
|
|
10
|
+
# sequence(:random_email) { FFaker::Internet.email }
|
|
11
|
+
|
|
12
|
+
# sequence(:sku) { |n| "SKU-#{n}" }
|
|
13
|
+
# end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Read about factories at https://github.com/thoughtbot/factory_girl
|
|
2
|
+
|
|
3
|
+
FactoryGirl.define do
|
|
4
|
+
factory :mno_enterprise_app_instance, :class => 'AppInstance' do
|
|
5
|
+
|
|
6
|
+
factory :app_instance, class: MnoEnterprise::AppInstance do
|
|
7
|
+
sequence(:id)
|
|
8
|
+
sequence(:uid) { |n| "bla#{1}.mcube.co" }
|
|
9
|
+
name "SomeApp"
|
|
10
|
+
status "running"
|
|
11
|
+
created_at 3.days.ago
|
|
12
|
+
updated_at 1.hour.ago
|
|
13
|
+
started_at 3.days.ago
|
|
14
|
+
stack "cube"
|
|
15
|
+
terminated_at nil
|
|
16
|
+
stopped_at nil
|
|
17
|
+
billing_type "hourly"
|
|
18
|
+
autostop_at nil
|
|
19
|
+
autostop_interval nil
|
|
20
|
+
next_status nil
|
|
21
|
+
soa_enabled true
|
|
22
|
+
|
|
23
|
+
app { build(:app).attributes }
|
|
24
|
+
owner { build(:organization).attributes }
|
|
25
|
+
|
|
26
|
+
# Properly build the resource with Her
|
|
27
|
+
initialize_with { new(attributes).tap { |e| e.clear_attribute_changes! } }
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# Read about factories at https://github.com/thoughtbot/factory_girl
|
|
2
|
+
|
|
3
|
+
FactoryGirl.define do
|
|
4
|
+
factory :app, class: MnoEnterprise::App do
|
|
5
|
+
sequence(:id) { |n| n }
|
|
6
|
+
sequence(:name) { |n| "TestApp#{n}" }
|
|
7
|
+
nid { name.parameterize }
|
|
8
|
+
|
|
9
|
+
description "This is a description"
|
|
10
|
+
created_at 1.day.ago
|
|
11
|
+
updated_at 2.hours.ago
|
|
12
|
+
logo "https://cdn.somedomain.com/app/2f4g2r474.jpg"
|
|
13
|
+
website "https://www.testapp.com"
|
|
14
|
+
slug { "#{id}-myapp" }
|
|
15
|
+
categories ["CRM"]
|
|
16
|
+
tags ['Foo', 'Bar']
|
|
17
|
+
key_benefits ['Super','Hyper','Good']
|
|
18
|
+
key_features ['Super','Hyper','Good']
|
|
19
|
+
testimonials [{text:'Bla', company:'Doe Pty Ltd', author: 'John'}]
|
|
20
|
+
worldwide_usage 120000
|
|
21
|
+
tiny_description "A great app"
|
|
22
|
+
stack 'cube'
|
|
23
|
+
terms_url "http://opensource.org/licenses/MIT"
|
|
24
|
+
appinfo { {} }
|
|
25
|
+
|
|
26
|
+
pricing_plans {{
|
|
27
|
+
'default' =>[{name: 'Monthly Plan', price: '20.0', currency: 'AUD', factor: '/month'}]
|
|
28
|
+
}}
|
|
29
|
+
|
|
30
|
+
trait :cloud do
|
|
31
|
+
stack 'cloud'
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
trait :connector do
|
|
35
|
+
stack 'connector'
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
factory :cloud_app, traits: [:cloud]
|
|
39
|
+
factory :connector_app, traits: [:connector]
|
|
40
|
+
|
|
41
|
+
# Properly build the resource with Her
|
|
42
|
+
initialize_with { new(attributes).tap { |e| e.clear_attribute_changes! } }
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
FactoryGirl.define do
|
|
2
|
+
factory :mno_enterprise_arrears_situation, :class => 'MnoEnterprise::ArrearsSituation' do
|
|
3
|
+
|
|
4
|
+
factory :arrears_situation, class: MnoEnterprise::ArrearsSituation do
|
|
5
|
+
sequence(:name) { |n| "Team#{n}" }
|
|
6
|
+
payment Money.new(5680,'AUD')
|
|
7
|
+
category 'payment_failed'
|
|
8
|
+
status 'pending'
|
|
9
|
+
|
|
10
|
+
# Properly build the resource with Her
|
|
11
|
+
initialize_with { new(attributes).tap { |e| e.clear_attribute_changes! } }
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
FactoryGirl.define do
|
|
2
|
+
factory :mno_enterprise_audit_event, :class => 'AuditEvent' do
|
|
3
|
+
|
|
4
|
+
factory :audit_event, class: MnoEnterprise::AuditEvent do
|
|
5
|
+
sequence(:key) { |n| "event-fab3#{n}" }
|
|
6
|
+
user_id 1
|
|
7
|
+
description 'Blabla'
|
|
8
|
+
details 'Details'
|
|
9
|
+
user { {name: 'John', surname: 'Doe'} }
|
|
10
|
+
|
|
11
|
+
# Properly build the resource with Her
|
|
12
|
+
initialize_with { new(attributes).tap { |e| e.clear_attribute_changes! } }
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Read about factories at https://github.com/thoughtbot/factory_girl
|
|
2
|
+
|
|
3
|
+
FactoryGirl.define do
|
|
4
|
+
factory :mno_enterprise_credit_card, :class => 'CreditCard' do
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
factory :credit_card, class: MnoEnterprise::CreditCard do
|
|
8
|
+
sequence(:id)
|
|
9
|
+
organization_id 265
|
|
10
|
+
created_at 3.days.ago
|
|
11
|
+
updated_at 1.hour.ago
|
|
12
|
+
|
|
13
|
+
title 'Mr.'
|
|
14
|
+
first_name 'John'
|
|
15
|
+
last_name 'Doe'
|
|
16
|
+
country 'AU'
|
|
17
|
+
masked_number 'XXXX-XXXX-XXXX-4242'
|
|
18
|
+
number nil
|
|
19
|
+
month 3
|
|
20
|
+
year 2025
|
|
21
|
+
billing_address '102 Somewhere Street'
|
|
22
|
+
billing_city 'Sydney'
|
|
23
|
+
billing_postcode '2010'
|
|
24
|
+
billing_country 'AU'
|
|
25
|
+
verification_value 'CVV'
|
|
26
|
+
|
|
27
|
+
# Properly build the resource with Her
|
|
28
|
+
initialize_with { new(attributes).tap { |e| e.clear_attribute_changes! } }
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Read about factories at https://github.com/thoughtbot/factory_girl
|
|
2
|
+
|
|
3
|
+
# This is an API resource factory generating a Hash to be used in API stubs
|
|
4
|
+
# Use as such: build(:api_user)
|
|
5
|
+
# See http://stackoverflow.com/questions/10032760/how-to-define-an-array-hash-in-factory-girl
|
|
6
|
+
FactoryGirl.define do
|
|
7
|
+
|
|
8
|
+
factory :deletion_request, class: MnoEnterprise::DeletionRequest do
|
|
9
|
+
sequence(:id)
|
|
10
|
+
sequence(:token) { |n| "1dfg567fda44f87ds89F7DS8#{n}" }
|
|
11
|
+
status 'pending'
|
|
12
|
+
|
|
13
|
+
# Properly build the resource with Her
|
|
14
|
+
initialize_with { new(attributes).tap { |e| e.clear_attribute_changes! } }
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
FactoryGirl.define do
|
|
2
|
+
|
|
3
|
+
factory :mno_enterprise_impac_dashboard, :class => 'Impac::Dashboard' do
|
|
4
|
+
factory :impac_dashboard, class: MnoEnterprise::Impac::Dashboard do
|
|
5
|
+
sequence(:id) { |n| n }
|
|
6
|
+
sequence(:name) { |n| "Random Dashboard #{n}" }
|
|
7
|
+
|
|
8
|
+
# Problem with polymorphic association ?...
|
|
9
|
+
# owner { build(:user).attributes }
|
|
10
|
+
|
|
11
|
+
# Properly build the resource with Her
|
|
12
|
+
initialize_with { new(attributes).tap { |e| e.clear_attribute_changes! } }
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
FactoryGirl.define do
|
|
2
|
+
|
|
3
|
+
factory :mno_enterprise_impac_kpi, :class => 'Impac::Kpi' do
|
|
4
|
+
factory :impac_kpi, class: MnoEnterprise::Impac::Kpi do
|
|
5
|
+
|
|
6
|
+
sequence(:id) { |n| n }
|
|
7
|
+
sequence(:name) { |n| "Random Kpi #{n}" }
|
|
8
|
+
dashboard { build(:impac_dashboard).attributes }
|
|
9
|
+
endpoint "an/endpoint"
|
|
10
|
+
element_watched "a_watchable"
|
|
11
|
+
source "impac"
|
|
12
|
+
targets {}
|
|
13
|
+
settings {}
|
|
14
|
+
extra_params {}
|
|
15
|
+
|
|
16
|
+
# Properly build the resource with Her
|
|
17
|
+
initialize_with { new(attributes).tap { |e| e.clear_attribute_changes! } }
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
FactoryGirl.define do
|
|
2
|
+
|
|
3
|
+
factory :mno_enterprise_impac_widget, :class => 'Impac::Widget' do
|
|
4
|
+
factory :impac_widget, class: MnoEnterprise::Impac::Widget do
|
|
5
|
+
sequence(:id) { |n| n }
|
|
6
|
+
sequence(:name) { |n| "Random Widget #{n}" }
|
|
7
|
+
widget_category "widget_endpoint"
|
|
8
|
+
width 3
|
|
9
|
+
dashboard { build(:impac_dashboard).attributes }
|
|
10
|
+
|
|
11
|
+
# Properly build the resource with Her
|
|
12
|
+
initialize_with { new(attributes).tap { |e| e.clear_attribute_changes! } }
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Read about factories at https://github.com/thoughtbot/factory_girl
|
|
2
|
+
|
|
3
|
+
FactoryGirl.define do
|
|
4
|
+
factory :mno_enterprise_invoice, :class => 'Invoice' do
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
factory :invoice, class: MnoEnterprise::Invoice do
|
|
8
|
+
sequence(:id)
|
|
9
|
+
sequence(:slug) { |n| "201504-NU#{n}" }
|
|
10
|
+
organization_id 265
|
|
11
|
+
|
|
12
|
+
started_at 28.days.ago
|
|
13
|
+
ended_at 3.days.ago
|
|
14
|
+
created_at 3.days.ago
|
|
15
|
+
updated_at 1.hour.ago
|
|
16
|
+
paid_at nil
|
|
17
|
+
|
|
18
|
+
price Money.new(7980,'AUD')
|
|
19
|
+
billing_address "205 Bla Street, Sydney"
|
|
20
|
+
total_due Money.new(7980,'AUD')
|
|
21
|
+
total_payable Money.new(7980,'AUD')
|
|
22
|
+
total_due_remaining Money.new(7980,'AUD')
|
|
23
|
+
credit_paid Money.new(0,'AUD')
|
|
24
|
+
|
|
25
|
+
tax_payable Money.new(590,'AUD')
|
|
26
|
+
tax_due_remaining Money.new(590,'AUD')
|
|
27
|
+
|
|
28
|
+
previous_total_due Money.new(0,'AUD')
|
|
29
|
+
previous_total_paid Money.new(0,'AUD')
|
|
30
|
+
|
|
31
|
+
tax_pips_applied 5000
|
|
32
|
+
|
|
33
|
+
billing_summary [
|
|
34
|
+
{
|
|
35
|
+
"name"=>"vTiger 5.4",
|
|
36
|
+
"usage"=>"499h",
|
|
37
|
+
"label"=>"vTiger",
|
|
38
|
+
"price_tag"=>"$19.95",
|
|
39
|
+
"lines"=>[
|
|
40
|
+
{"label"=>"Application plan", "price_tag"=>"$19.95"}
|
|
41
|
+
]
|
|
42
|
+
}
|
|
43
|
+
]
|
|
44
|
+
|
|
45
|
+
# Properly build the resource with Her
|
|
46
|
+
initialize_with { new(attributes).tap { |e| e.clear_attribute_changes! } }
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
end
|
|
51
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Read about factories at https://github.com/thoughtbot/factory_girl
|
|
2
|
+
|
|
3
|
+
FactoryGirl.define do
|
|
4
|
+
factory :mno_enterprise_org_invite, :class => 'MnoEnterprise::OrgInvite' do
|
|
5
|
+
|
|
6
|
+
factory :org_invite, class: MnoEnterprise::OrgInvite do
|
|
7
|
+
sequence(:id)
|
|
8
|
+
sequence(:token) { |n| "dfhsohflsklddfdsJDasldnjsaHsnjdlsa#{n}" }
|
|
9
|
+
sequence(:user_email) { |n| "jack.doe#{n}@maestrano.com" }
|
|
10
|
+
status "pending"
|
|
11
|
+
user { build(:user).attributes }
|
|
12
|
+
organization { build(:organization).attributes }
|
|
13
|
+
referrer { build(:user).attributes }
|
|
14
|
+
team { build(:team).attributes }
|
|
15
|
+
user_role 'Member'
|
|
16
|
+
|
|
17
|
+
created_at 3.days.ago
|
|
18
|
+
updated_at 1.hour.ago
|
|
19
|
+
|
|
20
|
+
# Properly build the resource with Her
|
|
21
|
+
initialize_with { new(attributes).tap { |e| e.clear_attribute_changes! } }
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Read about factories at https://github.com/thoughtbot/factory_girl
|
|
2
|
+
|
|
3
|
+
FactoryGirl.define do
|
|
4
|
+
factory :mno_enterprise_organization, :class => 'Organization' do
|
|
5
|
+
|
|
6
|
+
factory :organization, class: MnoEnterprise::Organization do
|
|
7
|
+
sequence(:id)
|
|
8
|
+
sequence(:uid) { |n| "org-fab3#{n}" }
|
|
9
|
+
name "Doe Inc"
|
|
10
|
+
role "Admin"
|
|
11
|
+
created_at 3.days.ago
|
|
12
|
+
updated_at 1.hour.ago
|
|
13
|
+
in_arrears? false
|
|
14
|
+
billing_currency 'AUD'
|
|
15
|
+
|
|
16
|
+
trait :with_org_invites do
|
|
17
|
+
org_invites { [build(:org_invite).attributes] }
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# Properly build the resource with Her
|
|
21
|
+
initialize_with { new(attributes).tap { |e| e.clear_attribute_changes! } }
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
end
|
|
25
|
+
end
|