neo4j-rspec 0.1.1 → 0.1.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ee149c3a79b54728a0c8eb5143504c274c24414d
4
- data.tar.gz: 24a61f9cf468b5e96e457221329c814941a8168b
3
+ metadata.gz: 6cfb94484ad78c24177b2b3d95ec9157d26fd5d3
4
+ data.tar.gz: aa30199b7e55d6efbdeaa8a30c8126b0ef84cb56
5
5
  SHA512:
6
- metadata.gz: 1190c3ab180492d432979ca534514bf63e0f181c056d0349f0541ce2d7efe45afbe31f7109db5e114e611c157c1b1a329a781369c73223067385e256b7a1b4e1
7
- data.tar.gz: f06d85d848c244b0041c3532b5d4cad52ec011da42f2f43cb96b45adee1665548eafaf51772560def5cad4366ce21961951f585c7ff8c082f45ac82015e9f325
6
+ metadata.gz: a67537302ca817c9b60782507c48f88e0b82321668bdef26dbe561c3e18f85043b7d185a3ded77990dc6c2db911d12c49619c97407cbd6bebbc7fbed745e7334
7
+ data.tar.gz: 706b739afb0b3265c8a2dcf042df4a8c37c8d468f1a57e1633b70dd1d04643fd665d240a74d08582dc92e71efa896baca28aec488f0f1dc520f90bcab1eb13f6
data/.travis.yml CHANGED
@@ -1,4 +1,7 @@
1
+ script: "bundle exec rake neo4j:install[community-2.3.0] neo4j:start default --trace"
1
2
  language: ruby
3
+ cache: bundler
4
+ sudo: false
2
5
  rvm:
3
6
  - 2.2.0
4
7
  - 2.3.0
data/README.md CHANGED
@@ -1,6 +1,10 @@
1
1
  # Neo4j::Rspec [![Build Status](https://travis-ci.org/sineed/neo4j-rspec.svg?branch=master)](https://travis-ci.org/sineed/neo4j-rspec)
2
2
 
3
+ This gem contains of several testing one-liners for [neo4j](https://github.com/neo4jrb/neo4j) gem.
4
+
5
+
3
6
  ## Install
7
+
4
8
  Add line into your Gemfile:
5
9
  ```ruby
6
10
  gem "neo4j-rspec"
@@ -11,41 +15,59 @@ or install it directly
11
15
  gem install neo4j-rspec
12
16
  ```
13
17
 
18
+
14
19
  ## Examples
15
20
 
16
- ### Properties
21
+ ### ActiveNode matchers:
17
22
 
18
- ```ruby
19
- it { is_expected.to define_property :general }
20
- it { is_expected.to define_property :string, String }
21
- it { is_expected.to define_property :boolean, Boolean } # This might need to be `ActiveAttr::Typecasting::Boolean`
22
- ```
23
+ - Properties
23
24
 
25
+ ```ruby
26
+ it { is_expected.to define_property :general }
27
+ it { is_expected.to define_property :string, String }
28
+ it { is_expected.to define_property :boolean, Boolean } # This might need to be `ActiveAttr::Typecasting::Boolean`
29
+ ```
30
+ - Relationships
24
31
 
25
- ### `has_one` and `has_many`
32
+ ```ruby
33
+ it { is_expected.to have_many(:comments) }
34
+ it { is_expected.to have_many(:comments).with_direction(:in) }
35
+ it { is_expected.to have_many(:comments).with_direction(:in).with_origin(:post) }
36
+ it { is_expected.to have_many(:written_things).with_direction(:in).without_type.with_model_class([:Post, :Comment]) }
37
+ ```
38
+ - Constraints
26
39
 
27
- ```ruby
28
- it { is_expected.to have_many(:comments) }
29
- it { is_expected.to have_many(:comments).with_direction(:in) }
30
- it { is_expected.to have_many(:comments).with_direction(:in).with_origin(:post) }
31
- it { is_expected.to have_many(:written_things).with_direction(:in).without_type.with_model_class([:Post, :Comment]) }
32
- ```
40
+ ```ruby
41
+ it { is_expected.to define_constraint :name, :unique }
42
+ ```
43
+ - Indexes
33
44
 
34
- ### Constraints
45
+ ```ruby
46
+ it { is_expected.to define_index(:index_name) }
47
+ ```
48
+ - Tracking
35
49
 
36
- ```ruby
37
- it { is_expected.to define_constraint :name, :unique }
38
- ```
50
+ ```ruby
51
+ it { is_expected.to track_creations } # `created_at`
52
+ it { is_expected.to track_modifications } # `updated_at`
53
+ ```
39
54
 
40
- ### `created_at` and `updated_at`
41
55
 
42
- ```ruby
43
- it { is_expected.to track_creations } # `created_at`
44
- it { is_expected.to track_modifications } # `updated_at`
56
+ ### ActiveRel matchers:
45
57
 
46
- ```
58
+ - Directions
59
+
60
+ ```ruby
61
+ it { is_expected.to come_from(:Person) }
62
+ it { is_expected.to lead_to(:any) }
63
+ ```
64
+ - Types
65
+
66
+ ```ruby
67
+ it { is_expected.to have_relationship_type("WROTE") }
68
+ ```
69
+
70
+
71
+ ### Need yet another matcher?
47
72
 
48
- TODO: Put some examples of usage:
49
- - [ ] define_index
50
- - [ ] come_from_model
51
- - [ ] lead_to_model
73
+ Welcome! Feel free to post an [issue](https://github.com/sineed/neo4j-rspec/issues/new). Contributions are welcome too.
data/Rakefile CHANGED
@@ -1,4 +1,7 @@
1
- require "bundler/gem_tasks"
1
+ require 'rake'
2
+ require 'bundler/gem_tasks'
3
+ require 'neo4j-core'
4
+ require 'neo4j/rake_tasks'
2
5
  require "rspec/core/rake_task"
3
6
 
4
7
  task default: :spec
@@ -58,6 +58,23 @@ module Neo4j
58
58
  "expected the #{model.name} model not to have a #{type} constraint on #{name}"
59
59
  end
60
60
  end
61
+
62
+ matcher :define_index do |name|
63
+ fail ArgumentError, 'index name should be given' if name.blank?
64
+
65
+ match do |model|
66
+ model.attributes.key?(name.to_s) &&
67
+ model.declared_properties[name.to_s].index?
68
+ end
69
+
70
+ failure_message do |model|
71
+ "expected the #{model.class.name} model to have an exact index on #{name} property"
72
+ end
73
+
74
+ failure_message_when_negated do |model|
75
+ "expected the #{model.class.name} model not to have an exact index on #{name} property"
76
+ end
77
+ end
61
78
  end
62
79
  end
63
80
  end
@@ -0,0 +1,52 @@
1
+ module Neo4j
2
+ module RSpec
3
+ module Matchers
4
+ module Relations
5
+ extend ::RSpec::Matchers::DSL
6
+
7
+ matcher :come_from do |model_sym|
8
+ match do |rel|
9
+ rel.class.from_class == model_sym
10
+ end
11
+
12
+ failure_message do |rel|
13
+ "expected the #{rel.class.name} relation to come from #{model_sym}"
14
+ end
15
+
16
+ failure_message_when_negated do |rel|
17
+ "expected the #{rel.class.name} relation not to come from #{model_sym}"
18
+ end
19
+ end
20
+
21
+ matcher :lead_to do |model_sym|
22
+ match do |rel|
23
+ rel.class.to_class == model_sym
24
+ end
25
+
26
+ failure_message do |rel|
27
+ "expected the #{rel.class.name} relation to lead to #{model_sym}"
28
+ end
29
+
30
+ failure_message_when_negated do |rel|
31
+ "expected the #{rel.class.name} relation not to lead to #{model_sym}"
32
+ end
33
+ end
34
+
35
+ matcher :have_relationship_type do |type|
36
+ match do |rel|
37
+ rel.type == type
38
+ end
39
+
40
+ failure_message do |rel|
41
+ "expected the #{rel.class.name} relation to have a relationship type #{type}"
42
+ end
43
+
44
+ failure_message_when_negated do |rel|
45
+ "expected the #{rel.class.name} relation not to have a relationship type #{type}"
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
52
+
@@ -1,11 +1,13 @@
1
1
  require "neo4j/rspec/matchers/has_n"
2
2
  require "neo4j/rspec/matchers/properties"
3
+ require "neo4j/rspec/matchers/relations"
3
4
 
4
5
  module Neo4j
5
6
  module RSpec
6
7
  module Matchers
7
8
  include HasN
8
9
  include Properties
10
+ include Relations
9
11
  end
10
12
  end
11
13
  end
@@ -1,5 +1,5 @@
1
1
  module Neo4j
2
2
  module RSpec
3
- VERSION = "0.1.1"
3
+ VERSION = "0.1.2"
4
4
  end
5
5
  end
data/neo4j-rspec.gemspec CHANGED
@@ -16,6 +16,6 @@ Gem::Specification.new do |spec|
16
16
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
17
17
  spec.require_paths = ["lib"]
18
18
 
19
- spec.add_dependency "neo4j", ">= 6.0.0"
19
+ spec.add_dependency "neo4j", "~> 6"
20
20
  spec.add_dependency "rspec", "~> 3.4"
21
21
  end
metadata CHANGED
@@ -1,41 +1,41 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: neo4j-rspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Denis Tataurov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-09 00:00:00.000000000 Z
11
+ date: 2016-03-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: neo4j
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 6.0.0
19
+ version: '6'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 6.0.0
26
+ version: '6'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rspec
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '3.4'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '3.4'
41
41
  description: RSpec matchers for Neo4j.rb
@@ -45,9 +45,9 @@ executables: []
45
45
  extensions: []
46
46
  extra_rdoc_files: []
47
47
  files:
48
- - .gitignore
49
- - .rspec
50
- - .travis.yml
48
+ - ".gitignore"
49
+ - ".rspec"
50
+ - ".travis.yml"
51
51
  - Gemfile
52
52
  - LICENSE.txt
53
53
  - README.md
@@ -56,6 +56,7 @@ files:
56
56
  - lib/neo4j/rspec/matchers.rb
57
57
  - lib/neo4j/rspec/matchers/has_n.rb
58
58
  - lib/neo4j/rspec/matchers/properties.rb
59
+ - lib/neo4j/rspec/matchers/relations.rb
59
60
  - lib/neo4j/rspec/version.rb
60
61
  - neo4j-rspec.gemspec
61
62
  homepage: https://github.com/sineed/neo4j-rspec
@@ -68,18 +69,19 @@ require_paths:
68
69
  - lib
69
70
  required_ruby_version: !ruby/object:Gem::Requirement
70
71
  requirements:
71
- - - '>='
72
+ - - ">="
72
73
  - !ruby/object:Gem::Version
73
74
  version: '0'
74
75
  required_rubygems_version: !ruby/object:Gem::Requirement
75
76
  requirements:
76
- - - '>='
77
+ - - ">="
77
78
  - !ruby/object:Gem::Version
78
79
  version: '0'
79
80
  requirements: []
80
81
  rubyforge_project:
81
- rubygems_version: 2.0.14
82
+ rubygems_version: 2.5.1
82
83
  signing_key:
83
84
  specification_version: 4
84
85
  summary: RSpec matchers for Neo4j.rb
85
86
  test_files: []
87
+ has_rdoc: