Ecosyste.ms: OpenCollective

An open API service for software projects hosted on Open Collective.

github.com/freerange/goos-ruby

The example from "Growing Object-Oriented Software, Guided by Tests" written in Ruby
https://github.com/freerange/goos-ruby

Use `Item` in place of `item_id` everywhere.

This should have been done earlier when `Item` was introduced [1].

[1] "Stop When We've Had Eno...

f50bfb91a631fbf602b834093608f2aad59cbd26 authored over 11 years ago
Tweaks to README.

23deb7dd071320502a29f78a46dfd48af27ef92b authored over 11 years ago
Use Ruby stdlib Queue instead of Java ArrayBlockingQueue.

1dcb70819eb093d958dcb90c7ca7751549512998 authored over 11 years ago
Use countdownlatch gem instead of Java CountDownLatch.

221a4971830a544fcf77a9b8930cc086e7281c9f authored over 11 years ago
Use matchers from Ramcrest instead of Hamcrest.

In order to avoid an unnecessary Java dependency.

59e00764ca1ef2ad5fbc4d0652b947d9afff367d authored over 11 years ago
Switch Gemfile source to HTTP to avoid JRuby OpenSSL warning

1c5917d9d27f4d28b34a38b0ddf0d8895e217c57 authored over 11 years ago
"Generating the Log Message", chapter 19.

> The next stage is to implement the `XMPPFailureReporter` with something that
> generates a log...

93db999c1378964daf0f0dc06a07194021f2abd2 authored over 11 years ago
Upgrade Mocha to v0.14.0.

3df2d5bcc41b9c93dee61a23c29576a28c254164 authored over 11 years ago
"Recording the Failure", chapter 19.

> Now we want to return to the end-to-end test and the
> `#reports_invalid_message` method that ...

599f3a6bb738261fcca71fea8971a97ceb157592 authored over 11 years ago
"Stop When We've Had Enough - Propagating the Stop Price", ch 18.

> To make this feature work, we need to pass the stop price from the user
> interface to the `Au...

23dadb6ee97ca2463e2b16b8849c23442cd7b831 authored over 11 years ago
"Displaying the Failure", chapter 19.

> We added an `#auction_failed` method to `AuctionEventListener` while
> unit-testing `AuctionMe...

3903e452d73bee0c3522d03f6673ef47c6123dbe authored over 11 years ago
"Detecting the Failure", chapter 19.

> The failure will actually occur in the `AuctionMessageTranslator` which will
> throw a runtime...

b43e240a4cfb3139a9d63a78c3a14eb101591a3f authored over 11 years ago
"What If It Doesn't Work?", chapter 19.

> Our product people are concerned that Southabee's On-Line has a reputation
> for occasionally ...

cfa4fd84dd05f92eeec6358dbd15990a085c75a6 authored over 11 years ago
"Stop When We've Had Enough - Restraining AuctionSniper", ch 18.

> The last step to finish the task is to make the `AuctionSniper` observe the
> stop price we've...

3d415bac3e224c3475beb80210fcd707aea30335 authored over 11 years ago
"Stop When We've Had Enough - Propagating the Stop Price", ch 18.

> This pushes `Item` into `SniperLauncher` which, in turn, pushes it through to
> its dependent ...

c68c357ed42e5414171808de6c153202df452d31 authored over 11 years ago
"Stop When We've Had Enough - The First Failing Test", ch 18.

> Of course we start with a failing test. We won't go through all the cases
> here, but this exa...

701d1b941c963ac716b2db50770c60f33b0a8214 authored over 11 years ago
"Extracting the SnipersTableModel - Sniper Portfolio", ch 17.

> As a next step, we realize that we don't yet have anything that represents
> all our sniping a...

e7c8717002aa863c371ef7d167a23c144226bcfd authored over 11 years ago
Extract `SnipersTableModel` into separate file.

I suspect this was supposed to happen a while ago.

c0879c92d97bd9410e7b91b059117855871740ae authored over 11 years ago
"Adding Items through the UI - Implementing the UserRequestListener", ch 16.

> We return to `Main` to see where we can plug in our new
> `UserRequestListener`. The changes a...

82a52eccdfb70fa00c7415df4e91cf62b572e159 authored over 11 years ago
"Extracting the SnipersTableModel - Sniper Launcher", chapter 17.

> With the `SniperLauncher` separated out, it becomes even clearer that the
> Swing features don...

7f6cdb4768f6811f899fc5db4aaa316a92766c32 authored over 11 years ago
"Extracting the SnipersTableModel - Sniper Launcher", chapter 17.

> Finally, we'd like to do something about the direct reference to the
> `SnipersTableModel` and...

5f728118a2b5d7620b3d6b2adead5b00b17f8e1a authored over 11 years ago
"Extracting the Chat - Extracting the Connection", chapter 17.

> The next thing to remove from `Main` is direct references to the
> `XMPPConnection`. We can wr...

1afff5fff3b8f315a21d7fdb180ffe86d5d0ced6 authored over 11 years ago
"Extracting the Chat - Writing a New Test", chapter 17.

> We also write a new integration test for the expanded `XMPPAuction` to show
> that it can crea...

3404a592d63a238897cfa16c109d99dae789e2fe authored over 11 years ago
"Extracting the Chat - Encapsulating the Chat", chapter 17.

> From here, we can push everything to do with chat, its setup, and the use of
> the `Announcer`...

b942c2fabeb9c33eb166288bdb329fb64ebda634 authored over 11 years ago
"Extracting the Chat - Isolating the Chat", chapter 17.

> Most of the action happens in the implementation of
> `UserRequestListener#join_auction` withi...

3c28d959e091ceabcd6a033fe2caa7db99a1c800 authored over 11 years ago
"Adding Items through the UI - Another Level of Testing", ch 16.

> To make this test pass, we fill in the request listener infrastructure in
> `MainWindow` using...

51ad0409c053d78bda0d26ce8ff6760f28eb9e8d authored over 11 years ago
"Adding Items through the UI - Another Level of Testing", ch 16.

> We want to write a test for our proposed new behavior, but we can't just
> write a simple unit...

61c5d3ecae4079fb81bbef7f689f76c2e3a6b5a5 authored over 11 years ago
"Adding Items through the UI - Adding an Action Bar" in ch 16.

> We address this failure by adding a new panel across the top to contain the
> text field for t...

6a3d31815aa07006dee144de3751060e13c02b2d authored over 11 years ago
"Adding Items through the UI - Update the Test" in chapter 16.

> Looking back at `AuctionSniperEndToEndTest`, it already expresses everything
> we want the app...

406d3f185b75d4863b68cc16212c500d5ccc6036 authored over 11 years ago
"Testing for Multiple Items - Extending the Table Model" in ch 16

> Then we write more unit tests to drive out the rest of the functionality. For
> these, we're n...

93a10a61fb054e76f2431963c6974c91952b3365 authored over 11 years ago
"Testing for Multiple Items - Extending the Table Model" in ch 16

> The `SnipersTableModel` needs to know about multiple items, so we add a new
> method to tell i...

37c34a842652a3a96d4e899b25bdcdc23a879f46 authored over 11 years ago
"Testing for Multiple Items - Restructuring Main" in chapter 16.

> The test is failing because the Sniper is not sending a Join message for the
> second auction....

cd10630397ec653cd1104167ded4153b9ea7f2e7 authored over 11 years ago
"Testing for Multiple Items - A Diversion" in chapter 16.

> Fixing the Failure Message.
>
> We first saw this cryptic failure message in Chapter 11. It wa...

fcd719d51265facd638b028e2b8ebf6ea4fd98d3 authored over 11 years ago
Avoid bundler warning.

The source :rubygems is deprecated because HTTP requests are insecure.
Please change you...

26790c5702d8569bdba7dd85ca46352d75fa096f authored over 11 years ago
Rename `SnipersTableModel#sniper_status_changed`.

To `#sniper_state_changed`.

The book mentions this method name in a few places, but it seems to...

1b03aedaa5dac71762140faf26586d0eb136b8fc authored over 11 years ago
"Testing for Multiple Items - The Application Runner" in ch 16.

> The rest is similar, which means we can write a new test.
>
> Following the protocol conventio...

678174ebe42118726478b01f5755fad6653b997f authored over 11 years ago
"Testing for Multiple Items - A Tale of Two Items" in chapter 16.

> As always, we start with a test. We want our new test to show that the
> application can bid f...

0b062ed57dc2a7273d445e70f63ba7a3ac32eec4 authored over 11 years ago
"Follow Through - Shortening the Event Path" in chapter 15.

> Finally, we see that we have some forwarding calls that we no longer need.
> `MainWindow` just...

f2c270ae087d6ec068f2c7a932f2e9f56e208fb9 authored over 11 years ago
"Final Polish - Implementing the TableModel" in chapter 15.

> Swing allows a `JTable` to query its `TableModel` for the column headers,
> which is the mecha...

d169b02c61c5a4d28f0098fb94503b5324594249 authored over 11 years ago
"Final Polish - A Test for Column Titles" in chapter 15.

> To make the user interface presentable, we need to fill in the column titles
> which, as we sa...

ea8f2b9e027e0074db1d9dc2ce9958af23014759 authored over 11 years ago
"Follow Through - Object-Oriented Column" in chapter 15.

> The next change is to replace the switch statement which is noisy, not very
> object-oriented,...

9a458862ed82df2a98f35c7fe8ff1c89edc90b68 authored over 11 years ago
New unit test passing in "Sending State out of Sniper" in chapter 15.

The end-to-end tests are still failing as expected, because only the
status text is being shown,...

1830a7a1fc7e4658d9cfc2de32a44b70e2de1fb9 authored over 11 years ago
Extract custom Mocha parameter matcher into a method.

- Revisited 829549000749c30ce9159016a3dcc524a8d29643.
- Pass a lambda converted into a block int...

03ede93137d43fdbb822681d02027acae1458c54 authored over 11 years ago
"Follow Through - Object-Oriented Column" in chapter 15.

> We still have a couple of things to do before we finish this task. We start by
> removing all ...

ef8055d804a87a6d77e1f3a72523ca2757e20a92 authored over 11 years ago
"Follow Through - Trimming the Table Model" in chapter 15.

- We remove the accessor `#set_status_text` that sets the state display string
in `SnipersTabl...

1844b5f03b68a40291e453e2e2478178430943cc authored over 11 years ago
"Follow Through - Converting Won and Lost" in chapter 15.

- Replace calls to `#sniper_won` and `#sniper_lost` with calls to
`#sniper_state_changed`.
- N...

67603f217033008bce11d180ed519b4188134103 authored over 11 years ago
Use a SniperSnapshot builder method instead of direct construction.

bc400f59c1427ccedba678aa170ee4e088eceac5 authored over 11 years ago
Remove JLabel which was replaced by the JTable some time ago.

I suspect this was supposed to happen a while ago, but I don't think it
is mentioned in the book.

80f34907eac163af624fde4e627c75bf736c0ffb authored over 11 years ago
"Simplifying Sniper Events" in chapter 15.

- Introduced `SniperState` "enum" and added it as an attribute on
newly renamed `SniperShapsho...

f442499c5f0157dc77d9d4b189683cdb87ad7061 authored over 11 years ago
Rename `SniperState` in "Listening to the Mood Music" in chapter 15.

- `SniperState` is renamed to `SniperSnapshot`.
- `Column::SNIPER_STATUS` is renamed to `Column:...

bb424f7d91824d9ed72c338295fa86c5426c1c1d authored over 11 years ago
Progress on end-to-end test in "Showing a Bidding Sniper" in chapter 15.

- The first step is to pass the new state parameter, which we've been
ignoring,through `MainWi...

a2f59d55190350f48c6eaa2b863b223218531356 authored over 11 years ago
Make assertions more specific now JTable has a name.

This is still slightly divergent from the code in the book which seems
to be using a different v...

b4cfa6136812d6b6d8a2dcea7502306e46a1efe9 authored over 11 years ago
Failing end-to-end tests in "Displaying Price Details" in chapter 15.

The tests are failing because the table row has no details, only status
text :-

NativeExcep...

1418f1e58d6ab63feea9c7a8e9f0150e5012d56d authored over 11 years ago
Fix end-to-end test in "Replacing JLabel" in chapter 15.

"We fix this test by retrofitting a minimal JTable implementation".

As usual I have had to repl...

00cf4f8821fb7af7d886a601987bf38624945706 authored over 11 years ago
Failing end-to-end test in "Replacing JLabel" in chapter 15.

I found that I needed to provide a Hamcrest matcher to the JTableDriver
constructor, so I used t...

74fd15c4e7f45e3812f9a47b26d03f57cc5f1660 authored over 11 years ago
"Sending a Bid" in "The Sniper Makes a Bid" - chapter 13.

This first part of the section makes the end-to-end test pass.

3b78d1b78f7f6dc92a38c7af3ca8a7455052e096 authored over 11 years ago
Fix copy & paste error.

5c5d81338702c872fd5879085939be342386da11 authored over 11 years ago
"Tidying Up the Translator" in "Sending a Bid" in chapter 13.

- It's not possible to have *private* inner class in Ruby.
- I've continued to use the explicit ...

8b8cffa85d89d03e05eb603ca5258976390a88c8 authored over 11 years ago
"Extract XMPPAuction" in "Sending a Bid" in chapter 13.

43682a655f4adad5544a129b836a55f52ad58e5d authored over 11 years ago
"Introducing AuctionSniper" in "The Sniper Makes a Bid" in chapter 13.

Notes :-

- I've deliberately chosen not to introduce any equivalent to Java
interfaces like S...

22f8819adc230de2a8f7d9f5d7ae49bc9634abc4 authored over 11 years ago
Trap unexpected invocation in "Sniper Has More To Say" in chapter 14.

Shows unit test failing with unexpected invocation :-

1) Failure:
test_0003_reports_i...

6593a2e2df02ad0e0839b061a2dc5023288f4a14 authored over 11 years ago
"Extracting the User Interface" in "Sending a Bid" in chapter 13.

- I had to pass a reference to the `ui` to the `SniperStateDisplayer`. I
don't think Ruby has ...

14361f57f5152e08c9cec3720c3d00866d76b29a authored over 11 years ago
All tests passing in "The Sniper Wins" at the end of chapter 14.

Now the sniper has some state.

- I couldn't resist combining the assignment of @is_winning in
...

b37bba93d98b8b1ee74925c08b499630dd5b0827 authored over 11 years ago
"First a Failing Test" in "The Sniper Wins the Auction" in chapter 14.

I also tidied up the names of the end-to-end tests given that we're
using the MiniTest::Spec, we...

50ab57c8fbe84d3b899cf238c5cc7f0582e49861 authored over 11 years ago
Failing unit test in "The Sniper Wins" in chapter 14.

This test now uses Mocha state machines. The expected failure is :-

1) Failure:
test_...

ffd006c9467984938e4951c3ed1ed7b4c16a715b authored over 11 years ago
Fixed first end-to-end test in "Sniper Has More to Say" in chapter 14.

Now the end-to-end test is failing, because the sniper thinks it has
lost when it has actually w...

2c2a617d09ae88cfa66892114cc392867a9d71dd authored over 11 years ago
"The AuctionMessageTranslator" & "Unpacking a Price Message" in chapter 12.

Note that the end-to-end test is still failing since we're in the middle
of implementing the "bi...

f2861000a31e98fa03ff2817589e4ed18733b2c2 authored over 11 years ago
"A Surprise Failure" in "A Test for Bidding" in chapter 12.

org.jivesoftware.smack.XMPPException: conflict(409)
org/jivesoftware/smack/SASLAuthentic...

325733b3dc994ff1afed488f20b8b0607dca3ffb authored over 11 years ago
The expected failure in "A Test for Bidding" in chapter 12.

Note that since JRuby closure conversion invokes the block on invocation
of *any* method, we hav...

7159bfab13ee2d5ac023a99078a9373f488e6220 authored over 11 years ago
Use Ruby Thread instead of Java Thread.

6dfca3427af4f9284a137d2eb869651b7e9893e4 authored over 11 years ago
Better exception reporting in main application thread.

9acfc4cbec018ec277e74feea414395af52ea38b authored over 11 years ago
Use JRuby closure conversion instead of my clumsy workaround.

"The block is converted to a Proc object, which is then decorated with a
java interface proxy th...

e73e8ed621137ccbad811dbe34232cb58c62c80b authored over 11 years ago
Simplify instantiation of anonymous classes implementing interfaces.

I'm not sure this is the best way of doing things, but I think it's
better than it was. The "con...

99355e2806cb08b8cfffd796ce5c3af70a526102 authored over 12 years ago
Add a shell script to run the auction sniper application.

c97731b3d6562fdf349af4eb23ed0e64c1acd673 authored over 12 years ago
Tidy up jar files.

- Remove (currently) unused jar files.
- Split jar files into develop & deploy directories as in...

4946ef20a1109a01d8ac34bad6b96b654df07780 authored over 12 years ago
Use Kernel#format instead of java.lang.String.format.

Also no need for return statement in Ruby.

79247ea10970d664804f43a547122afd505383f1 authored over 12 years ago
Tidied up imports.

4fb3347ab0b26807963821702bc6f3dd96047b4c authored over 12 years ago
REAME tweaks.

ca253d23487c6fb33ef26943ff84a393cb5cc048 authored over 12 years ago
More tweaks to README.

6ec2d9697fcf310a8875247bd9cd8c5b04ddae19 authored over 12 years ago
Small improvements to README.

28d4f094bfbd16922c9ecf949856d4937384973e authored over 12 years ago
Added setup instructions to README.

0c3258bd9a590eac3bc30758a96a14ef9a8da0fd authored over 12 years ago
Walking skeleton up and running, well tottering at least.

I know the code is horribly ugly, but at least the walking skeleton test
is passing. I've just b...

e8d2bbb48ef46602ab78c659c172bbba2b8b6a40 authored over 12 years ago
Initial commit.

b79f5eab0c64ebb1f3e2055a4ccca603b8453b52 authored over 12 years ago