lanes 0.0.5 → 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +0 -1
- data/Gemfile +0 -1
- data/README.md +2 -0
- data/client/lanes/data/Bootstrap.coffee +2 -2
- data/client/lanes/data/Collection.coffee +4 -0
- data/client/lanes/data/Config.coffee +0 -5
- data/client/lanes/data/Model.coffee +236 -150
- data/client/lanes/data/PubSub.coffee +6 -12
- data/client/lanes/data/Sync.coffee +1 -0
- data/client/lanes/extension/Extensions.coffee +4 -2
- data/client/lanes/lib/MakeBaseClass.coffee +1 -1
- data/client/lanes/minimal.js +11 -0
- data/client/lanes/minimal.scss.erb +12 -0
- data/client/lanes/screens/Base.coffee +1 -2
- data/client/lanes/screens/Instance.coffee +52 -0
- data/client/lanes/vendor/packaged.js +1 -2
- data/client/lanes/views/Base.coffee +12 -10
- data/client/lanes/workspace.scss.erb +3 -0
- data/client/lanes/workspace/index.js +2 -12
- data/docs/command.md +111 -0
- data/docs/model.md +188 -0
- data/docs/todo-example-part-1.md +71 -0
- data/docs/view.md +275 -0
- data/{spec/client/jasmine_examples/PlayerSpec.js → docs/welcome.md} +0 -0
- data/lanes.gemspec +3 -1
- data/lib/lanes/api/helper_methods.rb +8 -0
- data/lib/lanes/api/javascript_processor.rb +14 -10
- data/lib/lanes/api/pub_sub.rb +7 -7
- data/lib/lanes/api/request_wrapper.rb +1 -0
- data/lib/lanes/api/root.rb +2 -7
- data/lib/lanes/api/sprockets_compressor.rb +6 -2
- data/lib/lanes/api/sprockets_extension.rb +25 -9
- data/lib/lanes/api/test_specs.rb +13 -9
- data/lib/lanes/command.rb +16 -6
- data/lib/lanes/command/app.rb +11 -5
- data/lib/lanes/command/generate_model.rb +4 -3
- data/lib/lanes/command/generate_screen.rb +2 -1
- data/lib/lanes/command/generate_view.rb +1 -1
- data/lib/lanes/command/named_command.rb +5 -4
- data/lib/lanes/command/templates/Gemfile +1 -2
- data/lib/lanes/command/templates/client/data/Model.coffee +3 -3
- data/lib/lanes/command/templates/client/{namespace-extension.js → index.js} +0 -0
- data/lib/lanes/command/templates/client/screens/Screen.coffee +1 -3
- data/lib/lanes/command/templates/client/{styles/styles.scss → styles.scss} +0 -0
- data/lib/lanes/command/templates/client/views/View.coffee +1 -3
- data/lib/lanes/command/templates/config/lanes.rb +1 -1
- data/lib/lanes/command/templates/gitignore +1 -0
- data/lib/lanes/command/templates/lib/namespace/screen.rb +1 -1
- data/lib/lanes/command/templates/public/.gitkeep +0 -0
- data/lib/lanes/command/templates/spec/client/Screen.coffee +7 -0
- data/lib/lanes/command/templates/spec/client/views/ViewSpec.coffee +2 -2
- data/lib/lanes/concerns/all.rb +1 -1
- data/lib/lanes/concerns/sanitize_fields.rb +32 -0
- data/lib/lanes/concerns/set_attribute_data.rb +4 -4
- data/lib/lanes/db.rb +7 -8
- data/lib/lanes/extension.rb +37 -3
- data/lib/lanes/guard_tasks.rb +2 -2
- data/lib/lanes/model.rb +2 -2
- data/lib/lanes/screens.rb +1 -0
- data/lib/lanes/spec_helper.rb +17 -6
- data/{spec → lib/lanes}/testing_models.rb +1 -1
- data/lib/lanes/version.rb +1 -1
- data/npm-build/compile.coffee +1 -6
- data/public/javascripts/jasmine_examples/Player.js +22 -0
- data/public/javascripts/jasmine_examples/Song.js +7 -0
- data/spec/api/javascript_processor_spec.rb +6 -3
- data/spec/concerns/api_path_spec.rb +1 -1
- data/spec/concerns/association_extensions_spec.rb +7 -3
- data/spec/concerns/attr_accessor_with_default_spec.rb +1 -1
- data/spec/concerns/code_identifier_spec.rb +1 -1
- data/spec/concerns/export_associations_spec.rb +1 -1
- data/spec/concerns/export_methods_spec.rb +1 -14
- data/spec/concerns/export_scope_spec.rb +7 -9
- data/spec/concerns/exported_limits_spec.rb +1 -1
- data/spec/concerns/pub_sub_spec.rb +1 -1
- data/spec/concerns/set_attribute_data_spec.rb +16 -24
- data/spec/configuration_spec.rb +1 -1
- data/spec/helpers/lanes-helpers.coffee +61 -0
- data/spec/lanes/data/ModelSpec.coffee +152 -0
- data/spec/lanes/data/PubSubSpec.coffee +21 -0
- data/spec/{client/view → lanes/views}/BaseSpec.coffee +6 -26
- data/spec/numbers_spec.rb +1 -1
- data/spec/strings_spec.rb +1 -1
- data/views/index.erb +3 -10
- data/views/specs.erb +4 -1
- metadata +62 -16
- data/client/lanes/plugins/trigger.coffee +0 -15
- data/client/lanes/workspace/Instance.es6 +0 -64
- data/lib/lanes/concerns/sanitize_api_data.rb +0 -15
- data/spec/api/user_spec.rb +0 -52
- data/spec/fixtures/lanes/users.yml +0 -13
- data/spec/locked_fields_spec.rb +0 -27
- data/spec/role_collection_spec.rb +0 -19
- data/spec/user_role_spec.rb +0 -7
- data/spec/user_spec.rb +0 -53
data/views/specs.erb
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, minimal-ui"/>
|
7
7
|
<title>Lanes Specs</title>
|
8
8
|
|
9
|
-
<%= javascript_tag 'lanes
|
9
|
+
<%= javascript_tag 'lanes/workspace.js' %>
|
10
10
|
|
11
11
|
<% specs.css_files.each do |css_file| %>
|
12
12
|
<link rel="stylesheet" href="<%= css_file %>" type="text/css" media="screen"/>
|
@@ -15,6 +15,9 @@
|
|
15
15
|
<% specs.js_files.each do | js_file | %>
|
16
16
|
<script src="<%= js_file %>" type="text/javascript"></script>
|
17
17
|
<% end %>
|
18
|
+
<script type="text/javascript">
|
19
|
+
Lanes.Data.Bootstrap.initialize( <%= client_bootstrap_data %> );
|
20
|
+
</script>
|
18
21
|
|
19
22
|
</head>
|
20
23
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lanes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nathan Stitt
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-12-
|
11
|
+
date: 2014-12-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -262,6 +262,20 @@ dependencies:
|
|
262
262
|
- - "~>"
|
263
263
|
- !ruby/object:Gem::Version
|
264
264
|
version: '0.2'
|
265
|
+
- !ruby/object:Gem::Dependency
|
266
|
+
name: mocha
|
267
|
+
requirement: !ruby/object:Gem::Requirement
|
268
|
+
requirements:
|
269
|
+
- - "~>"
|
270
|
+
- !ruby/object:Gem::Version
|
271
|
+
version: '1.1'
|
272
|
+
type: :runtime
|
273
|
+
prerelease: false
|
274
|
+
version_requirements: !ruby/object:Gem::Requirement
|
275
|
+
requirements:
|
276
|
+
- - "~>"
|
277
|
+
- !ruby/object:Gem::Version
|
278
|
+
version: '1.1'
|
265
279
|
- !ruby/object:Gem::Dependency
|
266
280
|
name: guard-minitest
|
267
281
|
requirement: !ruby/object:Gem::Requirement
|
@@ -290,6 +304,20 @@ dependencies:
|
|
290
304
|
- - "~>"
|
291
305
|
- !ruby/object:Gem::Version
|
292
306
|
version: '0.12'
|
307
|
+
- !ruby/object:Gem::Dependency
|
308
|
+
name: closure-compiler
|
309
|
+
requirement: !ruby/object:Gem::Requirement
|
310
|
+
requirements:
|
311
|
+
- - "~>"
|
312
|
+
- !ruby/object:Gem::Version
|
313
|
+
version: '1.1'
|
314
|
+
type: :runtime
|
315
|
+
prerelease: false
|
316
|
+
version_requirements: !ruby/object:Gem::Requirement
|
317
|
+
requirements:
|
318
|
+
- - "~>"
|
319
|
+
- !ruby/object:Gem::Version
|
320
|
+
version: '1.1'
|
293
321
|
- !ruby/object:Gem::Dependency
|
294
322
|
name: guard-jasmine
|
295
323
|
requirement: !ruby/object:Gem::Requirement
|
@@ -346,6 +374,20 @@ dependencies:
|
|
346
374
|
- - "~>"
|
347
375
|
- !ruby/object:Gem::Version
|
348
376
|
version: '1.3'
|
377
|
+
- !ruby/object:Gem::Dependency
|
378
|
+
name: sanitize
|
379
|
+
requirement: !ruby/object:Gem::Requirement
|
380
|
+
requirements:
|
381
|
+
- - "~>"
|
382
|
+
- !ruby/object:Gem::Version
|
383
|
+
version: '3.0'
|
384
|
+
type: :runtime
|
385
|
+
prerelease: false
|
386
|
+
version_requirements: !ruby/object:Gem::Requirement
|
387
|
+
requirements:
|
388
|
+
- - "~>"
|
389
|
+
- !ruby/object:Gem::Version
|
390
|
+
version: '3.0'
|
349
391
|
- !ruby/object:Gem::Dependency
|
350
392
|
name: bundler
|
351
393
|
requirement: !ruby/object:Gem::Requirement
|
@@ -494,12 +536,14 @@ files:
|
|
494
536
|
- client/lanes/lib/promise_helpers.coffee
|
495
537
|
- client/lanes/lib/results.coffee
|
496
538
|
- client/lanes/lib/utilFunctions.coffee
|
539
|
+
- client/lanes/minimal.js
|
540
|
+
- client/lanes/minimal.scss.erb
|
497
541
|
- client/lanes/plugins/ResizeSensor.js
|
498
542
|
- client/lanes/plugins/index.js
|
499
543
|
- client/lanes/plugins/overlay.coffee
|
500
|
-
- client/lanes/plugins/trigger.coffee
|
501
544
|
- client/lanes/screens/Base.coffee
|
502
545
|
- client/lanes/screens/ChangeListener.coffee
|
546
|
+
- client/lanes/screens/Instance.coffee
|
503
547
|
- client/lanes/screens/Router.coffee
|
504
548
|
- client/lanes/screens/index.js
|
505
549
|
- client/lanes/screens/screen-definitions.js.erb
|
@@ -541,7 +585,6 @@ files:
|
|
541
585
|
- client/lanes/views/model-update.html
|
542
586
|
- client/lanes/workspace.scss.erb
|
543
587
|
- client/lanes/workspace/ActiveScreensSwitcher.coffee
|
544
|
-
- client/lanes/workspace/Instance.es6
|
545
588
|
- client/lanes/workspace/Layout.coffee
|
546
589
|
- client/lanes/workspace/Navbar.coffee
|
547
590
|
- client/lanes/workspace/Pages.coffee
|
@@ -721,6 +764,11 @@ files:
|
|
721
764
|
- config.ru
|
722
765
|
- config/database.yml
|
723
766
|
- db/migrate/20140615031600_create_hip_users.rb
|
767
|
+
- docs/command.md
|
768
|
+
- docs/model.md
|
769
|
+
- docs/todo-example-part-1.md
|
770
|
+
- docs/view.md
|
771
|
+
- docs/welcome.md
|
724
772
|
- lanes.gemspec
|
725
773
|
- lib/generators/lanes/migrations/install_generator.rb
|
726
774
|
- lib/lanes.rb
|
@@ -764,12 +812,12 @@ files:
|
|
764
812
|
- lib/lanes/command/templates/client/components/.gitkeep
|
765
813
|
- lib/lanes/command/templates/client/components/Component.coffee
|
766
814
|
- lib/lanes/command/templates/client/data/Model.coffee
|
767
|
-
- lib/lanes/command/templates/client/
|
815
|
+
- lib/lanes/command/templates/client/index.js
|
768
816
|
- lib/lanes/command/templates/client/screens/Screen.coffee
|
769
817
|
- lib/lanes/command/templates/client/screens/index.js
|
770
818
|
- lib/lanes/command/templates/client/screens/layout.html
|
771
819
|
- lib/lanes/command/templates/client/screens/styles.scss
|
772
|
-
- lib/lanes/command/templates/client/styles
|
820
|
+
- lib/lanes/command/templates/client/styles.scss
|
773
821
|
- lib/lanes/command/templates/client/views/.gitkeep
|
774
822
|
- lib/lanes/command/templates/client/views/View.coffee
|
775
823
|
- lib/lanes/command/templates/client/views/template.html
|
@@ -784,6 +832,8 @@ files:
|
|
784
832
|
- lib/lanes/command/templates/lib/namespace/model.rb
|
785
833
|
- lib/lanes/command/templates/lib/namespace/screen.rb
|
786
834
|
- lib/lanes/command/templates/lib/namespace/version.rb
|
835
|
+
- lib/lanes/command/templates/public/.gitkeep
|
836
|
+
- lib/lanes/command/templates/spec/client/Screen.coffee
|
787
837
|
- lib/lanes/command/templates/spec/client/data/ModelSpec.coffee
|
788
838
|
- lib/lanes/command/templates/spec/client/views/ViewSpec.coffee
|
789
839
|
- lib/lanes/command/templates/spec/fixtures/namespace/model.yml
|
@@ -808,7 +858,7 @@ files:
|
|
808
858
|
- lib/lanes/concerns/pub_sub.rb
|
809
859
|
- lib/lanes/concerns/queries.rb
|
810
860
|
- lib/lanes/concerns/random_hash_code.rb
|
811
|
-
- lib/lanes/concerns/
|
861
|
+
- lib/lanes/concerns/sanitize_fields.rb
|
812
862
|
- lib/lanes/concerns/set_attribute_data.rb
|
813
863
|
- lib/lanes/concerns/visible_id_identifier.rb
|
814
864
|
- lib/lanes/configuration.rb
|
@@ -827,6 +877,7 @@ files:
|
|
827
877
|
- lib/lanes/spec_asset_expander.rb
|
828
878
|
- lib/lanes/spec_helper.rb
|
829
879
|
- lib/lanes/strings.rb
|
880
|
+
- lib/lanes/testing_models.rb
|
830
881
|
- lib/lanes/validators/all.rb
|
831
882
|
- lib/lanes/validators/email.rb
|
832
883
|
- lib/lanes/validators/set.rb
|
@@ -839,9 +890,6 @@ files:
|
|
839
890
|
- public/javascripts/jasmine_examples/Player.js
|
840
891
|
- public/javascripts/jasmine_examples/Song.js
|
841
892
|
- spec/api/javascript_processor_spec.rb
|
842
|
-
- spec/api/user_spec.rb
|
843
|
-
- spec/client/jasmine_examples/PlayerSpec.js
|
844
|
-
- spec/client/view/BaseSpec.coffee
|
845
893
|
- spec/concerns/api_path_spec.rb
|
846
894
|
- spec/concerns/association_extensions_spec.rb
|
847
895
|
- spec/concerns/attr_accessor_with_default_spec.rb
|
@@ -853,17 +901,15 @@ files:
|
|
853
901
|
- spec/concerns/pub_sub_spec.rb
|
854
902
|
- spec/concerns/set_attribute_data_spec.rb
|
855
903
|
- spec/configuration_spec.rb
|
856
|
-
- spec/fixtures/lanes/users.yml
|
857
904
|
- spec/helpers/.gitkeep
|
858
905
|
- spec/helpers/jasmine-jquery.js
|
859
906
|
- spec/helpers/jasmine-matchers.js
|
860
|
-
- spec/
|
907
|
+
- spec/helpers/lanes-helpers.coffee
|
908
|
+
- spec/lanes/data/ModelSpec.coffee
|
909
|
+
- spec/lanes/data/PubSubSpec.coffee
|
910
|
+
- spec/lanes/views/BaseSpec.coffee
|
861
911
|
- spec/numbers_spec.rb
|
862
|
-
- spec/role_collection_spec.rb
|
863
912
|
- spec/strings_spec.rb
|
864
|
-
- spec/testing_models.rb
|
865
|
-
- spec/user_role_spec.rb
|
866
|
-
- spec/user_spec.rb
|
867
913
|
- tasks/migrations.rake
|
868
914
|
- tasks/publish.rake
|
869
915
|
- views/index.erb
|
@@ -1,15 +0,0 @@
|
|
1
|
-
|
2
|
-
jqTrigger = Lanes.$.fn.trigger
|
3
|
-
|
4
|
-
Lanes.$.fn.trigger = ( event, data, elem, onlyHandlers ) ->
|
5
|
-
evt = window.document.createEvent('CustomEvent')
|
6
|
-
event_name = if _.isObject(event)
|
7
|
-
data ||= event
|
8
|
-
event.type
|
9
|
-
else
|
10
|
-
event
|
11
|
-
evt.initCustomEvent(event_name, true, true, data )
|
12
|
-
this.each( (index,el)->
|
13
|
-
el.dispatchEvent(evt) unless _.isFunction(el[event_name])
|
14
|
-
)
|
15
|
-
jqTrigger.apply(this, arguments);
|
@@ -1,64 +0,0 @@
|
|
1
|
-
Lanes.Workspace.create = function(selector, options, extension_data){
|
2
|
-
return new Lanes.Workspace.Instance(selector, options, extension_data);
|
3
|
-
};
|
4
|
-
|
5
|
-
Lanes.Workspace.Instance = class Instance {
|
6
|
-
|
7
|
-
constructor(selector, options, extension_data){
|
8
|
-
_.extend(this,options);
|
9
|
-
|
10
|
-
this.viewport = new Lanes.Views.Viewport({ selector: selector, instance: this });
|
11
|
-
Lanes.Data.Bootstrap.initialize({
|
12
|
-
csrf: options.csrf_token,
|
13
|
-
root: options.root_path,
|
14
|
-
data: extension_data
|
15
|
-
});
|
16
|
-
Lanes.$(document).ready( ()=> {
|
17
|
-
this.boot();
|
18
|
-
});
|
19
|
-
}
|
20
|
-
|
21
|
-
boot(){
|
22
|
-
this.root = Lanes.$( this.viewport.selector );
|
23
|
-
this.root.data().workspace = this;
|
24
|
-
this.viewport.root = this.root;
|
25
|
-
|
26
|
-
Lanes.lib.ResizeSensor(this.root[0], _.bind( _.debounce( function(){
|
27
|
-
this.viewport.set({ width: this.root.width(), height: this.root.height() });
|
28
|
-
}, 250 ), this) );
|
29
|
-
|
30
|
-
this.root.addClass('lanes root');
|
31
|
-
this.root.tooltip({
|
32
|
-
viewport: '.lanes',
|
33
|
-
selector: '[data-tooltip-message]',
|
34
|
-
title: function(){ return this.getAttribute('data-tooltip-message'); }
|
35
|
-
});
|
36
|
-
var view = Lanes.getPath(this.view);
|
37
|
-
if (view){
|
38
|
-
this.displayInitialView(view);
|
39
|
-
} else {
|
40
|
-
var definition=Lanes.Data.Screens.all.findWhere({view: this.view});
|
41
|
-
if (definition){
|
42
|
-
definition.getScreen().then( (screen)=>{
|
43
|
-
// break out of the promise so an errors during render get thrown properly
|
44
|
-
_.defer( ()=>{ this.displayInitialView(screen); } );
|
45
|
-
}, (msg)=>{
|
46
|
-
Lanes.fatal("Unable to load initial screen ${this.view}", msg);
|
47
|
-
});
|
48
|
-
} else {
|
49
|
-
Lanes.fatal(this.view + " doesn't exist!");
|
50
|
-
}
|
51
|
-
}
|
52
|
-
}
|
53
|
-
|
54
|
-
displayInitialView(view){
|
55
|
-
this.view = new view({parent: this, model: this.viewport}).render();
|
56
|
-
this.viewport.el = this.view.$el;
|
57
|
-
|
58
|
-
this.root.append( this.view.el );
|
59
|
-
|
60
|
-
Lanes.Views.Keys.initialize();
|
61
|
-
Lanes.Data.PubSub.initialize();
|
62
|
-
Lanes.Extensions.fireOnAvailable(this);
|
63
|
-
}
|
64
|
-
};
|
@@ -1,15 +0,0 @@
|
|
1
|
-
module Lanes::Concerns
|
2
|
-
|
3
|
-
|
4
|
-
# SanitizeJson is responsible for only cleaning a hash of attributes that should not
|
5
|
-
# be written to the model by the given user
|
6
|
-
module SanitizeApiData
|
7
|
-
extend ActiveSupport::Concern
|
8
|
-
|
9
|
-
module ClassMethods
|
10
|
-
end
|
11
|
-
|
12
|
-
end
|
13
|
-
|
14
|
-
|
15
|
-
end
|
data/spec/api/user_spec.rb
DELETED
@@ -1,52 +0,0 @@
|
|
1
|
-
require_relative "../spec_helper"
|
2
|
-
|
3
|
-
class ApiUserTest < Lanes::ApiTestCase
|
4
|
-
|
5
|
-
def test_query
|
6
|
-
get "/users/#{admin.id}.json"
|
7
|
-
refute_ok
|
8
|
-
login!
|
9
|
-
get "/users/#{admin.id}.json"
|
10
|
-
assert_ok
|
11
|
-
assert_equal admin.id, json_data.id
|
12
|
-
end
|
13
|
-
|
14
|
-
def test_create
|
15
|
-
login!
|
16
|
-
assert_difference ->{User.count}, 1 do
|
17
|
-
post "/users.json", {
|
18
|
-
login: "nas", name: "Nathan", email: "test@test.com", password: 'testing1234'
|
19
|
-
}
|
20
|
-
assert_ok
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
def test_update_by_self
|
25
|
-
user = lanes_users(:support)
|
26
|
-
login!(user)
|
27
|
-
assert User.can_write_attributes?({id: user.id, :foo=>1}, user)
|
28
|
-
put "/users/#{user.id}.json", { name: 'Updated Name', password: 'pass1234', email: 'sam@test.com' }
|
29
|
-
assert_ok
|
30
|
-
user.reload
|
31
|
-
assert_equal 'Updated Name', user.name
|
32
|
-
assert_equal 'sam@test.com', user.email
|
33
|
-
end
|
34
|
-
|
35
|
-
def test_updating_roles
|
36
|
-
login!
|
37
|
-
user = lanes_users(:support)
|
38
|
-
put "/users/#{user.id}.json", { name: 'Sam', role_names:['administrator'] }
|
39
|
-
assert_ok
|
40
|
-
user.reload
|
41
|
-
assert_equal 'Sam', user.name
|
42
|
-
assert_equal ['administrator'], user.role_names
|
43
|
-
end
|
44
|
-
|
45
|
-
def test_delete
|
46
|
-
login!
|
47
|
-
assert_difference ->{User.count}, -1 do
|
48
|
-
delete "/users/#{admin.id}.json"
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
end
|
@@ -1,13 +0,0 @@
|
|
1
|
-
admin:
|
2
|
-
login: admin
|
3
|
-
name: Administrator Jane
|
4
|
-
email: admin@test.com
|
5
|
-
password_digest: <%= BCrypt::Password.create('password') %>
|
6
|
-
role_names: ['administrator']
|
7
|
-
|
8
|
-
support:
|
9
|
-
login: support
|
10
|
-
name: Supporter Joe
|
11
|
-
email: support@test.com
|
12
|
-
password_digest: <%= BCrypt::Password.create('password') %>
|
13
|
-
role_names: ['support']
|
data/spec/locked_fields_spec.rb
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
require_relative 'spec_helper'
|
2
|
-
|
3
|
-
class Customer < Lanes::Model
|
4
|
-
def self.attribute_names
|
5
|
-
[:terms_id]
|
6
|
-
end
|
7
|
-
end
|
8
|
-
|
9
|
-
Lanes::Access::Roles::Support.read << Customer
|
10
|
-
Lanes::Access::Roles::Administrator.lock Customer, :terms_id
|
11
|
-
|
12
|
-
class LockedFieldsTest < Lanes::TestCase
|
13
|
-
|
14
|
-
def setup
|
15
|
-
@user = Lanes::User.new( login: 'test', email: 'bob@test.com', name: 'Bob', password: 'testtest')
|
16
|
-
@purchaser = Lanes::User.new( login: 'test', email: 'bob@test.com', name: 'Bob', password: 'testtest')
|
17
|
-
end
|
18
|
-
|
19
|
-
def test_validations
|
20
|
-
@user.role_names = ['support']
|
21
|
-
assert_saves @user
|
22
|
-
assert @user.can_read?(Customer), "User with support role cannot read Customer"
|
23
|
-
refute @user.can_write?(Customer), "User can write, but shouldn't be able to"
|
24
|
-
refute @user.can_read?(Customer, :terms_id), "User can read :terms_id but shouldn't be able to"
|
25
|
-
end
|
26
|
-
|
27
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
require_relative 'spec_helper'
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
class AccessTester < Lanes::Model
|
6
|
-
def self.attribute_names
|
7
|
-
[:name]
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
|
12
|
-
class RoleCollectionTest < Lanes::TestCase
|
13
|
-
|
14
|
-
def test_administrator_grants
|
15
|
-
user = lanes_users(:admin)
|
16
|
-
assert_includes user.role_names, 'administrator'
|
17
|
-
assert user.roles.can_read?(AccessTester)
|
18
|
-
end
|
19
|
-
end
|
data/spec/user_role_spec.rb
DELETED
data/spec/user_spec.rb
DELETED
@@ -1,53 +0,0 @@
|
|
1
|
-
require_relative 'spec_helper'
|
2
|
-
|
3
|
-
describe Lanes::User do
|
4
|
-
|
5
|
-
before do
|
6
|
-
@user = Lanes::User.new( login: 'test', email: 'bob@test.com', name: 'Bob', password: 'testtest')
|
7
|
-
end
|
8
|
-
|
9
|
-
it "validates attributes" do
|
10
|
-
user = Lanes::User.new
|
11
|
-
refute_saves user, 'login'
|
12
|
-
user.assign_attributes login: 'test', email: 'bob', name: 'Bob'
|
13
|
-
refute_saves user, 'email'
|
14
|
-
user.email = 'bob@test.com'
|
15
|
-
refute_saves user, 'password'
|
16
|
-
user.password = 'password'
|
17
|
-
assert_saves user
|
18
|
-
end
|
19
|
-
|
20
|
-
it "sets roles" do
|
21
|
-
@user.role_names = ['administrator']
|
22
|
-
assert_saves @user
|
23
|
-
assert_equal [ 'administrator' ], @user.role_names
|
24
|
-
end
|
25
|
-
|
26
|
-
it "can has built-in roles" do
|
27
|
-
@support = Lanes::User.new( login: 'test', email: 'support@test.com', name: 'support Bob',
|
28
|
-
password: 'testtest', role_names:['support'])
|
29
|
-
@admin = Lanes::User.new( login: 'test', email: 'admin@test.com', name: 'admin Bob',
|
30
|
-
password: 'testtest', role_names:['administrator'])
|
31
|
-
|
32
|
-
assert @admin.can_read?(@support)
|
33
|
-
assert @admin.can_write?(@support)
|
34
|
-
|
35
|
-
assert @support.can_read?(@admin)
|
36
|
-
refute @support.can_write?(@admin)
|
37
|
-
end
|
38
|
-
|
39
|
-
it "can be set from attribute data" do
|
40
|
-
attrs = { login: 'test', email: 'bob', name: 'Bob', password:'password' }
|
41
|
-
assert_equal attrs, @user.set_attribute_data( attrs, lanes_users(:admin) )
|
42
|
-
end
|
43
|
-
|
44
|
-
it "users can update themselves" do
|
45
|
-
user = lanes_users(:support)
|
46
|
-
admin = lanes_users(:admin)
|
47
|
-
attrs = { id: 34, login: 'test', email: 'bob', name: 'Bob', password:'password' }
|
48
|
-
assert_empty admin.set_attribute_data( attrs, user )
|
49
|
-
attrs[:id] = user.id
|
50
|
-
assert_equal( {email: 'bob', name: 'Bob', password:'password'}, user.set_attribute_data(attrs, user) )
|
51
|
-
end
|
52
|
-
|
53
|
-
end
|