balboa 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3bb21929ddabfd4eb5c0527b926497445980fa65
4
- data.tar.gz: 08f0051c4cb708b38c3ab89f328983b94ff0b040
3
+ metadata.gz: 259c76600d7bcd513743de8ac654c905536d05f5
4
+ data.tar.gz: 62811d033eb6aa3b0be11386c68a7fa835ea545a
5
5
  SHA512:
6
- metadata.gz: 4f59a7d0bc7c9154eb470c328e3cfd4f4b744fd50015ca91e917a620ac0597ccd837b0918dc1ab16d1bb7120e142339b98ccc0dffbf945f3d37e7a87c0446932
7
- data.tar.gz: 3559ea61cc181c8ca6678626a659ca25d808fdc0414716fe40bc9daea637d93cab7dd0af968ebaccbba58e91cef4445d77ea95b301e4e31def81ed43d5852c60
6
+ metadata.gz: b098e9dde480d645e69e893dbdadece15f69113a3b2de85bf501d4e5de4c92218ac337d6978db2d4e2e63f5a14ea6f8fb0db09aad7de4be13d2ef35ff74d6b99
7
+ data.tar.gz: e3cce93de5d628acec25cc1d241ac7c0ccd3430716b8e5482f6a6526da70a1a8decd9cef562ac14f790caf74dd20c9292c0ec0ce6deaeb44cecc1dcb50692502
data/.gitignore CHANGED
@@ -7,3 +7,4 @@
7
7
  /pkg/
8
8
  /spec/reports/
9
9
  /tmp/
10
+ .balboa
data/Rakefile CHANGED
@@ -34,7 +34,7 @@ namespace :test do
34
34
  --include lib\
35
35
  --require balboa\
36
36
  --use rspec\
37
- --since master\
37
+ --since master^\
38
38
  --jobs 4 'Balboa*'
39
39
  EOS
40
40
  system command
data/balboa.gemspec CHANGED
@@ -22,4 +22,7 @@ Gem::Specification.new do |s|
22
22
  s.default_executable = 'balboa'
23
23
 
24
24
  s.required_ruby_version = '>= 2.0'
25
+
26
+ s.add_runtime_dependency 'capybara', '~> 2.7.1'
27
+ s.add_runtime_dependency 'phantomjs', '~> 2.1.1.0'
25
28
  end
data/bin/balboa CHANGED
@@ -3,28 +3,24 @@
3
3
 
4
4
  require_relative '../lib/balboa'
5
5
 
6
- command = ARGV.shift || 'make_punch'
6
+ command = ARGV.shift || :help
7
7
  app = Balboa::CLI::Application.new(command)
8
8
  options = Balboa::CLI::Options.parse(ARGV)
9
9
 
10
- crawler = Balboa::Interactor::CapybaraInteractor.new(options)
10
+ raw_interactor = Balboa::Interactor::CapybaraInteractor.new
11
11
 
12
- crawler_last_punch = Balboa::Interactor::Command::LastPunchCommand.new
13
- crawler_make_punch = Balboa::Interactor::Command::MakePunchCommand.new(options)
14
- crawler_login = Balboa::Interactor::Command::LoginCommand.new(options)
12
+ Balboa::Interactor::InteractorBuilder.create(raw_interactor, options)
15
13
 
16
- crawler.add_command :last_punch, crawler_last_punch
17
- crawler.add_command :make_punch, crawler_make_punch
18
- crawler.add_command :login, crawler_login
14
+ interactor = Balboa::Interactor::InteractorWrapper.new(raw_interactor)
19
15
 
20
- interactor = Balboa::Interactor::InteractorWrapper.new(crawler)
21
-
22
- app_last_punch = Balboa::CLI::Command::LastPunchCommand.new(interactor)
23
- app_make_punch = Balboa::CLI::Command::MakePunchCommand.new(interactor, options['holidays'])
16
+ app_last = Balboa::CLI::Command::LastCommand.new(interactor)
17
+ app_punch = Balboa::CLI::Command::PunchCommand.new(interactor, options['holidays'])
18
+ app_help = Balboa::CLI::Command::HelpCommand.new
24
19
  app_star_wars = Balboa::CLI::Command::StarWarsCommand.new
25
20
 
26
- app.add_command :last_punch, app_last_punch
27
- app.add_command :make_punch, app_make_punch
28
- app.add_command :star_wars, app_star_wars
21
+ app.add_command(:last, app_last)
22
+ app.add_command(:punch, app_punch)
23
+ app.add_command(:help, app_help)
24
+ app.add_command(:star_wars, app_star_wars)
29
25
 
30
- puts app.execute
26
+ app.execute
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'options'
4
-
5
3
  module Balboa
6
4
  module CLI
7
5
  class Application
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../version'
4
+
5
+ module Balboa
6
+ module CLI
7
+ module Command
8
+ class HelpCommand
9
+ def execute
10
+ $stdout.puts help
11
+ end
12
+
13
+ private
14
+
15
+ def help
16
+ [
17
+ "░░░░░▄▄███████████████▄▄░░░░ BALBOA #{Balboa::VERSION}",
18
+ "░░▄██████████████████████▄░░",
19
+ "░█████████▀███████▀████████░",
20
+ "█████████▀▀█▀█░░▀██▄██▄████░ Usage: balboa [command] [options]",
21
+ "░████████▄▄█░▀▀▄▄█░░▀░████░░",
22
+ "░███████▀░░░▄▄▄▄░░░▄▄▄███░░░ Commands:",
23
+ "▀███████░░▄▀▀██▀░░█▄░▄▀███░░ last Fetch last punch date",
24
+ "░██████▀░░█░██▀▀░░████░██░░░ punch Punch up to yesterday",
25
+ "████████░▄░░▀▀░░░░▀▄░▀▀█░░░░ help HERBERT, COME TO MY RESCUE",
26
+ "█▀██████▀░▄░░▄░░░░░░█░░█░░░░",
27
+ "▀▄████▄▀░░░▀▀░░▀░▄░░▀░░░█░░░ Options:",
28
+ "▄██████▀▄░░░░░░░░░██▄▄▄░█░░░ balboa punch -c FILE Override config from .balboa",
29
+ "███████░█░░░░░░░░█▀▄▄▄█░░█░░ balboa punch -p PASSWORD Override password from .balboa",
30
+ "░██████░░█░░░░░░░░░▀░░░░░░▀▄",
31
+ "▀▄█████░░░▀▄░░░░░░░░░░░░░░░█ Examples:",
32
+ "░░░███▀░░░░░░▀░░░░▄░░░░░░▄█░ balboa",
33
+ "░░░▄▀░░░░░░░░░▀▄░░░▀▀▀▀▀█▀░░ balboa punch",
34
+ "░▀░░░░░░░░░░░░░░░▀░░░░░░▀▄░░",
35
+ "░░░░░░░░░░░░░░░░░░░░░░░▄░█▀▄ #{quote}"
36
+ ].join("\n")
37
+ end
38
+
39
+ def quote
40
+ "`Life's not about how hard of a hit you can give...'"
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -3,13 +3,13 @@
3
3
  module Balboa
4
4
  module CLI
5
5
  module Command
6
- class LastPunchCommand
6
+ class LastCommand
7
7
  def initialize(interactor)
8
8
  @interactor = interactor
9
9
  end
10
10
 
11
11
  def execute
12
- @interactor.last_punch
12
+ $stdout.puts(@interactor.last)
13
13
  end
14
14
  end
15
15
  end
@@ -3,7 +3,7 @@
3
3
  module Balboa
4
4
  module CLI
5
5
  module Command
6
- class MakePunchCommand
6
+ class PunchCommand
7
7
  def initialize(interactor, holidays)
8
8
  @interactor = interactor
9
9
  @holidays = holidays.uniq.map { |holiday| Date.parse(holiday) }
@@ -11,13 +11,15 @@ module Balboa
11
11
 
12
12
  def execute
13
13
  punch_dates.each do |date|
14
- if date.saturday? || date.sunday?
15
- $stdout.puts "#{date} # WEEKEND"
16
- elsif holiday?(date)
17
- $stdout.puts "#{date} # HOLIDAY"
14
+ $stdout.print(date.strftime("%d/%m/%Y"))
15
+
16
+ if date.saturday? || date.sunday? || holiday?(date)
17
+ $stdout.print(" # SKIPPED")
18
18
  else
19
19
  @interactor.punch(date)
20
20
  end
21
+
22
+ $stdout.print("\n")
21
23
  end
22
24
  end
23
25
 
@@ -34,7 +36,7 @@ module Balboa
34
36
  end
35
37
 
36
38
  def last_punch_date
37
- Date.parse(@interactor.last_punch) + 1
39
+ Date.parse(@interactor.last) + 1
38
40
  end
39
41
  end
40
42
  end
@@ -6,8 +6,8 @@ require 'yaml'
6
6
  module Balboa
7
7
  module CLI
8
8
  class Options
9
- ERROR_EXIT_CODE = 1
10
- BALBOA_FILE = '.balboa'.freeze
9
+ ERROR_EXIT_CODE = 1
10
+ BALBOA_FILE = '.balboa'.freeze
11
11
 
12
12
  MissingOptionError = Class.new(RuntimeError)
13
13
 
@@ -50,8 +50,8 @@ module Balboa
50
50
  end
51
51
 
52
52
  def load_params
53
- @parser.on('-d', '--data PARAMS') do |data|
54
- @config.merge!(data)
53
+ @parser.on('-p', '--password PASSWORD') do |password|
54
+ @config.merge!('password' => password)
55
55
  end
56
56
  end
57
57
  end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Balboa
4
+ HOST = 'http://punchclock.cm42.io/'.freeze
5
+ end
@@ -3,28 +3,43 @@
3
3
  module Balboa
4
4
  module Interactor
5
5
  class CapybaraInteractor
6
- def initialize(options)
7
- @options = options
8
- @commands = {}
6
+
7
+ CommandNotFound = Class.new(RuntimeError)
8
+ LoginCommandNotFound = Class.new(CommandNotFound)
9
+
10
+ def initialize
11
+ @commands = Hash.new { fail CommandNotFound }
12
+ @signed_in = false
9
13
  end
10
14
 
11
15
  def add_command(key, command)
12
16
  @commands[key.to_s] = command
13
17
  end
14
18
 
15
- def last_punch
16
- login
17
- @commands['last_punch'].execute
19
+ def last
20
+ login unless signed_in?
21
+
22
+ @commands['last'].execute
18
23
  end
19
24
 
20
25
  def punch(date)
21
- @commands['make_punch'].execute(date)
26
+ login unless signed_in?
27
+
28
+ @commands['punch'].execute(date)
22
29
  end
23
30
 
24
31
  private
25
32
 
33
+ attr_accessor :signed_in
34
+
35
+ alias_method :signed_in?, :signed_in
36
+
26
37
  def login
27
38
  @commands['login'].execute
39
+
40
+ @signed_in = true
41
+ rescue CommandNotFound
42
+ raise LoginCommandNotFound
28
43
  end
29
44
  end
30
45
  end
@@ -5,7 +5,7 @@ require 'capybara/dsl'
5
5
  module Balboa
6
6
  module Interactor
7
7
  module Command
8
- class LastPunchCommand
8
+ class FetchLastPunchCommand
9
9
  include Capybara::DSL
10
10
 
11
11
  def execute
@@ -5,7 +5,7 @@ require 'capybara/dsl'
5
5
  module Balboa
6
6
  module Interactor
7
7
  module Command
8
- class MakePunchCommand
8
+ class FillPunchCommand
9
9
  include Capybara::DSL
10
10
 
11
11
  def initialize(options)
@@ -8,6 +8,10 @@ module Balboa
8
8
  class LoginCommand
9
9
  include Capybara::DSL
10
10
 
11
+ SuccessMessage = 'Login efetuado com sucesso!'.freeze
12
+
13
+ LoginFailure = Class.new(RuntimeError)
14
+
11
15
  def initialize(options)
12
16
  @options = options
13
17
  end
@@ -33,6 +37,9 @@ module Balboa
33
37
 
34
38
  def confirm
35
39
  click_button 'Sign in'
40
+ find('p', text: SuccessMessage)
41
+ rescue Capybara::ElementNotFound
42
+ raise LoginFailure
36
43
  end
37
44
  end
38
45
  end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'capybara_interactor'
4
+ require_relative 'command/fetch_last_punch_command'
5
+ require_relative 'command/fill_punch_command'
6
+ require_relative 'command/login_command'
7
+
8
+ module Balboa
9
+ module Interactor
10
+ class InteractorBuilder
11
+ def self.create(*args)
12
+ new(*args).create
13
+ end
14
+
15
+ def initialize(interactor, options)
16
+ @interactor = interactor
17
+ @options = options
18
+ end
19
+
20
+ def create
21
+ last_punch = Balboa::Interactor::Command::FetchLastPunchCommand.new
22
+
23
+ @interactor.tap do |itr|
24
+ itr.add_command(:punch, fill_punch)
25
+ itr.add_command(:last, last_punch)
26
+ itr.add_command(:login, login)
27
+ end
28
+ end
29
+
30
+ private
31
+
32
+ def fill_punch
33
+ Balboa::Interactor::Command::FillPunchCommand.new(@options)
34
+ end
35
+
36
+ def login
37
+ Balboa::Interactor::Command::LoginCommand.new(@options)
38
+ end
39
+ end
40
+ end
41
+ end
@@ -11,8 +11,8 @@ module Balboa
11
11
  @interactor.punch(date)
12
12
  end
13
13
 
14
- def last_punch
15
- @interactor.last_punch
14
+ def last
15
+ @interactor.last
16
16
  end
17
17
  end
18
18
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Balboa
4
- VERSION = '0.1.1'.freeze
4
+ VERSION = '0.1.2'.freeze
5
5
  end
data/lib/balboa.rb CHANGED
@@ -1,16 +1,20 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative 'balboa/version'
4
+ require_relative 'balboa/host'
4
5
 
5
6
  require_relative 'balboa/interactor/capybara_interactor'
6
7
  require_relative 'balboa/interactor/interactor_wrapper'
7
- require_relative 'balboa/interactor/command/last_punch_command'
8
- require_relative 'balboa/interactor/command/make_punch_command'
8
+ require_relative 'balboa/interactor/interactor_builder'
9
+ require_relative 'balboa/interactor/command/fetch_last_punch_command'
10
+ require_relative 'balboa/interactor/command/fill_punch_command'
9
11
  require_relative 'balboa/interactor/command/login_command'
10
12
 
11
13
  require_relative 'balboa/cli/application'
12
- require_relative 'balboa/cli/command/last_punch_command'
13
- require_relative 'balboa/cli/command/make_punch_command'
14
+ require_relative 'balboa/cli/options'
15
+ require_relative 'balboa/cli/command/last_command'
16
+ require_relative 'balboa/cli/command/punch_command'
17
+ require_relative 'balboa/cli/command/help_command'
14
18
  require_relative 'balboa/cli/command/star_wars_command'
15
19
 
16
20
  require 'phantomjs'
@@ -21,4 +25,4 @@ Capybara.register_driver :poltergeist do |app|
21
25
  end
22
26
  Capybara.default_driver = :poltergeist
23
27
  Capybara.run_server = false
24
- Capybara.app_host = 'http://punchclock.cm42.io/'
28
+ Capybara.app_host = Balboa::HOST
@@ -0,0 +1,52 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Balboa::CLI::Application do
6
+ it 'stores commands to execute later' do
7
+ app = described_class.new('cmd')
8
+ command = double('command', execute: true)
9
+
10
+ app.add_command('cmd', command)
11
+
12
+ expect(app.execute).to be true
13
+ end
14
+
15
+ it 'coerces command_id to string' do
16
+ app = described_class.new(:cmd)
17
+ command = double('command', execute: true)
18
+
19
+ app.add_command('cmd', command)
20
+
21
+ expect(app.execute).to be true
22
+ end
23
+
24
+ it 'coerces command_key to string' do
25
+ app = described_class.new('cmd')
26
+ command = double('command', execute: true)
27
+
28
+ app.add_command(:cmd, command)
29
+
30
+ expect(app.execute).to be true
31
+ end
32
+
33
+ it 'does not swallow errors from executed command' do
34
+ app = described_class.new('cmd')
35
+ command = double
36
+ allow(command).to receive(:execute).and_raise
37
+
38
+ app.add_command(:cmd, command)
39
+
40
+ expect {
41
+ app.execute
42
+ }.to raise_error(RuntimeError)
43
+ end
44
+
45
+ it 'raises error when command not found' do
46
+ app = described_class.new('cmd')
47
+
48
+ expect {
49
+ app.execute
50
+ }.to raise_error(Balboa::CLI::Application::CommandNotFound)
51
+ end
52
+ end
@@ -0,0 +1,99 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Balboa::Interactor::CapybaraInteractor do
6
+ context 'when no login command' do
7
+ it 'responds to last but raises error' do
8
+ interactor = described_class.new
9
+
10
+ last = double('cmd')
11
+ interactor.add_command('last', last)
12
+
13
+ error = Balboa::Interactor::CapybaraInteractor::LoginCommandNotFound
14
+ expect { interactor.last }.to raise_error error
15
+ end
16
+
17
+ it 'responds to punch but raises error' do
18
+ interactor = described_class.new
19
+
20
+ punch = double('cmd')
21
+ interactor.add_command('punch', punch)
22
+
23
+ error = Balboa::Interactor::CapybaraInteractor::LoginCommandNotFound
24
+ expect { interactor.punch(Date.today) }.to raise_error error
25
+ end
26
+ end
27
+
28
+ it 'responds to last but raises if no command provided' do
29
+ interactor = described_class.new
30
+
31
+ last = double('cmd', execute: true)
32
+ login = double('login', execute: true)
33
+
34
+ interactor.add_command('login', login)
35
+
36
+ error = Balboa::Interactor::CapybaraInteractor::CommandNotFound
37
+ expect {
38
+ interactor.last
39
+ }.to raise_error error
40
+ end
41
+
42
+ it 'responds to punch but raises if no command provided' do
43
+ interactor = described_class.new
44
+
45
+ punch = double('cmd', execute: nil)
46
+ login = double('login', execute: nil)
47
+
48
+ interactor.add_command('login', login)
49
+
50
+ error = Balboa::Interactor::CapybaraInteractor::CommandNotFound
51
+ expect {
52
+ interactor.punch(Date.today)
53
+ }.to raise_error error
54
+ end
55
+
56
+ it 'signs in only once' do
57
+ interactor = described_class.new
58
+
59
+ last = double('cmd', execute: nil)
60
+ punch = double('cmd', execute: nil)
61
+ login = double('login', execute: nil)
62
+
63
+ interactor.add_command('punch', punch)
64
+ interactor.add_command('last', last)
65
+ interactor.add_command('login', login)
66
+
67
+ interactor.punch(Date.today)
68
+ interactor.last
69
+
70
+ expect(login).to have_received(:execute).once
71
+ end
72
+
73
+ it 'stores last command to execute whenever called' do
74
+ interactor = described_class.new
75
+
76
+ last = double('cmd', execute: Date.today)
77
+ login = double('login', execute: nil)
78
+
79
+ interactor.add_command('last', last)
80
+ interactor.add_command('login', login)
81
+
82
+ expect(interactor.last).to eq(Date.today)
83
+ end
84
+
85
+ it 'stores punch command to execute whenever called' do
86
+ interactor = described_class.new
87
+ today = Date.today
88
+
89
+ punch = double('cmd')
90
+ allow(punch).to receive(:execute).with(today).and_return(true)
91
+
92
+ login = double('login', execute: nil)
93
+
94
+ interactor.add_command('punch', punch)
95
+ interactor.add_command('login', login)
96
+
97
+ expect(interactor.punch(today)).to eq(true)
98
+ end
99
+ end
data/spec/balboa_spec.rb CHANGED
@@ -6,4 +6,8 @@ describe Balboa do
6
6
  it 'has a version number' do
7
7
  expect(Balboa::VERSION).not_to be nil
8
8
  end
9
+
10
+ it 'has a target host' do
11
+ expect(Balboa::HOST).not_to be nil
12
+ end
9
13
  end
metadata CHANGED
@@ -1,15 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: balboa
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
  - Waldyr de Souza
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-07-21 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2016-07-22 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: capybara
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 2.7.1
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 2.7.1
27
+ - !ruby/object:Gem::Dependency
28
+ name: phantomjs
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 2.1.1.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 2.1.1.0
13
41
  description: Make Balboa do the punches for you
14
42
  email:
15
43
  - waldyr.ar@gmail.com
@@ -18,7 +46,6 @@ executables:
18
46
  extensions: []
19
47
  extra_rdoc_files: []
20
48
  files:
21
- - ".balboa"
22
49
  - ".gitignore"
23
50
  - ".reek"
24
51
  - ".rspec"
@@ -36,16 +63,21 @@ files:
36
63
  - features/support/env.rb
37
64
  - lib/balboa.rb
38
65
  - lib/balboa/cli/application.rb
39
- - lib/balboa/cli/command/last_punch_command.rb
40
- - lib/balboa/cli/command/make_punch_command.rb
66
+ - lib/balboa/cli/command/help_command.rb
67
+ - lib/balboa/cli/command/last_command.rb
68
+ - lib/balboa/cli/command/punch_command.rb
41
69
  - lib/balboa/cli/command/star_wars_command.rb
42
70
  - lib/balboa/cli/options.rb
71
+ - lib/balboa/host.rb
43
72
  - lib/balboa/interactor/capybara_interactor.rb
44
- - lib/balboa/interactor/command/last_punch_command.rb
73
+ - lib/balboa/interactor/command/fetch_last_punch_command.rb
74
+ - lib/balboa/interactor/command/fill_punch_command.rb
45
75
  - lib/balboa/interactor/command/login_command.rb
46
- - lib/balboa/interactor/command/make_punch_command.rb
76
+ - lib/balboa/interactor/interactor_builder.rb
47
77
  - lib/balboa/interactor/interactor_wrapper.rb
48
78
  - lib/balboa/version.rb
79
+ - spec/balboa/cli/application_spec.rb
80
+ - spec/balboa/interactor_spec.rb
49
81
  - spec/balboa_spec.rb
50
82
  - spec/spec_helper.rb
51
83
  homepage:
@@ -73,4 +105,3 @@ signing_key:
73
105
  specification_version: 4
74
106
  summary: Make Balboa do the punches for you
75
107
  test_files: []
76
- has_rdoc:
data/.balboa DELETED
@@ -1,16 +0,0 @@
1
- ---
2
- email: waldyr.araujo@codeminer42.com
3
- password: waldyr.araujo@codeminer42.com
4
- project: 'API Market Place'
5
- start_at: '08:00'
6
- lunch_at: '12:00'
7
- restart_at: '13:00'
8
- leave_at: '17:00'
9
- holidays:
10
- - 12/06/1992
11
- - 12/06/1992
12
- - 12/06/1992
13
- - 12/06/1992
14
- - 12/06/1992
15
- - 12/06/1992
16
- - 12/06/1992