artemis 0.9.0 → 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +17 -7
- data/Appraisals +15 -6
- data/CHANGELOG.md +32 -5
- data/Rakefile +1 -4
- data/artemis.gemspec +1 -2
- data/bin/console +3 -3
- data/gemfiles/graphql_2_0.gemfile +15 -0
- data/gemfiles/rails_60.gemfile +3 -3
- data/gemfiles/rails_71.gemfile +3 -3
- data/lib/artemis/railtie.rb +6 -8
- data/lib/artemis/version.rb +1 -1
- metadata +8 -37
- data/spec/adapters_spec.rb +0 -278
- data/spec/autoloading_spec.rb +0 -152
- data/spec/callbacks_spec.rb +0 -60
- data/spec/client_spec.rb +0 -228
- data/spec/endpoint_spec.rb +0 -49
- data/spec/fixtures/github/_repository_fields.graphql +0 -12
- data/spec/fixtures/github/repository.graphql +0 -6
- data/spec/fixtures/github/schema.json +0 -165225
- data/spec/fixtures/github/user.graphql +0 -6
- data/spec/fixtures/github/user_repositories.graphql +0 -13
- data/spec/fixtures/github.rb +0 -2
- data/spec/fixtures/responses/github/repository.yml +0 -17
- data/spec/fixtures/responses/github/user.json +0 -10
- data/spec/fixtures/responses/spotify_client/artist.yml +0 -5
- data/spec/spec_helper.rb +0 -49
- data/spec/test_helper_spec.rb +0 -94
data/spec/fixtures/github.rb
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
yuki24_artemis:
|
2
|
-
data:
|
3
|
-
repository:
|
4
|
-
name: artemis
|
5
|
-
nameWithOwner: yuki24/artemis
|
6
|
-
|
7
|
-
yuki24_rambulance:
|
8
|
-
data:
|
9
|
-
repository:
|
10
|
-
name: rambulance
|
11
|
-
nameWithOwner: <%= "yuki24" %>/rambulance
|
12
|
-
|
13
|
-
yoshiki:
|
14
|
-
data:
|
15
|
-
repository:
|
16
|
-
name: did_you_mean
|
17
|
-
nameWithOwner: ruby/did_you_mean
|
data/spec/spec_helper.rb
DELETED
@@ -1,49 +0,0 @@
|
|
1
|
-
require 'artemis'
|
2
|
-
require 'pry'
|
3
|
-
require 'pry-byebug' if RUBY_ENGINE == 'ruby'
|
4
|
-
|
5
|
-
# This assumes that all of thw following methods are property implemented:
|
6
|
-
#
|
7
|
-
# * +Artemis::Client.query_paths+
|
8
|
-
# * +Artemis::GraphQLEndpoint.register!+
|
9
|
-
# * +Artemis::GraphQLEndpoint.lookup+
|
10
|
-
# * +Artemis::GraphQLEndpoint#load_schema!+
|
11
|
-
#
|
12
|
-
# The only method that doesn't need test coverage is +Artemis::Client.query_paths+. The rest of the methods should be
|
13
|
-
# tested, but we don't have any test setup for that yet.
|
14
|
-
Artemis::Client.query_paths = [File.join(__dir__, 'fixtures')]
|
15
|
-
Artemis::GraphQLEndpoint.suppress_warnings_on_schema_load = true
|
16
|
-
Artemis::GraphQLEndpoint.register!(:github, adapter: :test, url: '', schema_path: 'spec/fixtures/github/schema.json')
|
17
|
-
Artemis::GraphQLEndpoint.lookup(:github).load_schema!
|
18
|
-
|
19
|
-
require 'fixtures/github'
|
20
|
-
|
21
|
-
PROJECT_DIR = FileUtils.pwd
|
22
|
-
|
23
|
-
RSpec.configure do |config|
|
24
|
-
config.expect_with :rspec do |expectations|
|
25
|
-
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
|
26
|
-
end
|
27
|
-
|
28
|
-
config.mock_with :rspec do |mocks|
|
29
|
-
mocks.verify_partial_doubles = true
|
30
|
-
end
|
31
|
-
|
32
|
-
# config.warnings = true
|
33
|
-
config.order = :random
|
34
|
-
|
35
|
-
if config.files_to_run.one?
|
36
|
-
config.default_formatter = "doc"
|
37
|
-
end
|
38
|
-
|
39
|
-
# Print the 10 slowest examples and example groups at the
|
40
|
-
# end of the spec run, to help surface which specs are running
|
41
|
-
# particularly slow.
|
42
|
-
# config.profile_examples = 10
|
43
|
-
|
44
|
-
# Seed global randomization in this process using the `--seed` CLI option.
|
45
|
-
# Setting this allows you to use `--seed` to deterministically reproduce
|
46
|
-
# test failures related to randomization by passing the same `--seed` value
|
47
|
-
# as the one that triggered the failure.
|
48
|
-
# Kernel.srand config.seed
|
49
|
-
end
|
data/spec/test_helper_spec.rb
DELETED
@@ -1,94 +0,0 @@
|
|
1
|
-
require 'artemis/test_helper'
|
2
|
-
require 'date'
|
3
|
-
|
4
|
-
describe Artemis::TestHelper do
|
5
|
-
include Artemis::TestHelper
|
6
|
-
|
7
|
-
def graphql_fixture_path
|
8
|
-
File.join(PROJECT_DIR, "spec/fixtures/responses")
|
9
|
-
end
|
10
|
-
|
11
|
-
before do
|
12
|
-
graphql_requests.clear
|
13
|
-
graphql_responses.clear
|
14
|
-
end
|
15
|
-
|
16
|
-
it "can mock a GraphQL request" do
|
17
|
-
stub_graphql(Github, :repository).to_return(:yuki24_artemis)
|
18
|
-
|
19
|
-
response = Github.repository(owner: "yuki24", name: "artemis")
|
20
|
-
|
21
|
-
expect(response.data.repository.name).to eq("artemis")
|
22
|
-
expect(response.data.repository.name_with_owner).to eq("yuki24/artemis")
|
23
|
-
end
|
24
|
-
|
25
|
-
it "can mock a GraphQL request with an ERB-enabled fixture" do
|
26
|
-
stub_graphql(Github, :repository).to_return(:yuki24_rambulance)
|
27
|
-
|
28
|
-
response = Github.repository(owner: "yuki24", name: "rambulance")
|
29
|
-
|
30
|
-
expect(response.data.repository.name_with_owner).to eq("yuki24/rambulance")
|
31
|
-
end
|
32
|
-
|
33
|
-
it "can mock a GraphQL request with variables using exact match" do
|
34
|
-
stub_graphql(Github, :repository, owner: "yuki24", name: "artemis").to_return(:yuki24_artemis)
|
35
|
-
stub_graphql(Github, :repository, owner: "yuki24", name: "rambulance").to_return(:yuki24_rambulance)
|
36
|
-
|
37
|
-
yuki24_artemis = Github.repository(owner: "yuki24", name: "artemis")
|
38
|
-
yuki24_rambulance = Github.repository(owner: "yuki24", name: "rambulance")
|
39
|
-
|
40
|
-
expect(yuki24_artemis.data.repository.name).to eq("artemis")
|
41
|
-
expect(yuki24_rambulance.data.repository.name).to eq("rambulance")
|
42
|
-
end
|
43
|
-
|
44
|
-
it "can mock a GraphQL request with a JSON file" do
|
45
|
-
stub_graphql(Github, :user).to_return(:yuki24)
|
46
|
-
|
47
|
-
response = Github.user
|
48
|
-
|
49
|
-
expect(response.data.user.id).to eq("foobar")
|
50
|
-
expect(response.data.user.name).to eq("Yuki Nishijima")
|
51
|
-
end
|
52
|
-
|
53
|
-
it "can mock a GraphQL request for a query that has a query name"
|
54
|
-
|
55
|
-
it "raises an exception if the specified fixture file does not exist" do
|
56
|
-
expect { stub_graphql(Github, :does_not_exist).to_return(:data) }
|
57
|
-
.to raise_error(Artemis::FixtureNotFound, %r|does_not_exist.{yml,json}|)
|
58
|
-
end
|
59
|
-
|
60
|
-
it "raises an exception if the specified fixture file exists but fixture key does not exist" do
|
61
|
-
expect { stub_graphql(Github, :repository).to_return(:does_not_exist) }
|
62
|
-
.to raise_error(Artemis::FixtureNotFound, %r|spec/fixtures/responses/github/repository.yml|)
|
63
|
-
end
|
64
|
-
|
65
|
-
it "picks up the fixture for the given service if multiple services have the exact same fixture" do
|
66
|
-
stub_graphql(Github, :repository).to_return(:yoshiki)
|
67
|
-
|
68
|
-
yoshiki = Github.repository(owner: "ruby", name: "did_you_mean")
|
69
|
-
|
70
|
-
expect(yoshiki.data.repository.name).to eq("did_you_mean")
|
71
|
-
end
|
72
|
-
|
73
|
-
it "can mock separate GraphQL queries with the same arguments" do
|
74
|
-
stub_graphql("SpotifyClient", :repository, id: "yoshiki").to_return(:yoshiki)
|
75
|
-
stub_graphql(Github, :repository, id: "yoshiki").to_return(:yoshiki)
|
76
|
-
|
77
|
-
yoshiki = Github.repository(id: "yoshiki")
|
78
|
-
|
79
|
-
expect(yoshiki.data.repository.name).to eq("did_you_mean")
|
80
|
-
end
|
81
|
-
|
82
|
-
it "allows to get raw fixture data as a Hash" do
|
83
|
-
data = stub_graphql("SpotifyClient", :repository).get(:yoshiki)
|
84
|
-
|
85
|
-
expect(data).to eq({
|
86
|
-
"data" => {
|
87
|
-
"repository" => {
|
88
|
-
"name" => "did_you_mean",
|
89
|
-
"nameWithOwner" => "ruby/did_you_mean",
|
90
|
-
}
|
91
|
-
}
|
92
|
-
})
|
93
|
-
end
|
94
|
-
end
|