►
From YouTube: Contributor-first @AsyncAPI #11 with JavaScript Parser and snapshot testing of code generators
Description
25th of November 2021
17:34 Setting up your fork to work like a charm for more than just one pull request
33:20 Set up JavaScript Parser development environment and explanation of different tests
39:28 Understand how custom schema parsers are integrated with the main library
55:20 Understanding Code Generators and how to add integration tests using Jest snapshot functionality
A
Evening,
happy
thanksgiving
whatever
welcome.
I
can
send
to
you,
welcome
to
contributor
first
stream,
and
yes
now,
I'm
talking
just
to
myself.
Probably
not
everyone
is
watching
at
the
moment
unless
you're
watching
the
recording
so
yeah,
please
bear
with
me.
A
A
I
have
to
set
up
few
things,
but
it
doesn't
mean
you
can't
say
hello.
So
please
use
the
chat
wherever
you
are
watching
the
live
stream
and
please
say
hello
and
in
the
meantime,
I'm
grabbing
all
the
links.
B
A
A
B
A
Hey
finally,
somebody
said
hello.
Let
me
see
if
chat
overlay
finally
started
working.
Okay,
it
doesn't
work
nice,
oh
wait.
We
have
this
background
from
the
conference.
A
Let
me
see
if
I
can
oh
yeah,
let's
skip
it
this
way
for
now,
until
we
start
sharing
screen
so
the
just
for
those
that
joined
the
live
stream
first
time
in
your
life,
so
it's
a
it's
a
live
stream
that
is
called
contributor
first,
and
it's
purely
for
asking
api
contributors.
A
And
I
freezed
no,
I
didn't.
I
thought
I
freezed
hi
ayush,
so
it's
it's
a
purely
it's
a
live
stream
purely
for
asking
api
contributors
like
people
that
would
like
to
contribute
to
the
project,
but
there's
like
there's,
basically
always
a
confusion
like
how
people
can
help
like
in
what
repository
and
how
to
kick
off
we're
like
we
know
we,
we
lack
with
some
onboarding
materials
and
we
we
know
that
not
every
repo
is
well
described
and
has
a
well-defined
issues
that
it's
super
easy
to
pick
up
something.
A
So
these
live
streams
are
to
to
provide
an
ad
hoc
fix.
So,
of
course,
we
plan
to
work
on
the
how
to
contribute
guides
like
overall
about
the
whole
organization
but
yeah
in
the
meantime,
why
not
solving
issues
one
by
one
with
the
live
stream?
So
that's
the
idea
of
the
live
streams
and
on
every
live
stream.
We
are
solving
different
we're
talking
about
solving
different,
but
talking
about
different
topics
and
they're,
always
like
driven
by
you.
So
today
we're
gonna
talk
about
two
topics,
mainly
two
topics:
I'm
not
sure.
A
The
issue:
excuse
me
talk
about
it
a
bit,
but
the
most
important
stuff
that
I'm
going
to
cover
live
is
set
up
in
a
development
environment
for
parser
from
the
very
beginning
like
once,
you
fork
the
repo,
because
if
you
want
to
be
a
regular
contributor
to
an
open
source
project,
the
the
key
here
is
to
set
up
your
repository,
your
fork
in
a
proper
way.
So
it's
so.
The
work
with
the
upstream
repo
is
is
seamless.
A
If
we
can
call
it
this
way,
and
so
that's
one
part,
the
other
one
will
be
the.
I
will
be
the
the
snapshot
testing
in
templates,
so
we've
got
a
lot
of
a
lot
of
different
code
generators
and
unfortunately
like
like
most
of
them
or
half
of
them.
I
don't
recall
I
don't
remember
actually
so
yeah,
let's
say
some.
Some
of
them
don't
have
proper
tests
and
yeah.
It's
it's
a
lot
of
work
to
add
like
proper
unit
tests
for
some
for
some
functions
and
integration
tests.
A
So
the
bare
minimum
that
we
need
for
every
template
is
so-called
snapshot
testing
and
in
this
live
stream.
I'm
gonna
cover
like
how
to
do
it
basically
like
how
to
do
it
with
your
with
your
with
like
one
of
the
templates.
A
A
A
A
I
wonder
why
so
please
share,
but
yeah
anyway,
can
you
like
in
the
meantime,
when
I'm
checking
out
my
my
screen
sharing?
Can
you
drop
a
message
in
the
excuse
me
in
the
in
the
chat?
A
Oh
yeah,
exactly
it's
interesting,
because
I
I
use.
I
just
wanted
to
ask
you
if,
because
I
see
that
sometimes
my
my
video
freezes,
but
I
think
audio
is
fine,
and
I
wanted
to
ask
you
if
you,
if
you
experience
the
same
with
the
live
stream
but
yeah,
I
guess
you
do,
but
the
the
audio
is
fine
right.
Can
you
confirm
that,
like
you,
I'm
at
least
audible.
A
And
is
it
super
disturbing
that
my
video
freezes.
A
A
Yeah
yeah,
so
let
me
let
me
switch
to
to
firefox.
So
give
me
a
give
me.
A
Because
it's
weird,
like
I,
also
had
issues
with
brave
during
the
conference
and
firefox.
A
A
A
A
A
Hey
okay,
so
you
see
me
with
the
with
my
camera.
Okay,
let
me
let
me
try
with
ben's
suggestion
and
yeah
I
mean
maybe
restart
like
plugging
in
and
out
will
work
so
give
me
a
sec.
A
A
A
Or
not
so
yeah,
let's
start
first
topic
and
it's
already
18
minutes
past
the
start
of
the
of
the
live
stream.
So
I'm
getting
better
so
going
back
to
the
to
the
intro,
because
not
all
of
you
were
here.
What
we're
gonna
cover
now
is
like
kicking
off
with
with
the
parser,
but
the
most
important
is
like
setting
up
the
environment
from
the
scrat
from
scratch
like
how
to
make
it
nice
in
case
you
want
to
contribute,
not
just
request
but
actually
regularly
contributing.
A
Let
me
yeah,
let
me
first
open
visual
studio
code.
No,
actually!
No,
I
don't
have
it
yet.
So
let
me
let
me
share
just
a
screen.
A
Okay,
so
let
me
put
my
face
somewhere,
so
it's
actually
helpful.
I
guess
that's!
That's
the
most
helpful.
It's
not
that
big!
So
it's
not
that
scary!
So
yeah,
let's,
let's
go
to
the
parser.
A
So
yeah,
let's
imagine
a
situation,
you
want
to
contribute
to
the
parser
or
any
other
repository.
So
what's
your
first
steps
like,
let
me
hide
the
the
logo,
because
it's
not
helpful
now
yeah,
so
yeah.
You
basically
have
to
fork
if
you're
a
like
regular
maintainer
code
owner
whoever
you
are,
we
all
work
on
forex,
so
yeah.
Let's
click
on
fork,
it's
fun,
wow
it
zoomed
by
accident,
but
yeah.
A
So
I
have
a
fork
already,
but
it's
actually
good
that
I
have
it,
but
I
don't
have
the
project
yet
locally
cloned.
So
let's
go
to
my
fork
and
what
we
will
cover
now
is
setup
that
helps
with
this
issue
that
you
can
see
here
so,
but
basically,
how
the
how
it
works.
A
When
you
have
a
upstream
repo
like
I,
I
was
now
in
nothing
api
parser
and
then
you
fork
it
and
it's
in
my
private,
under
my
private
account-
and
you
have
this
situation
that
you
like
your
fork-
is
not
automatically
updated
with
the
upstream.
A
So
you
basically
end
up
with
situation
that
your
master
after
you
fork
it.
Then
it's
not
automatically
updated.
Then
you
have
a
situation
that
your
master
on
your
or
on
your
default,
not
default
branch
on
your
fork
is
not
updated
whenever
there
are
new
changes
coming
into
the
fork
into
the
upstream.
A
So
if
you
just
do
this
like
clone
the
repo
and
clone
it
locally,
then
your
master
on
your
local
will
always
be
outdated.
Like
you
to
have
it
updated
like
like
manually,
you
would
have
to
like
use
this
functionality
to
quickly
fetch
upstream
that
they
added
it
few
a
few
few
months
ago.
I
think
so
now
it's
even
easier
before
it
was
much
harder
to
update
your
fork.
So
you
you
clone
the
you
basically
clone
the
repo
right.
So
let's,
let's
clone
the
repo.
A
Okay,
so
dum
bun,
dum,
bun,
dum
nvm.
Let
me
use
older
node.
A
Okay,
so
so
we're
oh
wait.
I
don't
know
even
where
I
am
so.
A
And
yeah:
let's.
A
To
be
honest,
I
never
do
it
this
way,
but
on
the
live
stream,
I
need
to
look
professionally
that
I'm
cloning
with
the
command
line.
Normally,
of
course,
I'm
not
using
command
line.
That's
just
me.
I
like
uis,
so
I
use
github
desktop
client
for
git,
but
yeah
with
live
stream.
I
guess
it's
easier
to
present
with
the
cli
and
it's
cool
to
sometimes
pretend
time.
Smart.
A
Oh
yeah
ben
you're,
gonna
love
it
like
github
cli
is
like
masterpiece
like
it's,
it's
beautiful.
I
I
love
it
when
it's
when
it
comes
to
review
of
pull
requests.
It's
super
handy,
really
super
handy,
so
yeah
I
cloned
it.
A
Oh
I'm
in
the
parser.js.
So
and
what's
the
problem
like
again,
let's,
let's
go
to
the
ui.
A
Let's
repeat
it
again,
so
when
I
just
cloned
my
fork,
the
master
that
I
have
here,
it's
it's
the
same
master
that
I
have
in
my
fork.
So
it's
again
like
it's
43
commits
behind.
So
if
you,
if
I
would
now
branch
from
this
master,
I
would
create
a
new
branch
and
then
I
would
like
work
for
a
few
days
on
some
pull
requests
and
then
I
would
just
push
the
branch
in
my
fork
and
then
open
pr
against
the
upstream.
A
Oh
my
god,
like,
oh,
my
god,
the
the
pull
request
would
be
terrible
because
it
would
include
the
43
comets
as
well,
so
it
would
be
like
like
a
disaster,
and
so
simply
what
you
have
to
do
is
you
have
to
follow
the
script
that
I
created
some
time
ago,
but
yeah
first
things.
First,
so
let's
go
to
the.
A
A
We
have
like,
I
think,
it's
I
I'm
pretty
sure
it's
mentioned
in
the
contributing
guide.
We
have
this
git
workflow
document
that
I
highly
recommend
to
anyone
that
is
setting
up
a
a
developer
environment
because
it
has
two
important
things
like.
First
of
all,
it
has
instructions
like
that
explain,
step
by
step
how
to
configure
your
fork.
A
The
must
like
the
default
branch,
the
master
branch
in
our
case
in
the
in
the
fork
to
have
it,
follow
the
upstream
master
and
like
be
a
copy
of
the
of
the
of
the
upstream
master.
So
when
you
do
it
manually,
it's
it's
nicer
to
do
it
first
time
manually
because
you
basically
learn.
A
What's
the
what's
the
deal
that,
like
that,
you're
pointing
to
the
upstream,
etc,
etc.
But
it's
cool
to
do
it
manually
like
this,
just
for
the
first
time
but
later
when
you
have
like
multiple
different
repositories
from
massing
api,
there
is
a
script
for
it,
so
you
basically
have
a.
A
You
have
a
link
here,
and
you
have
the
script
here
so
yeah
just
just
grab
it
to
your
local,
but
basically
how
it
looks
like
how
I
did
it
to
make
my
life
much
easier.
Is
that
my
patch
file,
I
have
an
alias
for
my
conf
fork
script,
so
I
basically
have
this
confort
command.
A
And
what
I
have
to
just
do
is
do
fork,
and
then
I
have
to
provide
three
different
arguments.
So
first
one
is
the
name
of
the
organization.
A
A
A
A
B
A
A
I
didn't
remove
my
fork
for
the
sake
of
this
for
the
sake
of
this
livestream,
because
I
wanted
to
show
you
that
my
fork
is
outdated,
like
what
is
the
the
future
implication,
if
you
don't
have
your
local
properly
configured,
but
basically
what
happens
now,
like
my
master,
like
my
default
branch
yeah,
we
really
have
to
get
rid
of
this
master.
A
Yeah
whatever
so
so,
my
master
is
now
like
a
upstream
master.
So
let's
say
I
do
now
git.
A
I
have
some
aliases
sorry,
so
yeah
check
out
well
good
check
out
branch
eva
and
now
I
branched
from
the
from
the
master
that
is
actually
upstream
and
let's
let's
say
I
I'm
I'm
doing
some
stuff
right,
yeah,
I'm
working
on
some
requests,
I
get
it,
I
got
it
merged
and
then,
if
I
got
it
merged
into
upstream
master,
then
what
I
do
is
just
check
out
master
it
pull
and
that's
it
and
it's
not
pulling
and
it's
not
pulling
from.
A
So
that's.
There
are
many
different
ways,
as
I've
heard
many
say
they
do
it
differently,
how
they
keep
their
fork
on
local
in
sync,
with
remote
master,
but
I
mean
what's
the
point
of
learning
different
ways
if
we
already
like
I'm,
not
sure
if
every
contributor
is
following
the
same
instructions
or
you
have
your
different
ways
of
doing
it,
but
some
I
know
follow
the
same
approach
and
it's
it's
working
perfectly.
A
Fine,
so
yeah
and
that's
that's
it
like.
A
That's
it
and
now
yeah,
let's
npm
install
so
now,
let's,
let's
talk
about
like
because,
like
until
now
until
5,
32
pm
polish
time
now
we
finished
covering
like
some
generic
stuff.
So
what
I
was
doing
now
with
parser.js
you
actually
have
to.
A
Then,
if
you're
not
working
regularly
on
open
source,
you
don't
know
this
flow
like
you're
not
used
to
the
flow
to
work
with
forks,
because
if
you're
in
a
scrum
team
in
inside
some
private
repo,
like
bitbucket
or
whatever
in
some
in
your
company,
you're
gonna
you're,
all
gonna
have
access
to
the
same
repo
and
you're
gonna
branch
inside
the
the
upstream
you're,
not
gonna,
work
with
forks,
so
you're,
basically
not
facing
this
issue
that
you're
for
getting
outdated,
and
I
see
sometimes
in
prs
that
people
just
get
this
stuff
messed
up
a
bit
because,
like
the
first
contribution
is
smooth.
A
But
then
the
next
one
gets
a
lot
of
pollution.
Polluted
not
polluted
like
like
the
comet.
That
should
not
be
there.
Basically.
A
A
Well,
we
don't
even
I
mean
I'm
wondering
like
what
you
think
should
repo
has
instruction
that
you
first
need
to
install
dependencies.
I'm
waiting
for
your
ideas
in
the
chat.
A
But
in
the
meantime,
so
yeah
make
sure
that
npm
test
passes.
So
let's
do
npm
test.
A
This
one
is
huge,
wait,
wait,
wait,
wait,
wait.
A
So
yeah
I'm
gonna
go
back
into
I'm
gonna
get
into
this
issue,
but
let's
first,
let's
try
to
approach
it
by
also
talking
about
the
like
what
kind
of
tests
we
have
in
the
project.
So
npm
test
runs
some
some
series
some
scripts
and
there
are
one
two
three.
A
Three
different
tests:
the
test
leap
script
triggers
a
a
a
a
parse
test
and
parse
test.
It's
our
it's
our
file,
where
we
have
all
the
all
the
unit
tests.
So
where
we're
checking
like
and
testing
yeah
specific
functionality
of
the
of
the
library,
then
the
the
next
one.
A
Then
the
way
the
next
one
is
test
browser,
so
in
case
of
the
of
the
parser,
it's
isomorphic.
A
Is
it
how
you
spell
it
library,
so
it
works
in
on
the
server
in
node
project,
but
it
can
also
work
in
a
in
a
browser
on
a
client
side,
and
whenever
we
do
release,
we
are
releasing
a
a
bundle
js
file
as
well,
so
basically
the
artifact
when
we
when
we
produce
a
release,
artifact
like
for
last
version
with
it.
We
also
publish
bundle
to
github
and
we
also
have
it
included
in
the
npm
package.
A
And
then
so,
the
test
is
basically
starting
a
super
simple
html
file
where
we
are
using
the
let's.
Let
me
show
you
like:
it's
super
simple
html
file
that
uses
the
bundle.
Where
is
it
bundle.js
generated
bundle.js?
A
So
that's
a
third
test
that
we're
a
second
test
that
we're
doing
and
the
third
one
is
parse
from
url
and
it's
yeah
similar
to
the
bundle.js
to
the
to
the
browser
test.
But
it's
it's
testing
specifically
it's
an
integration
test
for
for
parser
that
has
this
function,
that
you
can
parse
a
a
file
from
the
from
the
url
and
it's
starting
a
a
server
with
a
sample
file.
So
we
have
three
different
tests
and
now,
let's
see,
I
think
the
test
leap
failed.
A
A
So
so
that's
it
if
it
comes
to
testing
so
why
we
need
to
do
npm
test
and
then
npm
run
lint.
Of
course
we
have
a
linter,
oh
yeah,
instead
of
getting
a
a
slap
on
the
request
level
that
you,
you
have
some
basic
errors
in
your
in
your
code,
then
just
better
run
the
linter
locally
to
get
the
information
about
errors
on
your
local
and
we
have
a
special
script,
lint
fix
that
can
solve
those
trivial
ones
like
missing
semicolon
or
something
so
yeah.
A
These
are
the
basics
like
setup,
so
you
need
to
be
able
to
run
tests.
Do
the
linting,
and
now
I
we
still
have
20
minutes.
So
I
guess
we
are
not
going
to
be
able
to
cover
all
the
topics
but
yeah,
let's
let's
anyway,
I.
I
promise
that
during
the
discussion
about
parts
of
js,
I'm
going
to
talk
about
this
specific
specific
issue
related
to.
A
And
was
it
this
one?
I
mean
I
don't
want
to
talk
about
it
until
I
show
it
to
you.
Just
don't
remember,
and
it
wasn't
the
referencing.
A
Oh
yeah,
this
one,
so
the
the
issue
is
related
basically
to
this
function
and
what
what
what
happens
here?
It's
it's!
It's
responsible
for
validation
and
and
converting
messages,
and
this
particular
part
is
responsible
for
doing
it
for
doing
it
with
the
with
the
schemas.
So
to
fix
the
the
problem
that
we
have
here.
You
first
need
to
understand
how,
as
an
api
work
so
in
asking
api
file.
A
A
Afroschema
parser
has
for
sure
nice
example
of
the
asking
api
file-
yeah,
yeah,
okay,
so
schema
format,
so
in
async
api
file.
When
you
describe
your
application-
and
you
describe
your
message-
one
of
the
main
important
things
about
the
the
message
that
flows
in
your
out
or
into
your
application
is
how
the
payload
of
the
of
the
message
looks
like
so
yeah.
What's
the
contract
behind
the
the
structure
of
the
message
and
in
asking
api,
you
can
define
payload
using
different
schema
formats
so
like
by
default.
A
It
can
be
on
schema,
but
you
can
provide
a
specific
schema
format
like,
for
example,
avro
schema
and
then,
when
we
parse
your
document,
we
need
to
validate
if
your
schema
is
done
properly
with
avro.
If
and
we
need
to
convert
it
into,
json
schema
so
later
on.
This
schema
can
be
easily
digested
by
any
tooling.
A
So
we
need
to
do
these.
Two
things
like
the
parser
needs
to
be
smart
and
and
understand,
then,
that
this
is
not
json
schema,
that
this
is
avro
and
there's
a
specific
code
plugged
in
that
can
yeah
digest
this
avro
schema,
validate
and
convert
into
the
developers
validate
and
convert
into
the
json
schema.
A
And-
and
that's
this
that's
this
part
of
the
of
the
of
the
code,
so
basically
we
are
checking
and
the
schema
format.
A
How
were
we
doing
it
just,
but
I
don't
remember
yeah.
We
have
a
a
function
in
the
parser
that,
before
you
run
a
parser,
you
can
register
schema.
Parser
schema
parsers,
so
basically
parser.js
architecture
is
done
in
the
way
that
it
is
responsible
only
for
the
default
things
default
asking
api
things.
A
A
Because
in
the
registration
during
the
registration
we
are
able
to
just
provide
this
schema,
specific
functions
and
and
and
the
list
of
mime
types
for
a
for
a
given
schema
so
like
just
quickly
have
a
look
at
boom.
A
Mind
types
yeah,
so
such
an
such
a
schema,
specific
parser
also
always
returns
like
this.
What
mind
types
and
now
you
can
see
this
you've
seen
it
in
the
schema,
schema
parser,
so
how
it
works
like
parser,
goes
like
finds
a
message
that
has
a
payload
with
schema
parser
with
some
schema
format,
and
then
it
checks
okay.
So
it
matches
this.
This
specific
schema
parser
and
there
it
runs
a
dedicated
code
for
a
for
this
single
message
to
to
do
some
conversion
with
it
and
validation
and
etc.
A
So
and
that's
it
like,
so
that's
it
from
the
from
the
architectural
point
of
view.
Let's
say
how
it
works
in
general.
Now
the
problem
is
that
I
can
have
that.
I
can
have.
A
That
is,
that
does
not
support
that
not
does
support
like
I
can
have
a
schema
format
that
is
not
supported
by
the
player,
in
other
words,
like
let's
say
I'm
using
parser,
okay,
I'm
using
parser
js.
A
What
I
I
mean,
some
people,
don't
really
read
me,
unfortunately,
and
they
didn't
didn't
notice
in
the
readme.
A
The
part
about,
like
example,
using
avro
schemas,
open
api
schemas
ram
data
types.
Somebody
didn't
notice
that
some
external
additional
package
has
to
be
installed.
So,
let's,
let's
have
a
look.
Maybe
I
didn't
prepare
that,
but
I
think
we
can
quickly
quickly
do
it.
So
this
browser
test
takes
us
an
api
file
and
dum
dum
dum
tries
to
render
it.
A
Okay,
so
let's
so,
basically
we
should
be
able
to
do
it.
We
should
be
able
to
do
it.
Let's
take
this
message.
A
Okay,
so
now
again,
let
me
let
me
point
you
out
to
a
specific
part,
so
I'm
gonna
start
now
a
a
test
where
I
have
a
a
html
in
which
I'm
using
the
using
the
the
bundle
of
the
of
the
parser,
but
I'm
not
using.
I
don't
have
avoroskim
other
avro
schema
parser
there,
but
but
I
actually
in
my
async
api
file,
I
have
a
message
with
payload
with
avro,
so
basically
this
should
fail
and.
B
A
A
A
So
yeah.
That's
that's
the
issue
that
we
have
and
now
going
into
the
list
of
issues.
A
Yeah
exactly
this
one,
it's
a
like
yeah,
although
that
I
was
saying
like
it's
explained
here,.
A
A
Just
nectarius
has
different
different
things
to
to
complete
now
he's
focused
on
different
things
in
the
project
and
he
simply
doesn't
have
time
to
to
go
back
to
his
pull
request.
So
yeah
we
had
a
super,
lengthy
discussion
here.
How
this
could
be
improved.
He
has
some
code
already
so
now.
Nobody,
no
nothing's
blocking
you
to
actually
jump
in
and
try
to
try
to
fix
the
spark
and,
as
you
can
see
like
three
of
us
were
involved
in
previous
pr.
A
So
when
you
will
try
to
approach
this
this
bug
and
and
fix
it,
I
like
not
back
it's
like
improvement,
but
yeah
do
it
and
we're
gonna
be
happy
to
to
help
you
out
on
the
pr
level
so
yeah.
I
think
I
hope
I
I
think
it
helped.
A
I
hope
it
helped
and
the
problem
is,
I
don't
want
to
finish
now,
but
it's
five
minutes
five
minutes
left,
but
for
next
live
stream.
I
have
already
a
guest
and
I
don't
want
to
leave
people
alone
without
one
thing,
so
yeah,
let's,
let's
try.
Let's,
let's
see,
maybe
my
wife
will
not
kill
me
that
I
did
not
finish
in
five
minutes
or
you're.
Gonna
have
fun
seeing
a
live
stream
with
my
wife
behind
me
and
knife
in
my
neck,
so
yeah
it's
gonna
be
fun.
A
A
Yeah
and
luckily
like
in
poland,
we
don't
have
this
tradition
of
late
dinner.
Then
so
me
show
your
comment
to
others
so,
basically
like
in
like
in
it's
changing
a
bit,
but
the
the
old
approach
is
that
dinner
is
something
that
you
have
yeah
early
like
three
two:
three:
we
don't
really
do
lunches
like
we
sometimes
go
for
lunch
at
like
midnight.
Midday
but
usually
dinner
is
a
lunch
like
so
at
this
time,
like
maybe
not
now
yet,
but
in
30
like
in
one
hour
or
30
minutes.
A
My
wife
would
tell
me
like
come
to
eat
supper,
not
dinner.
It's
a
it's
yeah
polish
thingy,
always
laughing
with
fran
about
it
that
we
have
totally
different
attitude,
twisting
tweeting,
so
yeah.
Let's
talk
about
no
js.
A
So
what
is
this
project
all
about?
So
this
this
node
project
node.js
template
it's
a
template
for
our
async
api
generator
and
it's
what
is
asking
api
generator,
so
async,
api
generator
generator
is
basically
a
tool
that
allows
you
to
define
code,
generators
or
documentation,
generators.
So
projects
where
you
have
templates
and
when
you
run
templates
through
the
generator
generator
injects
async
api
file
and
some
other
goodies
into
the
templates.
So
in
the
output
you
get
actually
not
template
files,
but
actually
real
files
with
some
real
data.
A
I
wonder
if
it's
good
explanation,
but
yeah
anyway,
that's
that's
called
generators,
and
the
problem
is
that
we
have
like,
like
this
huge
amount
of
projects
like
this
huge,
and
we
also
have
many
code,
generators
and,
and
one
of
the
best
things
you
could
do
for
the
project.
If
you
would
like
to
contribute,
is
to
contribute
the
tests,
but
these
tests
should
be
easy
to
contribute
by
by
anyone.
A
So
in
code
generator,
I
see.
I
personally
see
three
different
types
of
tests
like
unit
tests,
because
sometimes
you
have
to
have
some
helpers
that
go
through
the
async
api
file
and
pick
up
some
data
basing
on.
If
you
doesn't
like.
If
you
want
to
generate
code
for
kafka,
then
there
you
need
to
have
some
helper,
how
bindings
for
kafk
handled
and
what
code
will
be
generated.
A
Then,
at
the
end
we
need
some
integration
tests
right.
So
once
we
generate
code
would
be
nice
to
have
some
really
sophisticated
integration
test.
That
starts
a
docker
compose
spins
up
a
let's
say:
kafka
broker
starts
your
application
and
then
yeah.
We,
let's
say
we
send
some
event
and
we
check
if
the
event
got
delivered
to
the
to
the
application.
A
This
is
high
level,
like
I
don't
think,
we've
done
these
integration
tests
yet
for
any
project
it's
like
it
can
like
it
can
be
complicated
to
implement
and
also
these
tests
are
flaky
tests
like
if
you
have
to
depend
on
some
on
docker
compose,
like
spawn
all
these
environments
and
then
send
some
events
and
wait
for
the
events
like
yeah.
You
can
imagine
that
randomly
they
can
fail.
A
So
it's
a
it's
a
huge
challenge,
so
we
have
a
middle
ground
solution
like
not
not
like
no
worries
ben
thanks
for
for
being
so,
you
have
to
you.
Have
you
have
unit
tests?
You
have
integration
tests,
but
in
the
middle
we
came
up
with
snapshot
testing,
so
snapchat
testing
like
it's.
I
think
it's
I
don't
know.
If
any
other
project
then
just
is,
is
giving
it
that's
interesting
would
be
interesting
to
know,
but
basically
ingest
you
have
this
snapshot
testing.
A
So
basically
what
it
means
is
like
it
takes.
When
you
set
up
tests,
it
takes
a
snapshot
of
the
like
in
the
test.
Let's
say
we
run
generator.
We
generate
some
application
and
we
take
a
snapshot
of
this
of
these
files
and
then
every
time
you
make
some
changes
on
a
pull
request.
We
can
run
a
test
that
generates
application
and
validates
if
the
structure
of
the
files
didn't
change
if
they,
if
they're
like
accurate
and
nothing
got
lost
because
of
the
changes
in
dpr.
A
A
A
Then,
of
course
there
is
no
no
jest,
it
has
no
tests
and
it
there's
no
tests
yeah
anyway
and
let
e,
let's
just
install.
A
A
Wrong
package.json,
whatever
yeah
they
have
dependencies
just
yeah.
I
installed
in
the
wrong
location.
Sorry
about
that.
A
And
let
me
be
oh
yeah.
We
need
some
one
more
thing,
so
in
our
dev
dependencies
we
need
one
more
thing,
so
we
always
to
enable
snapshot
testing.
It's
not
just
a
test
runner
that
we
need,
but
we
also
need
a
a
as
an
api
generator
because
we're
gonna
use
it
in
our
tests
as
library,
so
npm.
A
A
A
A
If
you
don't
want
to
I'm
not
going
to
force
you,
I'm
just
going
to
continue.
So,
let's
paste
the
code
paste
the
code
and
what
we
have
here.
What
we
have
here,
we
are
gonna
use
path
to
resolve
paths,
of
course,
generator
because
we
need
async
api
generator.
So
every
single
snapshot
test
will
have
these.
A
Every
single
snapshot
test
will
have
to
use,
read
file,
function
and
an
id
function
from
from
node
and
we're
gonna
use
a
neat
crypto
library
to
to
generate
some
stuff,
and
I'm
gonna
tell
you
why
so
basically,
first
is
to
define
main
test
result
path
so
to
yeah.
We
we
have
to
have
a
place
where
we
can
generate
the
the
code
using
a
node.js
template
and
because
the
generated
output,
we're
gonna,
have
to
check
against
the
snapshot
and
we
need
we
need
to
put
it
somewhere.
A
A
So
basically,
every
single
test
run
have
to
go
to
a
to
a
yeah
to
a
subfolder
with
some
generated
name,
so
the
next
run
will
go
into
another
subfolder.
You
know
what
I
mean,
so
that's.
Why
we're
doing
some
magic
here
to
generate
the
the
name
of
the
folder?
A
Then
we
yeah
it's
it's
an
integration
test,
so
you
end
up
with
some
timeouts
with
jest
and
what
we
have
here
should
generate
application
files
using
the
solas
binder.
Of
course,
that's
a
code
I
copied
from
javaspring
template.
A
So
we
don't
really
need
to
check
solas
binders
because,
like
there's,
solas
protocol
is
not
supported
by
a
node.js
template.
A
So,
first
we
just
need
to
generate
folder
name
like
get
the
output
directory
and
what
we're
doing
next
we're
calling
like
using
the
like
initializing,
the
the
generator.
A
Now
this
part,
if
it
comes
to
generator
api,
the
first
argument
is
always
the
name
of
the
excuse
me
the
name
of
the
template,
but,
of
course,
because
we're
running
tests
inside
the
template,
it's
just
enough
to
point
to
the
root
directory
and
that's
gonna
work,
because
the
generator
from
the
architecture
point
of
view
supports
and
that
you
can
have
template
as
a
standalone,
standalone,
node
npm
package.
A
So
you
can
have
it
wherever
you
want,
because
we're
using
a
npm,
arborist
library
to
to
get
the
template
and
install
in
the
in
the
generator
to
use
it.
Excuse
me:
I
need
to
get
some
water
next
time
now
the
output
there,
the
directory.
So
we
are,
it's
gonna,
be
in
every
single
test
like
this.
Now,
then
we
have
force
right.
A
This
option
has
to
be
passed
because
by
default
generator
blocks
you
from
doing
bad
things
and
does
not
allow
you
to
generate
inside
the
git
project.
If
you
have
some
unstashed
changes
so
yeah,
we
need
to
force
installation
like
generation
anyway
and
yeah
template
params.
We
do
not
need
to
pass
them
at
the
moment.
A
Let's
comment
this
part
out,
and
here
we
just
do
this
and
now
yeah,
let's,
let's
call
the
generator
and
generate
from
file
and
of
course
we
need
to
have
some
test
yaml
file.
So,
let's,
let's
see,
let
me
stop
sharing
for
a
second,
because
I
don't
know
what
have
I
have
here
in
the
file?
A
Okay,
some
secrets
were
there.
Luckily,
you
could
not
see
it
so
so
yeah,
that's
also
something
that
should
not
be
here.
So
we
need
to
get
some
yaml
file
some
test
yaml
file.
A
A
A
A
A
And
put
it
in
the
repo,
because
it's
bad
practice,
if
we
have
those
examples
inside
the
repo,
let's
try
as
much
as
we
can
to
always
use
the
official
examples.
So
the
template
always
work
with
the
official
examples
and
let's,
let's
try
this.
A
A
A
A
A
A
A
A
From
not
here
from
example,
url.
A
A
A
A
A
A
In
our
test
we
generate
uh-huh.
I
I
don't
think
I
like
not
sure
how
you
folks,
but
I'm
used
to
having
capital
letters
when
we
talk
about
global
variables,
but
not
for
local
in
case
of
tests.
A
Up
here
and
then
the
next
one
is
cause
like.
A
A
But
then
we
will
have
to
grab
the
grab
the
async
api
file
and
pass
it
here,
but
we
need
to
grab
no
and
now
yeah.
It's
jason
right.
A
A
Let's,
actually
I
I
don't
know
actually
what's
gonna
be
generated.
So,
let's
let
us.
A
Oh
no,
actually,
no!
No!
No!
There's
no
test.
Of
course.
There's
no
test
script,
there's
not
a
script.
I
mean
there
is
a
test
script,
but
there's
a
fake
test
script.
So,
yes,
let
me.
A
Excuse
me,
let
me
copy
it
and
not
write
it
from
scratch.
I'm
a
typical
copy
paste
developer.
A
A
A
A
Wait:
wait,
wait.
It's
template
package
jason.
I
don't
want.
No,
no!
No!
You
got
it.
You
got
me
wrong,
sir.
A
I
think
I
know
what's
wrong,
so
the
thing
is
the
wrong
thing.
Is.
A
A
A
A
But
yeah,
I
definitely
prefer
excuse
me,
but.
A
Let's
see
another
project
where
we
already,
I
was
doing
the
snapshot
test
so
many
times
and
how
I
can't
how
can't
I
remember.
A
A
A
A
Yeah
just
refusing
to
start
because
I
think
that
it
by
default,
wants
to
read
instead
of
just
reading
a
package.json
from
the
root,
it
tries
to
read
a
package.json
from
the
template,
but
this
packages,
and
it's
it's
not
a
real
package.json
for
for
for
the
project.
It's
it's
a
template
file
which
is
broken
because
it's
templated.
A
And
it's
and
then
it
goes
into
output
with
some
predefined
settings
because
at
the
end
it's
a
code
generator
for
for
node.js
project.
So
I'm
just
now
trying
to
figure
out
how
to
make
just
ignore
ignore
package.json.
A
B
A
A
A
Okay,
so
let's,
let's
first
see.
B
A
A
A
A
Let's
check
one
more
thing
but
yeah
I
see
you,
you
see
you
say
npx
test,
oh
yeah.
Of
course
it's
broken,
oh
yeah,
but
still
the
same.
A
A
Yeah
yeah
you're
right
basically
like
we
should
not
waste
too
much
time
on
it.
So
basically
the
issue
that
I'm
having
now
it
only
will
occur
in
two
code:
generators,
the
node.js
template
and
node.js
and
ws
template,
which
is
a
node.js
template
specifically
for
websockets.
A
But
if
you
want
to
contribute
tests
like
snapshot
tests
to
any
other
test
code
generator
and
all
those
code
generators
they're
listed
in
the
in
the
generator
readme,
then
you
you
will
not
face
these
issues
so
yeah,
basically,.
A
A
A
Oh
yes,
what
the
heck
am
I
doing
here
you
see
like
yeah,
I
mean
I'm
using
generate
from
file
because
I'm
following
what
is
in
the
java
spring
template
so
because
they
have
a
specific
tem
like
specific
example
with
solas
binder
in
there,
then
yeah,
of
course,
I'm
not
reading
from
file.
I
need
to
just
I
need
to
generate
from
from
string
so
yeah.
A
A
A
A
Okay,
anyway,
so
let's
not
make
fakes
here
so
expected
files.
Let's
we
know
what
to
expect:
let's
adjust
it,
so
basically
we
expect
docker
file.
It's
gonna,
be
there
for
sure.
A
A
Are
we
actually
getting
fetching?
Did
I
put
a
correct
url?
A
A
There
was
text
right
text,
but
I
think
in
doc
they
also
have
function.
Json.
B
A
A
Which
is
missing,
parameter
server?
Yes,
we
are
finally
there.
So
the
error
we
are
getting
now
is
really
related
to
what
related
to
the
generator
so
we're
using
async
api
node.js
generator,
which
has
a
a
specific
generator
related
configuration,
and
it
says
that
there's
a
server
parameter
that
is
required
to
be
passed
and
but
first
we
need
to
to
pass
a
proper
server.
A
A
A
Oh,
but
you
see,
some
temporary
files
are
already
being
created
here,
so
we
can
get
this
generated,
folder
name,
which
is
going
good.
It's
getting
better
and
better
okay,
we
got
another
one
and
the
test
went
through
it.
Just
failed
with.
Oh,
yes,
come
on,
that's
the
like.
It's
always
the
same.
Lots
like
you
copy
paste,
because
you
think
it's
faster,
but
no,
then
it's
you're
doing
it
slower,
because
you
need
to
adopt
your
code
like
they
say
that
humans
learn
from
mistakes
yeah,
but
anyway
we
already
see
one
improvement.
We
could
do
like.
A
The
thing
is
that
on
yes,
snapshots
got
generated
like
yes,
yes,
yes,
awesome
but
yeah
before
I
continue
more
with
yeses.
A
The
most
important
is
that,
like
you
see
the
what's,
the
problem
is
that
the
problem
is:
I'm
gonna
have
like
as
long
as
I
work
with
the
project,
I'm
gonna
get
a
lot
a
lot,
a
lot
of
those
generated
folders
so
to
not
make
the
stream
longer
like
just
just
remember
that
you
have
to
you
have
to
add
a
additional
actually.
Why
wouldn't
I
do
it?
Let's
I
mean
I'm
already
doing
a
stream
one
hour
longer
than
usually
my
wife
will
divorce
me
anyway.
A
A
Okay,
vanished
perfect,
so
we
we
have
clean
up
like,
of
course,
best
is
always
to
have
test
cleanup
script
and
then
just
call
test
clean
up
first
and
then
just
but
that's
the
first
tests
we're
getting
here.
So
I
don't
think
we
need
to
be
really
granular
with
with
scripts
from
the
very
beginning
but
yeah
the
most
important
is
we
have
it?
We
have
it
working
so
the
most
basic
example.
So
you
see,
except
of
just
the
files
that
were
generated.
A
So
you
see
like
like
a
like
a
real
project
like
you
see
this
thing
like
the
packages
and
is
no
longer
broken,
which
is
nice
and
and
some
some
other
files
got
generated,
which
is
a
huge
success,
but
also
the
good
stuff.
Is
that
we're
getting
this
snapshot
and
the
snapshot
basically
holds.
A
The
content
of
the
files
that
we
are
assessing
in
our
tests,
what
does
it
mean?
So,
let's,
let's
go
back
to
the
test
so
in
the
test,
we're
checking
snapshot
of
the
docker
file
and
readmemd.
A
Let's
just
add
a
comment
and
of
course
that's
not
in
a
situation
where
you
need,
where
you
need
snapshot
test
to
figure
out
that
you've
added
something
new
to
the
file
snapshot
test
is
for
things
that
you
modify
in
the
template
and
they
can
break
like
you're
start
you,
you
stop
getting
some
additional
files
in
your
in
your
generated
project
like
you're,
you're
start
you,
you
don't
get
all
the
functions,
let's
say
in
a
proper
structure,
because
you
are
doing
some
major
refactoring,
let's
say
in
the
way
the
maybe
not
config,
maybe
in
the
way
the
the
handlers
are
generated,
like
you're
doing
some
serious
modification
in
the
template
and
and
yeah.
A
If,
if
you
would
break
something
here
and
the
you're
improving
stuff,
let's
say
like
the
best
example
is
np.
This
node.js
template
it.
It
uses
non-juxt
templating,
which
we
want
to
get
rid
of,
and
we
have
new
engine
like
based
on
react
js.
So
we
can
write
our
templates
like
react
and
like
react
files,
and
then
let's
say
we
want
to
rewrite
node.js
template,
so
we're
getting
making
a
lot
of
changes
in
these
files.
A
These
templates
are
dramatically
changing,
but
we
want
still
to
have
the
same
files
generated
right
with
the
same
content.
So
that's
why
we
need
those
snapshot
tests.
So
if
we
would
just
break
something
by
just
let's
say
we're
just
doing
comment,
but
I'm
really
saying
like
we
broke
template
in
the
way
that
the
output
file
will
have
additional
function.
That,
for
example,
should
not
be
there.
A
So
let's
say
I
broke
it
by
by
accident
when
refactoring
the
template
and
when
I
run
test
the
test
generates
another
snapshot
and
it
checks
the
snapshot
against
the
the
old
snapshot.
You
know
what
I'm
trying
to
say
like.
A
Basically,
you
see
here
that
it
will
see
that
the
the
new
output
generated
after
my
changes
in
the
template
that
the
new
output
contains
something
super
new
that
was
never
there
before,
and
it's
super
new,
even
though
you're
using
the
same
async
api
file
and
you
didn't
expect
actually
anything
new
in
your
in
your
generated
code.
So
that's
what
snapshot
testing
is
for
it's
basically
assessing
if
the
generated
files
contain
what
they
were
supposed
to
contain
and
you
can
take
it
like
really
really
like
forward.
A
A
A
Yeah,
okay,
so
this
is
a
like
a
like
main
entry
point
for
the
for
the
server
and
some
of
the
code
is
generated
like,
for
example,
the
consts
cons
are
generated,
so
we
can
even
go
far
you.
Can
you
really
want
to
attempt
so
docker
file
wasn't
a
good
example,
because
docker
file
usually
doesn't
change
much,
but
in
your
test
you
definitely
want.
A
And
test
the
the
generated
code
really,
so
we
are
going
to
have
to
remove
snapshots
because
snapshots
contain
totally
different
files
and
let's
run
it.
A
A
Yeah,
okay,
perfectly
found
so
and-
and
you
can
take
it
further
like
if
you
want
to
test
specifically
that
there's
some
specific
function
and
there's
some
specific
content
yeah,
you
can
read
the
file
parse
it
as
a
essay
string
and
find
if
there's
a
a
specific
sentence
mentioned
like
the
name
of
the
function
is
mentioned.
If
it
was
really
generated,
and
you
can
like
have
as
many
test
cases
like
first,
you
want
to
check
just
the
and
just
have
a
test
that
is
specifically
checking
the
server
code.
A
But
then
you
can
have
a
a
separate
test
that
is
checking
if
the
if
the
configuration
file
for
your
application
was
generated
properly
like
if
the
url
is
really
there.
If
it
was
read
from
the
from
the
from
dashing
api
file
and
and
you
can
because
you
can
imagine
that
some
snapshots
like
like
it's
a
snapshot
of
entire
file,
so
sometimes
they
can
be,
of
course,
annoying
that
you're
just
adding
a
you
know,
you're,
just
adding
a
a
space
or
something,
and
you
want
to
have
it
there,
but
the
test
will
fail.
A
A
Let
me
clean
up
stuff
a
bit,
but
yeah
we
end
up
with
just
four
files.
Let
me
let
me
let
me
jump
in
with
my.
A
So
yeah,
so
what
you
basically
need
to
do
to
contribute.
A
Oh
yeah,
thank
you.
Vim
is
super
cool,
but
no
thank
you.
So
there
are
four
files
that
you
basically
have
to.
A
You
have
to
contribute
with
first
version
of
like
tests
in
the
project
like
any
code
generator.
So
of
course,
git
ignore
whatever
that's
the
most
interesting
package
package,
lock,
it's
pretty
basic
but
yeah.
We
need
generator
as
the
dev
dependency.
We
need
chest.
We
need
node
fetch,
but
not
always.
A
Sometimes
the
async
api
file
will
be
so
specific
for
a
given
template
that
you
have
to
actually
have
the
file
locally
in
your
project,
so
you
will
not
have
to
fetch
it
first
in
your
tests
from
remote,
location
and
dreamwrath
is
needed
for
just
for
cleanup,
so
you
always
have
to
clean
up
your
temporary
folder
before
you
run
another
tests
and
the
most
important
is
and
the
integration
test
it's
as
simple
as
that,
it's
like
38
lines
of
code
and,
as
I
said
like
some
things
like
in
this
template,
we
can
reuse
official
example.
A
Not
every
template
has
this
luxury.
That's
still
some.
There
are
still
some
things
we
need
to
just
address,
but
yeah
you
generate
a
a
folder
where
tests
go,
and
then
you
pass
some
parameters.
You
run
generator,
you
check
what
files
have
to
be
checked
and
then
in
the
loop
you
just
check
snapshots
for
every
single
file
that
was
generated
with
the
template.
A
So
I'm
not
going
to
open
up
pr,
of
course,
because
there's
this
issue
with
package.json,
I
have
in
node.js
template
that
I
need
to
figure
out
that's
something
for
next
week,
but
in
the
meantime,
if
you'd
like
to
explore
the
topic
and
contribute
this
integration
tests
like
snapshot
tests
in
one
in
some
of
our
generators,
just
please
yeah.