def test_revisions_name_from_metadata_ok(store_mock): """The charm name is retrieved succesfully from the metadata.""" store_mock.list_revisions.return_value = [] args = Namespace(name=None) with patch('charmcraft.commands.store.get_name_from_metadata') as mock: mock.return_value = 'test-name' ListRevisionsCommand('group').run(args) assert store_mock.mock_calls == [ call.list_revisions('test-name'), ]
def test_revisions_simple(caplog, store_mock): """Happy path of one result from the Store.""" caplog.set_level(logging.INFO, logger="charmcraft.commands") store_response = [ Revision( revision=1, version='v1', created_at=datetime.datetime(2020, 7, 3, 20, 30, 40), status='accepted', errors=[]), ] store_mock.list_revisions.return_value = store_response args = Namespace(name='testcharm') ListRevisionsCommand('group').run(args) assert store_mock.mock_calls == [ call.list_revisions('testcharm'), ] expected = [ "Revision Version Created at Status", "1 v1 2020-07-03 accepted", ] assert expected == [rec.message for rec in caplog.records]
def test_release_revision_guessing_ok(caplog, store_mock): """Release after guessing the revision.""" caplog.set_level(logging.INFO, logger="charmcraft.commands") # make the store to return some revisions badly ordered so we're sure we're getting the max tstamp = datetime.datetime(2020, 7, 3, 20, 30, 40) store_response = [ Revision(revision=1, version='v1', created_at=tstamp, status='accepted', errors=[]), Revision(revision=3, version='v1', created_at=tstamp, status='accepted', errors=[]), Revision(revision=2, version='v1', created_at=tstamp, status='accepted', errors=[]), ] store_mock.list_revisions.return_value = store_response channels = ['somechannel'] args = Namespace(name='testcharm', revision=None, channels=channels) ReleaseCommand('group').run(args) assert store_mock.mock_calls == [ call.list_revisions('testcharm'), call.release('testcharm', 3, channels), ] expected = "Revision 3 of charm 'testcharm' released to somechannel" assert [expected] == [rec.message for rec in caplog.records]